[plug] Source Code 'Repository'

Cameron Patrick cameron at patrick.wattle.id.au
Thu Aug 18 17:12:28 WST 2005


Craig Ringer wrote:

> CVS doesn't as far as I know offer anything like that, and I have no
> experience with the other alternatives.

It does.  You can do e.g.

    export CVSROOT=somewhere
    cvs co myproject/some/subdir blah
    cvs co myproject blah2

CVS allows a lot of flexibility in doing this, more than SVN or any of
the distributive systems, but at the cost of utterly unintuitive
semantics for commands like 'update'.

Most systems other than CVS and SVN require you to check out an entire
repository at a time.  To some extent this is a limitation of the
use of a dumb filesystem / SFTP / plain HTTP backend (which does have
other advantages - no software at all needs to be installed on the
server hosting an Arch repository, e.g.).

> > I also need an easy way to have versions. The most current being dev
> > and then when I'm ready I make another release version. So a person
> > should be able to check out dev, or a release. being able to check out
> > intermittent stages would be nice, but not necessary.
> 
> Pretty much any revision control system should give you branches and
> tags in some form or another, satisfying this requirement.

CVS will drive you insane if you try, however.  SVN does it better but
merging is still a bit ... exciting.  Distributed systems like Arch or
Darcs will get you much better merging.  Arch wins for sheer
flexibility and Darcs is incredibly simple to use.

> It'd probably what I'd pick. The only issue is that it's a pain if
> you're disconnected for long periods, since you can't `svn diff', `svn
> ci', revert a file, etc.

You can 'svn diff' when offline (unlike CVS) since every check-out
contains a pristine copy of the tree as well your working copy.

> A distributed revision control system might be better, but you might run
> into issues with availability on different machines (plus there are *SO*
> many of them and to me they all seem mighty weird).

Yes :-)  Arch/Baz is good but slightly cumbersome, Darcs is good for
small projects but doesn't scale, Monotone seems a bit weird too
(never used it but one of the developers lives in Perth and is an UCC
member so you can poke him if you don't like it :-P).

That said, I also find it hard to recommend CVS (because although it's
so widespread¸ pretty much all of the alternatives are better), or
Subversion (ditto, except for the widespread bit, and it _is_ better
than CVS).  If you do use Subversion, I'd recommend avoiding the
berkely DB backend at all costs and using fsfs instead.

Maybe I should write a song, "Every revision control system sucks" ;-)
'cp -R' and rsync, that's the way to go ...

Cameron




More information about the plug mailing list