Translations with other distributed VCS
Basic distributed version control
The following commands have the same name in darcs, git and hg, with minor differences due to difference in concepts:
Branching
branch |
na |
branch |
branch |
switch branch |
na [1] |
checkout |
update |
- [1] No in-repo branching yet, see issue555
Adding, moving, removing files
track file |
add |
add |
add |
copy file |
na |
na |
copy |
move/rename file |
move |
mv |
rename |
Inspecting the working directory
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”)
Committing
commit locally |
record |
commit |
commit |
amend commit |
amend |
commit –amend |
commit –amend |
tag changes/revisions |
tag |
tag |
tag |
Inspecting the repository history
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 |
Undoing
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)
Collaborating with others
send by mail |
send |
send-email |
email [1] |
- [1] requires extension (patchbomb for email)
Advanced usage
port commit to X |
rebase |
rebase/cherry -pick |
transplant |
Translations from Subversion
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 |
Discrepencies between DVCS
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.
See also