Darcs Workflows compared with Subversion
One of darcs key benefits is that it is interactive. That's illustrated below by comparing what's involved in using darcs for some common tasks, compared to using Subversion. The theme you'll see is that Subversion involves more manual work, as well as looking up and keeping tracking of revision numbers.
Sometimes in darcs it's helpful to remember patch or tag names, with the key difference being that you are matching names created by humans, not numbers incremented by a machine.
Task: Update, and review what's changed, skimming most things, but reviewing some patches in detail. |
|
darcs |
svn |
darcs pull |
1. note current revision. |
Note: Depending on whether developers check in with proper comments, this may or may not be much more painful than darcs |
|
Task: Review any pending changes, remove some debugging statements and check them in |
|
darcs |
svn |
1. darcs record |
1. svn diff |
Task: A file contains a bug fix change, and an unrelated documentation fix. Check in each change separately. |
|
darcs |
svn |
1. darcs record |
1. cp file.txt file.txt.copy |
Task: Merge a Branch |
|
darcs |
svn |
Darcs merging is interactive by default. Merge everything or just specific patches, even if they aren't "next to each other" in the repository: |
In subversion, you have to use full URLs for branch paths, and keep track of revision numbers manually too. It's not interactive, so you have to select exactly what you want, possibly merging multiple times if the patches to merge don't appear in sequence: |
