# Document Title


  Login / Register
all pages   recent changes  

    viewedithistorydiscuss

RosettaStone

    Translations with other distributed VCS
        Basic distributed version control
        Branching
        Adding, moving, removing files
        Inspecting the working directory
        Committing
        Inspecting the repository history
        Undoing
        Collaborating with others
        Advanced usage
    Translations from Subversion
    Discrepencies between DVCS
    See also

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:

    init
    clone
    pull
    push
    log

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

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

Adding, moving, removing files
concept 	darcs 	git 	hg
track file 	add 	add 	add
copy file 	na 	na 	copy
move/rename file 	move 	mv 	rename
Inspecting the working directory
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”)

Committing
concept 	darcs 	git 	hg
commit locally 	record 	commit 	commit
amend commit 	amend 	commit –amend 	commit –amend
tag changes/revisions 	tag 	tag 	tag
Inspecting the repository history
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
Undoing
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)

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

    [1] requires extension (patchbomb for email)

Advanced usage
concept 	darcs 	git 	hg
port commit to X 	rebase 	rebase/cherry -pick 	transplant
Translations from Subversion
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
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

    Features
    Differences from Git
    Differences from Subversion
    Wikipedia’s comparison of revision control systems

Wiki source: darcs get --lazy http://darcs.net/darcs-wiki
Powered by: gitit + darcs