To my surprise I noticed CVSNT is now only available for money (and compared with my other development tools for a lot of money, so I’ll stick with Mercurial which comes with plenty of better features for which I would pay), but there are still versions included in several Linux distros that comes with source. I happened to work on an Ubuntu 9.10. (
apt-get source cvsnt ;))
When I configured the repos, I had to put one into a jail for several reasons. However, the CVSNT server would simply bail out with the following error message:
cvsnt [server aborted]: Couldn’t open default trigger library: No such file or directory
… not too helpful, but after all we have the source
So I grepped through the source and found that it expects to find a file info.la (or info.dll on Win32) and load it. After running updatedb I was able to find it. Sure enough the problem was no problem in the configuration that was not jailed. Well, seems that jailing requires a little more than just the /tmp folder as stated in the README, and indeed it does, so I bind-mounted the folder /usr/lib/cvsnt/triggers (where I found info.la) into my jail, so inside the chrooted environment it would appear as /usr/lib/cvsnt/triggers. Done.
The least invasive method to get it to run without even having to make other stuff available inside the jail. I suppose even bind-mounting all of /usr/lib/cvsnt would have been rather harmless.
PS: in /etc/fstab a bind-mount looks like this (one line):
/usr/lib/cvsnt/triggers /[repo-folder]/usr/lib/cvsnt/triggers bind defaults,bind 0 0
[repo-folder] is the location that will be jailed (outside view, obviously).