Both darcs and
git support a --dry-run option for pull, but
git 1.6 provides no details about what it's going to push. Take a look:
git push -v --dry-run email@example.com:markstos/foo.git Pushing to firstname.lastname@example.org:markstos/foo.git To email@example.com:markstos/foo.git b233f62..1eb8888 master -> master
git managed to repeat back to me the name of the remote repo not once, but twice, but didn't tell me a single thing about the patches that might be pushed. Now compare that with "darcs push --dry-run":
$ darcs push --dry-run --summary Would push to "/home/mark/tmp/tmp2"... Would push the following changes: Thu Nov 13 22:24:40 EST 2008 m * My new patch name. M ./one.txt -2 +1 Making no changes: this is a dry run.
darcs reports what's going in plain English, including the patch names and file change details. Even better, if I just used
darcs push, I would have gotten an interactive prompt by default, with a built-in help system:
$ darcs push Pushing to "/home/mark/tmp/tmp2"... Thu Nov 13 22:24:40 EST 2008 m * My new patch name. Shall I push this patch? (1/1) [ynWsfvpxdaqjk], or ? for help:
Using that, I can navigate between the patches, cherry pick which ones I want to push, and inspect each patch by reviewing just the file changes involved, or directly viewing the actual diffs.
The lack of an interactive "push" command for
git is just one of the annoyances that cause me to continue to use
darcs whenever I can, and
git when I have to.