Hi everyone,

I've been using Darcs as my primary VCS for nearly two years now, when I
switched from Arch.  In fact, I made that switch 10 days after Linus
announced that he would start work on Git.

I have encountered the darcs hanging problem before, but had been able
to design my practices such that it didn't bite me.

Until now:
http://article.gmane.org/gmane.comp.version-control.darcs.user/10752

I took to re-examining the state of version control over the past few
days.  I've found Mercurial to look pretty attractive.

I'd like to lay out why I think this is so, in the hopes that one of you
can show me where I've gone all wrong ;-)

After some discussions with Mercurial folks on mailing lists and IRC, I
think I can sum up the difference between Darcs and Mercurial this way:

  Darcs tries to avoid conflicts at all costs.  With Mercurial,
  conflicts are a daily part of life, but conflict resolution is usually
  automated.

Mercurial appears to suffer from none of the Darcs hanging problems,
while at the same time enabling all of the core functionality I want
from Darcs: distributed operation, cheap branching, full granular
history across merges, and even cherrypicking.

Initially I was quite dubious about it.  The hg export/import don't
preserve changeset hashes like darcs send does, and thus would seem to
mess with proper history and merging.  But testing it out, as well as
feedback from the Mercurial community, indicates that this is not a
problem in actual practice.

The cherrypicking (available via the transplant extension) is
approximately as elegant as Darcs cherrypicking.  Each have their own
sets of faults.  I've had a number of instances where I wanted to
cherrypick a patch in Darcs, but darcs wanted me to pull in the entire
history leading up to that patch for no good reason (to me).  Mercurial,
on the other hand, does generate a new hash for a cherrypicked patch --
making it not a "true" cherrypick in the Darcs sense.  But again, in
practice, this proves to not be a big obstacle as the potential merge
conflict is automatically dealt with.

Mercurial seems to do a better job of facilitating cooperation with
upstreams that do not use Mercurial.  Its patchbomb extension can send
off changesets in standard diff format, or in git's extended diff
format.  And it can send them in one email per patch.

Darcs does a better job of facilitating cooperating with an upstream
running the same VCS.  Mercurial lacks a version of darcs send, which to
me is its most serious drawback at the present time.

I'm interested in what people think, and if anyone else here has
experience with Mercurial (or git).

-- John


_______________________________________________
darcs-users mailing list
[email protected]
http://www.abridgegame.org/mailman/listinfo/darcs-users

Reply via email to