[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