[cvsnt] Truncating CVS repository
Chuck.Kirschman at Nosp_am.bentley.com
Thu Jan 17 16:27:54 GMT 2008
Duncan Paterson wrote:
> Our CVS repository has now grown to over 100 GB and this is becoming
> unmanageable. Is there any way to truncate the older versions from the
> CVS repository. Any help is gratefully received. Btw I am a complete
> CVS novice.
You probably already did this, but check to see how much of that is your
CVSROOT/history file. We found for a source code repository that
typically 50-60% of our repository space is the history file, and about
20+% of the remaining space was tags. After that, we then found 10% of
the remaining space was deleted files. Truncating or moving the history
file is an easy option. I'm sure someone will chime in with turning off
history and turning on auditing, which requires a database. Removing
unnecessary tags is good for a number of reasons. Deleted files can be
cleaned up when they are so obsolete that they no longer have value, but
in that case you probably should still put them in another repository.
And unless they're binaries, it probably won't make an appreciable
Also, we have occasionally found "really big" files, usually on the
order of 60-80 GB. These were probably due to a bug in CVS as the user
had no idea what had happened. We haven't seen this lately, so the
issue is probably resolved. But it's worth looking to see what is
taking up all the space, just in case.
We also had one set of folks who used the $Log$ keyword. While I
completely disagree with using it (and I think I'm in the vast majority
here), it does have the effect of ballooning up the repository with no
value. Best to avoid it.
We use multiple repositories to keep the size down. Although we have
well over 100 GB of source files, we have a lot of repositories. This
allows us to load balance the various repositories on multiple servers.
On the other hand, with 100 GB, you are probably storing a lot of
binaries? We had one group that tried to commit every build of their
product. In that case, they quickly exceeded disk quotas. The solution
was education. Similarly the folks that tried to commit the install
sets of the compiler. Some things don't belong in a revision control
Removing old versions is usually a bad idea. It really goes against the
whole philosophy of a revision control system.
More information about the cvsnt