This article was first written in May 2006 for the BeezNest technical website (http://glasnost.beeznest.org/articles/334).
Basically, moving a CVS repository itself is not really difficult.
Let’s assume first that we don’t use the pserver mode of CVS, which is known to be weak with respect to security. We use then the SSH transport to access the CVS server, which we strongly recommend.
On Debian, the CVS repository is located by default in /var/lib/cvs. At install time, a debconf question asked you where to set it. To check where debconf at least thinks the repository is, look at /etc/cvs-cron.conf. We strongly recommend not to move it afterwards, as all the local CVS repositories (when using SSH mode) on developers’ machine retain this full path.
Make sure CVS is installed on the destination server. Package is called “cvs” and ships both the server and the client.
Now, make sure no developer is going to try to commit anything during the move. Either ask them, cut them SSH access temporarily or whatever suits you best.
Copy the repository /var/lib/cvs to the new server.
Update clients’ local repositories to point to the new server/name if you could not keep it.