[Cvsnt] CVS(NT) with huge repositories?
tmh at nothing-on.tv
Sun Mar 24 22:56:27 GMT 2002
Mudama, Eric wrote:
> The last time I did any investigation of benchmarking CVS, it had a full
> version of the head, and then backreferenced all changes from that point.
> We have files that are version 2.1380, which on this file would be a
That's actually a strength, since in the majority case (update from the
head) the lookup time is just the time to open the file & copy the data
out. Ultimately whether you use a database format or a text file you're
going to have to do some kind of diffing, and the rcs file format is
extremely fast (I doubt a database would be much faster).
Also because everything is held as files repository corruption is
virtually unheard of, provided the underlying OS has a reasonable
file system. In the worst case (hardware failure) you can recover the
affected files from backup without affecting the rest of the repository,
which is useful (I've had to do it).
CVS is at its weakest when you're checking out from a long lasting
branch. A branch is held as a diff from the branchpoint, so finding the
file on a branch that's been active for more than a couple of weeks is
the slowest operation (never more than a few milliseconds in my
experience, but if that's across a few thousand files it'll mount up).
Generally CVS works best when branches are short lived and most activity
is on the head.
Making CVS store whole revisions at certain points would be trivial, but
without a good way of speeding up the lookup to find the whole revision
I doubt it would be a speed increase. You'd also lose a certain amount
of merging capability - with CVS you can easily take two divergent
branches and merge them together or into a third branch... the fact that
everything is stored as diffs makes this possible.
Without specific numbers, though, it's difficult to say. I've never
heard of anyone complaing that CVS was slow, or that it couldn't handle
large projects. The largest project that I know about is
http://www.xfree86.org/cvs/, which has many thousands of files and many
hundreds of developers working simultaneously on it. The FreeBSD
project has their entire source code repository on CVS, which may well
be much larger.
CVS does benefit from good hardware. It was designed for Unix where big
fast machines are readily available, so if you're really talking about a
huge repository I'd probably recommend investing in some Sun or IBM
Cvsnt mailing list
Cvsnt at cvsnt.org
More information about the cvsnt