cvs vs. svn vs. git vs.... (was: Cygwin 1.7 release)

Warren Young
Thu Jun 4 20:58:00 GMT 2009

Corinna Vinschen wrote:
> I still don't understand why everybody is moving away from CVS.

0. Far cleaner versioning scheme: just rXXXX, instead of CVS's mess.  I guess this might annoy those who keep 
their repository versions in step with their public version numbering 
scheme, but I always found it a pain to renumber my CVS repo when there 
was a new major release.  And keeping minor releases in step? 

1. svn rm really removes files, doesn't just hide them in the Attic. 
(It's still there, part of the older revisions, just not visible further 
down that branch.)

2. svn rmdir really removes a directory.  You can later svn mkdir the 
same path, and it will not drag in the version history for the old files 
that used to be in that place.  (Ditto svn mv when renaming a directory. 
   Do that in CVS, and you can never use the directory name again!)

3. svn mv more closely approximates a real move.  It's still an add and 
delete on the back end, but because both changes are part of the same 
revision, and revisions are atomic.

4. Atomic checkins.  If CVS fails during a checkin, you get a partial 
checkin, usually requiring manual cleanup.  With svn, it either 
completes successfully, or it rolls the whole checkin back out.

5. Far cleaner ssh tunneling support

6. Unix tools hide .svn subdir, but not CVS

7. svn is less likely to break "special" files: keyword substitution is 
disabled by default, binary files aren't special, it knows the 
cross-platform rules for newlines, it knows about file modes like 
"executable" on POSIX systems...  You can arm-twist cvs into fixing a 
lot of these problems, but svn just does it right out of the box, and it 
tends not to break later.

> Seems like other SCMs,
> especially git, are just en vogue right now.

Last week I was wishing my OSS project were using git instead of svn.

Gna's repository server blew up again, losing several days -- weeks, 
initially, until they discovered a newer backup -- worth of repository 
data for the 1200+ projects they host.  Those using git just re-pushed 
their local repository copy and were back in business.  Those of us on 
the non-DVSCes lost any checkins made during the period between the 
backup and the crash.

Asked about his backup strategy years ago, Linus said he didn't make 
backups, because all the stuff he cared about was replicated on FTP, 
news, and mail servers all over the world.  As far as software goes, 
that ignores the pain of losing the play-by-play checkin history.

More information about the Cygwin-talk mailing list