I recently wrote
an article or
two about distributed version control systems.
I've been using Darcs since 2005. I switched to Darcs, in fact, 10 days after the simultaneous founding announcements of git and Mercurial.
Overall, I have been happy. I continue to believe that it is the most distributed of the distributed VCSs, which is a Good Thing.
However, I have lately started having trouble with Darcs hanging while working on my Debian packages.
My post to the Darcs user list drew out a few other people whith this problem, which is a design flaw of Darcs.
So I revisited the VCS landscape. I re-examined git,
Mercurial, and bzr. I eventually decided to give Mercurial a try. I avoided git because I write some code that is portable to Windows, and git isn't (or isn't very well). Also, git is complex to pick up for me, and I certainly don't want to force something complex onto my contributors. bzr seemed to still have some strange behaviors that it's had for awhile, and I couldn't find even one advantage of it over Mercurial. So off I went with Mercurial.
I quickly learned a bit of a philosophical difference from Darcs to Mercurial.
Darcs avoids conflicts at all costs. Mercurial makes handling conflict easy and, in many cases, automatic.
It is exactly this Darcs behavior that permits both is excellent "darcs send" feature (still unmatched in any other VCS), but also causes its hang problems.
I found Mercurial quite pleasant to work with, and *fast*. It seems to be edging out git in speed tests sometimes these days.
It is easy to get started with Mercurial. The mq system -- similar to quilt or other patch-management programs -- is really quite an amazing hybrid between patch management and version control. I frankly don't see any need for other patch-management tools anymore.
Mercurial has a "patchbomb" feature where you can select a range of changesets to send off, and it will generate nice emails with one changeset per email, and send them to your selected destination, optionally with an introductory message. The normal way of interacting with other Mercurial users is via the hg export/import commands, which send around simple unified diffs plus some additional header information, optionally in the git extended diff format.
I am happy with Mercurial and am in the process of converting my Debian repositories from Darcs to Mercurial. I'm going to keep my personal code in Darcs for the moment because "darcs send" is still easier than "hg email", but that may change before long, depending on how my experience goes.
I'd encourage others to give Mercurial a try. The community is also very nice and helpful.
I have contributed patches to
Tailor to make it make exact copies of Darcs repos into Mercurial, which are now in its Darcs repo. There is also a
thread on the Mercurial list with some of my initial questions/concerns coming from a Darcs perspective.
Comments
Sun, 06.07.2008 02:27
http://www.xisfo.com/index/boo ks
Thu, 03.07.2008 19:17
I recently was looking at opti ons for my blog, and decided t o try out blip.tv. Indeed thei r system appears to cate [...]
Thu, 03.07.2008 14:00
When HTML5 video comes out, it should be easy to host your o wn videos. My video site is here: http://video.nat [...]
Thu, 03.07.2008 12:51
You might want to check out [url="http://viddler.com"]Viddler[/url]. I have some command line tools for the API [...]
Thu, 03.07.2008 08:25
I haven't decided for sure yet . I found a nice review of some of them. [...]
Thu, 03.07.2008 07:53
What are you going to use to c apture/edit? You can have a look at kino, if you [...]
Thu, 03.07.2008 07:03
Thanks for the suggestions, ev eryone. To give a very brie f idea of what we have done: For the learning curve [...]
Thu, 03.07.2008 05:29
The original text was discussi ng whether religion is detrime ntal to science. For 1 it was putting the point that s [...]