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
