I've been wondering if we should consider migrating from CVS to
Subversion (aka SVN) for version control. There's a utility (cvs2svn)
to convert a CVS repository while keeping full history. And SVN is
supported by viewcvs (as used by http://cvs.xapian.org/)
The main motivations are:
* CVS doesn't really handle renaming files well. Either you "cvs
rm"
then "cvs add" and have to manually step between files when diffing
back past the rename. Or you copy the raw ,v file (ick) and "cvs
rm"
the old name. But then both the files appear if you check out or
diff from a date or tag before the rename.
It's purely historical that maybe half our source files start
"om",
but at the moment it'd be annoying to rename them all.
We also agreed to merge xapian-examples into xapian-core - better
renaming support would help here too.
* CVS doesn't store the concept of a commit. SVN provides a revision
number for the whole repository, which would make it much easier to
use the tinderbox results to pick good snapshot tarballs. Currently
the CVS snapshots are known to bootstrap and pass "make dist" which
doesn't catch most breakage. With SVN we could also label snapshots
with the SVN repo revision number. With CVS the best we could do is
to poke around and find a suitable datestamp for use with -D, which is
much harder to do.
It's also fiddly to produce the diff corresponding to a particular
ChangeLog entry (or set of entries) with CVS.
SVN also supports disconnected use (via svk), which some might find
useful (though Richard no longer has to suffer with dial up).
SVN seems the obvious candidate, as it's not so different that there's
much of a learning curve (e.g. "svn diff" instead of "cvs
diff", etc)
but it addresses the most annoying failings of CVS.
However, I haven't actually used SVN in anger, so would welcome comments
from those who have. Or any other comments on the idea for that matter.
We (i.e. James) would also probably need to install a more recent
version of SVN on ixion...
Cheers,
Olly