Hello all. I'm a system admin of a large, private source control server, which has exceeded 4,000 active CVS projects.
CVS is managed by xinetd, and each project is listed as a server argument using --allow-root=/cvsroot/project. This has worked fine, until recently, when the number of projects has caused the CVS command line to exceed the memory paging limit set in the linux kernel. The kernel was customized by Red Hat in 2006 to fix an unrelated bug, and the source containing that fix is no longer available, not to mention, I'm not really inclined to perform a kernel recompile on a production machine. So, my other option was to modify CVS. I've taken my default RPM from Red Hat, currently using 1.11.17, and modified CVS to use --ar=, instead of --allow-root. This reduced my CVS command line quite a bit (8 bytes per project), which solves my issue, at least until my number of projects grows to exceed it again. The good news is, we're about to do a major upgrade, and offer SVN as well as CVS, but until usage proves otherwise, I must assume that my number of CVS projects will, at the very least, stay the same, if not increase. The new server also has the same limit. In the end, I'm not a programmer. I'm a system admin who can usually figure out just enough of something to get it to work. I haven't the foggiest on the "proper" method to introduce something like this to the *real* CVS tree, so that once (if) it is included to the main CVS development trunk, I no longer have to keep track of my hack. I'd rather leave that to the experts. In my hack, I simply changed all "--allow-root" references to "--ar", recompiled, remade the rpm using the same name, and installed the package. It appears to work just fine, but again, it's a hack, and I really would prefer to do things right, so that I don't run into the above issue, of needing source code that is no longer available. I would like to see it added to the main CVS package, most likely as an option, so that both "--allow-root" and "--ar" work. Ideally, has anyone ever examined a method, that wouldn't be unbearably slow for a server with thousands of projects, that could dynamically determine if the cvsroot being requested was a valid project? Thanks for your time. Chris
