[darcs-users] An example of a "complicated" change?

Stephen J. Turnbull turnbull at sk.tsukuba.ac.jp
Tue Apr 14 03:23:17 UTC 2009


Guillaume Hoffmann writes:

 > > Well, in fact there is no such thing as a "merge patch" in any of
 > > these systems.  There is a merge revision, usually different from all
 > > of its parents, and it has more than one parent.  So that revision
 > > must be recorded.
 > >
 > > This is also an event in history.  The merged in branch is now
 > > superseded by the mainline, and the merge revision records this fact.
 > 
 > OK, sorry for calling this a patch, but well:

No problem.  Actually, it is a useful opportunity to emphasize that
git and friends are snapshot- and history-oriented, while Darcs et al
are changeset-oriented and a-historical.

 > * you have to run a certain operation by hand (choosing the head /
 > accepting the merge) which creates this entity

You don't need to do that in git; "git pull" always merges the named
branches into your local branch, commits, and (if the local branch is
current) updates the workspace unless there is a conflict.  You don't
need to in Mercurial, unless there is more than one active head (true,
you do need to specify the -u option or use the fetch extension to get
merge-AND-commit semantics).

True, unlike Darcs you have the *option* of storing multiple branches
in a single repository, and in that case it is more convenient to use
"merge" than "pull" (git's UI is not very orthogonal).

 > * it appears in the history

Of course.  What you're missing is that Darcs is incapable[1] of
*representing* concurrent development, and therefore has no need of a
notation for merge.  However, many projects consider this an essential
feature for tracking the progress of work at a high level.

Footnotes: 
[1]  It's probably there in the log in some sense.  At least, there's
no way in the Darcs UI to visualize a historical DAG now, and you'd
need to do a fair amount of cross-repository work to reconstruct it.
And of course Darcs *supports* concurrent work quite well.  It's just
that it can't *report* it in a way that displays the concurrency.


More information about the darcs-users mailing list