|
From: Ian P. <ian...@in...> - 2004-11-11 15:13:57
|
Hi Goran, [For those not familiar with the details, darcs = "changeset"-oriented and CVS/Subversion = "tree"- or "snapshot"-oriented. Note that their "changesets" are somewhat different to Smalltalk changesets.] On 11 Nov 2004, at 05:13, gor...@bl... wrote: > darcs looks VERY good to me. Very good. So simple. So capable. Seems > just damn superb. :) > For a lot of interesting notes: > http://sourcefrog.net/weblog/software/vc/ It's also interesting how one document can elicit very different reactions. What stuck with me most from that page, and from those that it referenced, included: http://web.mit.edu/ghudson/thoughts/undiagnosing: * Changeset-oriented version control is more powerful, but it is power which is largely unnecessary in all but the most chaotic of development projects. [Chaotic? We've had five people commit things to our CVS repository during the last 12 months. Not once did any of them commit outside their "assigned area of responsibility". We simply don't have any conflicts, or -- for all intents and purposes -- merges, to deal with. Everything we do is perfectly centralised.] * Changeset-oriented version control is harder to learn. In many environments, a shallow learning curve is the most important feature of a version control system. * Changeset-oriented version control is hard to get right. Perhaps the best support for this statement can be found in a March 2003 note from Larry McVoy to the linux-kernel list: http://www.ussg.iu.edu/hypermail/linux/kernel/0303.1/0130.html [6 years into changeset and the implementers are themselves saying they haven't got them right yet? Not encouraging.] * Changeset-oriented version control can be built on top of a tree-oriented foundation, although it will have all the disadvantages listed above. As Tom himself notes, tree-oriented storage is a dual to changeset-oriented storage. svk (http://svk.elixus.org/) serves as a working prototype of changeset- oriented version control implemented on top of Subversion. http://www.abridgegame.org/pipermail/darcs-users/2004-July/002351.html: With CVS, both branches and working dirs are cheap. Not so with darcs: every branch and working dir costs at least two full trees. The reason why people (me included) love CVS is that CVS is safe. There is no way you can ever lose data that has been committed without doing manual surgery on /var/cvs/. This gives you a peace of mind that is difficult to understand if you haven't been exposed to CVS. [I'll take "correctness" (and safety) over "utility" (and features and _perceived_ simplicity) any day.] Darcs, on the other hand, doesn't enforce any invariants except from honouring patch dependencies. Patches flow randomly between repos, and it takes a lot of discipline to ensure they flow the way you want them to. I'm not saying darcs isn't excellent at what it does, but rather that what it does isn't at all what we need. Cheers, Ian |