LWN: Comments on "Mercurial: an alternative to git" https://lwn.net/Articles/151624/ This is a special feed containing comments posted to the individual LWN article titled "Mercurial: an alternative to git". en-us Tue, 23 Sep 2025 11:47:52 +0000 Tue, 23 Sep 2025 11:47:52 +0000 https://www.rssboard.org/rss-specification lwn@lwn.net Mercurial: an alternative to git https://lwn.net/Articles/154160/ https://lwn.net/Articles/154160/ arafel While this is true, there are limitations. :-) <pre>paul@nova:~/src/mutt$ hg incoming abort: incoming doesn't work for remote repositories yet</pre> Mon, 03 Oct 2005 12:10:42 +0000 Mercurial: an alternative to git https://lwn.net/Articles/153987/ https://lwn.net/Articles/153987/ rickmoen <p>I just wanted to revisit this thread to note Bryan O'Sullivan's comment just posted to the Mercurial mailing list (<a href="http://www.selenic.com/pipermail/mercurial/2005-September/004745.html">http://www.selenic.com/pipermail/mercurial/2005-September/004745.html</a>): <blockquote> <p>As I mentioned the other day, I will not be contributing to Mercurial development for a while. Several people have asked me why. <p>At my workplace, we use a commercial SCM tool called BitKeeper to manage a number of source trees. Last week, Larry McVoy (the CEO of BitMover, which produces BitKeeper) contacted my company's management. <p>Larry expressed concern that I might be moving BitKeeper technology into Mercurial. In a phone conversation that followed, I told Larry that of course I hadn't done so. <p>However, Larry conveyed his very legitimate worry that a fast, stable open source project such as Mercurial poses a threat to his business, and that he considered it "unacceptable" that an employee of a customer should work on a free project that he sees as competing. <p>To avoid any possible perception of conflict, I have volunteered to Larry that as long as I continue to use the commercial version of BitKeeper, I will not contribute to the development of Mercurial. <p>As such, Mercurial can stand entirely on its own merits in comparison to BitKeeper. This, I am sure, is a situation that we would all prefer. </blockquote> <p>The implications for commercial customers' relationship with BitMover are left as an exercise for the reader. <p>Rick Moen<br> rick@linuxmafia.com Fri, 30 Sep 2005 23:48:53 +0000 Missing features https://lwn.net/Articles/152907/ https://lwn.net/Articles/152907/ bos We'd all love to have Eclipse plugins, I'm sure, but the unfortunate fact is that the current user communities of the various tools have not contributed any. Whether this is due to lack of interest, time, or experience I cannot say.<br> <p> If you wanted to write one yourself, I am sure it would be very welcome.<br> Fri, 23 Sep 2005 16:28:05 +0000 Missing features https://lwn.net/Articles/152891/ https://lwn.net/Articles/152891/ kevinbsmith Actually, I have asked. I have been on the ArX, mercurial, and bazaar-ng lists for quite a while now. I was on the git/cogito list until it became clear to me that nobody was working on a user-friendly, command-line front end (such as cogito) that would be cross-platform. <br> <p> One feature request for all systems is to have an eclipse plugin. As far as I know, only darcs has one, and it is still very preliminary.<br> <p> I have requested that ArX get a simpler UI. The maintainer agrees that's a good idea, but it will take some serious reworking to achieve.<br> <p> I have requested that mercurial support cheap branching on systems that don't have hardlinks. My three posts to the mercurial list asking about the feasibility of adding this feature have all, surprisingly, gone unanswered. <br> <p> The bazaar2 folks have explained their plans to solve that cheap branching problem by adding "centralized storage". I believe they even have some prototypes working, but it looks like it's still a couple months away from being an official part of the product. <br> <p> There is an experimental monotone add-on that supposedly allows you to serve a readonly repo on a cheap (http-only) web server. If that becomes mature, it might make monotone workable for me. Something similar could presumably be written for codeville.<br> <p> Fri, 23 Sep 2005 12:54:14 +0000 wish: better access control https://lwn.net/Articles/152807/ https://lwn.net/Articles/152807/ Omnifarious <p>I've come to the conclusion that in a distributed SCM, fine grained access control and permissions management shouldn't be a design goal. There are better and easier ways of achieving the same results with a distributed SCM.</p> <p>What should be a design goal is clear ownership of a patch or changeset, and that can easily be accomplished in most such systems with digital signatures.</p> Thu, 22 Sep 2005 18:59:03 +0000 ... and the others? https://lwn.net/Articles/152804/ https://lwn.net/Articles/152804/ Omnifarious <p>I've looked briefly at these other systems, and all of them seemed too complex to be worth using. The only one I don't have any experience with is Monotone.</p> <p>In contrast, Mercurial was simple to set up and easy to use. I'm a Subversion user from the early days of Subversion, and it was much easier than Subversion to set up for the first time.</p> <p>Then, as I started playing more with it, it became quite obvious and clear how I could solve the "I have a work machine, a home machine, and a laptop, and I work on all of them and don't always remember to sync." problem. After that, I was hooked.</p> <p>None of the other systems I've used have even come close to the external elegance and simplicity of Mercurial. And as I look deeper into its design, it's clear that it's external coherency is a reflection of a set of well-thought-out design principles. So, I guess I'm a convert and can be put into the "It's the greatest thing since sliced bread!" category.</p> <p>I can understand caution though. It's quite possible there is some fundamental design problem that I'll encounter after I understand it enough. I felt similarly about Java in the mid 90s, and it took me a few years to realize what was wrong with it.</p> Thu, 22 Sep 2005 18:51:59 +0000 wish: better access control https://lwn.net/Articles/152802/ https://lwn.net/Articles/152802/ bos Merging work and write access are orthogonal concepts.<br> <p> Here's how merging works in a distributed SCM.<br> <p> You publish your changes somewhere, and tell me. I pull them over, and merge my changes in. I publish the merged result, and tell you. You pull the results of the merge.<br> <p> Now we both have your changes and mine, but at no point did either of us have write access to the other's storage.<br> <p> Another way of approaching the issue: we both have write access to a shared server. However, in many systems, we can't push changes to the server without merging first, so the server cannot get into a messy unmerged state.<br> Thu, 22 Sep 2005 18:39:56 +0000 ... and the others? https://lwn.net/Articles/152801/ https://lwn.net/Articles/152801/ bos Kevin, if you need features, just ask :-)<br> Thu, 22 Sep 2005 18:35:40 +0000 wish: better access control https://lwn.net/Articles/152507/ https://lwn.net/Articles/152507/ droundy I consider this an advantage of the new VCS (looking from a different perspective). By avoiding <br> integration of "user accounts" into the VCS itself, you can choose between any of the existing <br> systems that you already use for user authentication---unix groups, sudo, ssh public key <br> authentication, gpg signatures. This doesn't give the fine-grained control that you'd like, but I <br> don't really see a pressing need for that.<br> <p> David<br> Wed, 21 Sep 2005 11:08:09 +0000 wish: better access control https://lwn.net/Articles/152230/ https://lwn.net/Articles/152230/ man_ls It is not how software is developed nowadays, but simply because we use the old paradigm of "single repository -- multiple branches". If we switched to a new distributed paradigm, where a developer publishes her changes and a leader imports them in order to make a version, these new tools would become indispensable. But don't you think that applying the old way of thinking to the new source management model would just add needless complexity? Sun, 18 Sep 2005 16:40:39 +0000 wish: better access control https://lwn.net/Articles/152229/ https://lwn.net/Articles/152229/ dann Having a single leader that applies all the changes is simply NOT the way<br> a lot of (probably most) software is developed. Allowing more that one person to make changes is very important.<br> Sun, 18 Sep 2005 15:40:18 +0000 wish: better access control https://lwn.net/Articles/152224/ https://lwn.net/Articles/152224/ man_ls I think the way to go in that case would be to have a "team leader" that picks the relevant changes from everyone and applies them to her own tree. So no need to have access control there. But maybe you are thinking of a different scenario. Sun, 18 Sep 2005 14:26:31 +0000 wish: better access control https://lwn.net/Articles/152219/ https://lwn.net/Articles/152219/ dann The fact is that when multiple people work on the same project their work <br> must be somehow merged together in a single place. If more than one person <br> has write access to that place, then it would be nice to have a way to control access. <br> <p> Sun, 18 Sep 2005 06:23:54 +0000 wish: better access control https://lwn.net/Articles/152211/ https://lwn.net/Articles/152211/ kevinbsmith Distributed VCS automatically gives developers the ability to work effectively without accounts on a central server. That means that contributors can work on whatever they want, with no risk of damaging the official tree.<br> <p> In several distributed VCS systems, a branch is a directory. In that case, it's pretty easy to control access, including marking the whole branch as readonly.<br> <p> Distributed VCS is really a whole new paradigm, and it takes a while for most people to even start to understand how to use this new tool effectively. It's not appropriate for all projects, but personally I think it is a big improvement for most FLOSS projects (where potential contributors may not be trusted yet), and for many/most projects of any kind where the developers are geographically distributed.<br> <p> <p> Sat, 17 Sep 2005 23:03:08 +0000 ... and the others? https://lwn.net/Articles/152155/ https://lwn.net/Articles/152155/ kevinbsmith I think Rick Moen's post is a pretty fair summary of many of the other systems. <br> <p> In my mind, the big distinction between the first generation and the second is simplicity. Simplicity of UI, and simplicity of the underlying model. Gnu arch (tla) was extremely large and complex. ArX and Baz forked largely to simplify it, but they are both still somewhat on the heavy side. Monotone and codeville have simpler UI's, but they require a server daemon which makes them feel non-minimal.<br> <p> Git (and cogito) popularized the "lightweight" tool, helping increase interest in mercurial and bzr. Of course, darcs had a great (simple) UI long before it became cool to have one, and it remains the most mature of the lightweight options.<br> <p> There is a revctrl list/wiki/irc for mostly-technical cross-system SCM discussions: <br> <a href="http://revctrl.org/">http://revctrl.org/</a> <br> A recent thread discussed which of these apps are likely to survive, but it mostly just emphasized the uncertainty.<br> <p> Personally, I'm happy to see all these projects advancing so rapidly. None of them quite have all the features I need yet, but I'm optimistic that at least one will within the next few months. I doubt we will see a single dominant distributed SCM tool emerge for at least a year or two, due to different projects having distinctly different requirements.<br> <p> Sat, 17 Sep 2005 03:30:29 +0000 ... and the others? https://lwn.net/Articles/152144/ https://lwn.net/Articles/152144/ rickmoen <p>Nathan: <p><strong>Monotone:</strong> On the plus side, it's in a halfway reasonable language (C++, with "hooks" in Lua), and the gripe about performance seems unfair, as that was a temporary glitch that is long gone. On the minus side, when last I heard, it was still considered a bit beta-ish; requires a dedicated server component rather than being reachable over commodity http; and identifies changesets by their SHA1 checksums, which is a bit cluttered. <p><strong>GNU Arch ("tla"):</strong> Seemingly moribund, given first the departure or many developers to Bazaar 1.x ("baz"), and then more recently the resignation of Tom Lord. Tom prototyped his own GNU Arch 2.0 redesign, dubbed "revc" (to fix some of tla's more hideous misfeatures, IMVAO), but nobody's yet adopted it in the wake of Tom's departure. Maybe someone from the tla-user community will comment, but all I'm seeing is unhappiness and a slow exodus to elsewhere (especially baz/bzr and ArX), among this camp. <p><strong>Bazaar 1.x ("baz"):</strong> Recently back-burnered by Canonical in favour of Martin Pool's more-ambitious Bazaar 2 "bzr" (formerly Bazaar-NG) project as the intended successor. ("baz" has been declared to be in "maintenance mode", as opposed to being actively developed.) <p><strong>Codeville:</strong> Close to mature, but still has a to-do list. E.g., last I heard, non-ASCII files and some file metadata still weren't handled. Last I heard, didn't have much docs. Intriguing, advanced merge algorithm that should be studied more widely. Uses SRP as network transport; I'm going to have to read Bram and Ross's reasons before I decide what I think about that. (Cannot be accessed over commodity http, anyway.) <p><strong>darcs:</strong> Drawbacks: How many people can hack Haskell? Stores repository metadata within the checked-out working area. Nagging performance problems (sometimes). Advantages: Good all-around system. Tracks inter-patch dependencies well. Patches from others can retain their separate identity even after integration (are not collapsed/rolled up). Implementation of "cherry-picking" is exemplary. <p>It's difficult to judge how broad the appeal is, of most of these things: However, I do know that Hg is in commercial, production usage at one non-kernel software house of my acquaintance (Xenworks). <p>Anyhow, I <a href="http://linuxmafia.com/faq/Apps/scm.html">try to keep up</a>, as best I can. (If I'm judged misinformed and in desperate need of reeducation, I wouldn't be the least bit surprised. It might even be true.) <p>Rick Moen<br> rick@linuxmafia.com Sat, 17 Sep 2005 01:35:09 +0000 wish: better access control https://lwn.net/Articles/152128/ https://lwn.net/Articles/152128/ dann One thing that seems to be missing in all the new VCS is access control. <br> (Well, openCM has it but it does not seem to be developed anymore).<br> <p> I would be nice to be able to specify fine grain permissions to a VCS.<br> <p> Here are some example use cases:<br> - some random people decide to work together on a project, it would be nice to be able to access the server without having to create a UNIX account, set up a webserver...<br> - restricting access to some files/directories - for example people doing just translations don't need to have access to the code (just to minimize accidents).<br> - restricting access to a branch - for security related branches, when a problem is discovered and before it is fixed, just a few select people need to know about it<br> - enforce a freeze before a release: the release manager can just make the branch read-only<br> <p> <p> <p> Fri, 16 Sep 2005 22:24:45 +0000 Use cases? https://lwn.net/Articles/152095/ https://lwn.net/Articles/152095/ erich Yeah, I'd like to see an article on different use cases for SCM (including /etc management) and explain the differences on these use cases.<br> E.g. how to do feature branches in them, how to merge them etc.<br> One of the things I am concerned with distributed SCM is that well, you don't have a central repository. ;-)<br> I.e. you don't have a storge where you could possibly see all revisions of a file. That you can backup, where you a directory for all versions...<br> In a FLOSS environment this is unrealistic, but in a corporate?<br> Fri, 16 Sep 2005 18:51:36 +0000 ... and the others? https://lwn.net/Articles/152011/ https://lwn.net/Articles/152011/ ncm Several other projects with similar goals started well before the Bitkeeper fiasco came to a head, among them Arch/Bazaar, Monotone, Codeville, and Darcs, and ought to be a lot more mature than Git or Mercurial. Monotone, in particular, got a lot of attention about the time Git and Hg started, mainly for being taken seriously but found to be too slow. I know it has since been sped up enormously, and got lots of important user-interface features.<br> <p> Have the earlier projects turned out to be prototypes for a more modern, radically simpler generation of production-ready systems? Or should we consider them on even footing with Hg, expecting the latter to complexify to match as it matures and gains important features? Or, are Git and Hg interesting mainly to kernel maintainers, while those of us with more typical needs will be better off with one of the more mature products?<br> <p> It seems clear there are too many of these projects, and some will stall as everyone's respective itches get scratched. How many should we expect will still be vigorous in, say, three years' time, after adopting the important features of the others and winning over current CVS holdouts? I.e., how many ecological niches are there, really?<br> Fri, 16 Sep 2005 08:11:42 +0000 Mercurial: an alternative to git https://lwn.net/Articles/151995/ https://lwn.net/Articles/151995/ bos Mercurial supports the equivalent of custom pack files, called bundles.<br> Fri, 16 Sep 2005 02:56:18 +0000 Mercurial: an alternative to git https://lwn.net/Articles/151980/ https://lwn.net/Articles/151980/ dlang yes git packs multiple files into one object.<br> <p> it's hard to say which is better, each has their advantage<br> <p> the git method keeps everything in the pack self-contained so that you don't have to worry about the file becomeing worthless becouse the file it is a diff of gets removed.<br> <p> while the Mercurial method does everything transparently so the user doesn't have to do anything about it.<br> <p> the git network interface supports effectivly createing a custom pack file for the user and then downloading it, which is better for network bandwidth, at the cost of a little more CPU on the server.<br> <p> one thing that hasn't been done with git yet (but is being looked at) is the possibility of a pack to include 'unrelated' things. An example of this would be to have pack files that span distros (bash is very close to being the same on all distros for example), which for large archives could have some interesting implications.<br> <p> Caveat lector: I've been reading the git list since it started, what I know of mercurial is what's been posted there.<br> Thu, 15 Sep 2005 21:53:59 +0000 Mercurial: an alternative to git https://lwn.net/Articles/151941/ https://lwn.net/Articles/151941/ rickmoen <p>IMVAO, git's pack format and repack command are more than a bit kludgey and inelegant. Why should SCM users have to fiddle with such things? Mecurial sidesteps that mess entirely, by being built on deltas in the first place. <p>Also, because Mercurial runs anywhere Python does, it has an inherent portability advantage over git/Cogito (Bourne shell and other Unixisms). That design limitation of git/Cogito doesn't bother <em>me</em>, but does limit deployment for others. <p>Mercurial's progress in a very short time has been impressive: I'm keeping an eye on that and Bazaar 2/bzr (ne Bazaar-NG) as the best hopes. Others will very defensibly favour darcs, Codeville, Monotone, ArX. <p>Rick Moen<br> rick@linuxmafia.com Thu, 15 Sep 2005 19:29:38 +0000 Mercurial: an alternative to git https://lwn.net/Articles/151890/ https://lwn.net/Articles/151890/ bos A small addendum to Jake's review: Mercurial has commands called incoming and outgoing to see what changes are available to propagate from one repository to another.<br> <p> These aren't complete replacements for a "give me one diff that shows how this repository differs from that one" kind of command, but they do give you roughly the same information.<br> Thu, 15 Sep 2005 14:54:32 +0000 Mercurial: an alternative to git https://lwn.net/Articles/151889/ https://lwn.net/Articles/151889/ bos Caveat lector: I work on Mercurial a lot.<br> <p> Yes, git pack objects are often smaller than Mercurial's storage uses.<br> <p> The reason is that, as I recall, git packs data for multiple files into a single pack object, which Mercurial does not do.<br> <p> I believe, from hearsay, that Mercurial's approach has some practical advantages over git's pack files, but as I don't know enough about how git works in this specific area, I won't bother trying to make stuff up :-)<br> Thu, 15 Sep 2005 14:43:30 +0000 Mercurial: an alternative to git https://lwn.net/Articles/151888/ https://lwn.net/Articles/151888/ bos Caveat lector: I work on Mercurial a lot.<br> <p> The sets of features are quite similar, particularly with core features. There are a few differences in things you can do with non-core commands, but nothing terribly significant.<br> <p> The bigger difference between the two is in how the user interfaces "feel". This doesn't affect the functionality of either system, but I think that Mercurial has a more complete, consistent command line UI than git, and certainly one that's more familiar to CVS or SVN users.<br> Thu, 15 Sep 2005 14:39:31 +0000 Mercurial: an alternative to git https://lwn.net/Articles/151876/ https://lwn.net/Articles/151876/ job This looks very interesting, but wrapping the whole distributed-VC around my head is a bit too much for a thursday afternoon. Perhaps it would be a good idea for a future LWN article to cover the basics of how to work distributed and why it is different from centralized VCS. Mercurial looks like a very good starting point.<br> Thu, 15 Sep 2005 13:21:52 +0000 Mercurial: an alternative to git https://lwn.net/Articles/151873/ https://lwn.net/Articles/151873/ arcticwolf Interesting article, but I wish there'd been more comparison of git's and mercurial's actual features, not to mention a list of "cons" (which I have no doubt exist, too). <br> <p> Right now, it sounds like mercurial is the best thing since sliced bread and everyone should convert to it immediately since it's superior to every other SCM out there; a more critical look would've been nice.<br> Thu, 15 Sep 2005 13:13:48 +0000 Mercurial: an alternative to git https://lwn.net/Articles/151808/ https://lwn.net/Articles/151808/ dlang Matt's posts about the bandwidth comparisons prompted the git team to develop the pack object. from what I have seen about it's internals I wouldn't be surprised if the git pack object ends up being smaller then Mercurial in many cases (and is very close in the other cases)<br> <p> the pack object also goes a long way to address the seek problem that's described.<br> <p> this should be looked at more closely if either of these factors are significant to you.<br> Thu, 15 Sep 2005 02:39:40 +0000