The following commands have the same name in darcs, git and hg, with minor differences due to difference in concepts:

init

clone

pull

push

log

concept darcs git hg branch na branch branch switch branch na [1] checkout update

[1] No in-repo branching yet, see issue555

concept darcs git hg track file add add add copy file na na copy move/rename file move mv rename

concept darcs git hg working dir status whatsnew -s status status high-level local diff whatsnew na na diff local diff [1] diff diff

[1] we tend to use the high-level local diff (darcs whatsnew) instead. This displays the patches themselves (eg ‘mv foo bar’) and not just their effects (eg ‘rm foo’ followed by “add bar”)

concept darcs git hg commit locally record commit commit amend commit amend commit –amend commit –amend tag changes/revisions tag tag tag

concept darcs git hg log log log log log with diffs log -v log -p log -p manifest show files ls-files manifest summarise outgoing changes push –dry-run log origin/master .. outgoing summarise incoming changes pull –dry-run log ..origin/mast er incoming diff repos or versions diff diff incoming /outgoing/dif f -r blame/annotate annotate blame annotate

concept darcs git hg revert a file revert foo checkout foo revert foo revert full working copy revert reset –hard revert -a undo commit (leaving working copy untouched) unrecord reset –soft rollback amend commit amend commit –amend commit –amend destroy last patch/ changeset obliterate delete the commit strip [1] destroy any patch/ changeset obliterate rebase -i, delete the commit strip [1] create anti-changeset rollback revert backout

[1] requires extension (mq for strip)

concept darcs git hg send by mail send send-email email [1]

[1] requires extension (patchbomb for email)

concept darcs git hg port commit to X rebase rebase/cherry -pick transplant

Subversion idiom Similar darcs idiom svn checkout darcs clone svn update darcs pull svn status -u darcs pull –dry-run (summarize remote changes) svn status darcs whatsnew –summary (summarize local changes) svn status | grep ’?’ darcs whatsnew -ls | grep ^a (list potential files to add) svn revert foo.txt darcs revert foo.txt (revert to foo.txt from repo) svn diff darcs whatsnew (for local changes) svn diff darcs diff (for local and recorded changes) svn commit darcs record + darcs push svn diff | mail darcs send svn add darcs add svn log darcs log

Git has the notion of an index (which affects the meanings of some of the commands), Darcs just has its simple branch-is-repo-is-workspace model.