From: Eero Saynatkari Date: 2006-01-05T07:10:14+09:00 Subject: Re: Ruby projects and interfaces to revision control systems (Darcs vs. Cogito) -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Wed, 4 Jan 2006 01:40:59 +0900, mental@rydia.net wrote: > It's lunch time, so here are my own (very opinionated) thoughts on > the matter: > > * CVS: As a large project maintainer, I've come to hate it. It does > "enough", but then falls down in places like commit atomicity. > Trying to isolate a commit by bracketing timestamps isn't fun. > Multiple merges to a branch are also so painful that branches > should be considered "single-use". No disconnected operation. > > Verdict: You'd have to be insane. > > * SVN: Unambitious, but solid. Clean. Tries to fix the things > wrong with CVS. Succeeds, mostly. Unfortunately, merging with > branches is even worse than with CVS in the sense that you've got > to manually grovel through logs to find merge points. No > disconnected operation. > > Verdict: Not bad. A reasonable choice for most centralized > projects. > > * SVK: Uses SVN repositories, mirroring them locally. Adds > disconnected operation and a number of other things -- among them, > 'svk smerge', which is the branch merge SVN should have had. > Written in Perl. A bit slow occasionally. > > Verdict: Decent. I use it for the SVN-hosted projects I > participate in. > > * arch: I've admittedly been a bit put off by the weird file naming > conventions. Mister SCM, stay out of my project's namespace, > thanks. But it does the things you want an SCM to do. Focuses on > the whole "distributed development" thing, and of course supports > disconnected operation. > > Verdict: Probably good, but I can't bring myself to use it. > > * Bazaar: Frontend to arch repositories, if I understand correctly. > I think it's supposed to be the next-generation arch. Also, Bazaar > NG is the next-generation Bazaar. > > Verdict: Probably great, but I've got no experience whatsoever with > it. > > * monotone: Interesting piece of kit. Another decentralized SCM; > repositories are .db files containing records of "facts". > Conceptually, a content-addressable filesystem. Emphasis on > digital signatures. Configuration file is a lua script which is > both good and bad. Was maturing rapidly until one of the core > developers had to leave because his employer used certain software. > > Verdict: Good, used it for a while but moved on. > > * git: A fairly raw content-addressable transactional filesystem; > objects and metadata are stored in a .git directory, gzipped and > named by the hash of their contents. Also supports "packed" > repositories, with files containing blobs of deltas. V. nice > because you can easily throw repositories around with rsync, HTTP, > etc. Provides tools for performing transactions in a working > directory, and cloning repositories. It isn't really a complete > SCM in the traditional sense, though you could use it that way if > you're determined. > > Verdict: Great if you're Linus and/or trying to work around (for > example) some SCM-related no-compete clause. > > * cogito: Shell scripts on top of git which turn it into a real SCM. > Works nicely; takes advantage of the benefits of git, and adds > quite a lot of usability. You still occasionally have to dip into > a raw git command here or there, but things go pretty smoothly > nonetheless. Not as nice about renaming directories as some modern > SCMs. Nice in that the SCM metadata directory is hidden, so you've > not got an "MT" or a "CVS" or whatever directory staring you in the > face. You can glob with impunity. > > Verdict: Very good. I use it for all my writing, art, and personal > software projects. > > * Darcs: Repository is a _darcs directory containing a pristine > snapshot of the tree and a bunch of patches. Darcs is based on a > formal approach to performing operations on patches. Favorite of > Haskellites for many reasons. > > Verdict: Good, possibly very good. Not used it much though; Cogito > fills the void for me. > > Have I missed any? You missed Mercurial (hg), actually a fairly good one. One point that may be important to many is that out of the distributed SCM's that I have tried (git, monotone, bzr, mercurial, darcs), only darcs supports output to a generic format, XML. > -mental E -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (FreeBSD) iD8DBQFDvZmNxvA1l6h+MUMRAklhAJ0Vpc+AfcthKiWFHjcxfejxWC7frwCePQDm pLJbUwwms0BkaCShPrFt0mM= =aesI -----END PGP SIGNATURE-----