Can I use symbolic links for cvs root to simplify server consolidation?
Question
We're consolidating two old cvs servers onto one new box.
I had hoped the following: changing the dns entries for oldserver1 and oldserver2 (as well as some user account maintenance) would make the move transparent to cvs users.
Problem:
I'm having problems due to the different cvs roots on each old server.
Background
The old servers had the following cvs repository directories:
- old server1 cvs root: /cvshome
- old server2 cvs root: /usr/local/cvs
On the distribution we're using the default repository directory is /var/cvs. I opted to stick with this, i.e:
- new server cvs root: /var/cvs
Goal
I'd like minimal disruption on existing checked-out-projects, i.e. not having to find/replace all 'Root' files on each hard drive in the company.
To clarify, CVSROOT and CVS/Root entries for old server1 look like this:
pserver:username@oldserver1:/cvshome
Attempts
I tried this:
create a symbolic link on new server
/cvshome points to /var/cvs
ln -s /var/cvs /cvshome
However, when I try an update (i.e. from a workstation that pointed to old server 1), I get this error:
/cvshome : no such repository
Summary
Can I use links to 'alias' a cvs repository?
OR do I need to 'bite the bullet' and change all 'Root' files on all hard drives?
thanks,
bill
Solution
On Linux, when you give a command the path to a symlink which points to a directory, it makes a difference whether you append a slash or not:
$ ls -l /cvsroot
would list the inode of the symlink, while
$ ls -l /cvsroot/
would list the contents of the directory the symlink points to. This behaviour is different from the one you would see if cvsroot was an actual directory.
I'm not sure whether that's your problem, but try appending a slash. If it helps, you should be able to do checkouts, updates etc. of everything below the repository root.
OTHER TIPS
This might help somebody, sorry to comment on an old thread.
What worked for me was to change the --allow-root in the /etc/xinetd.conf:
server_args = -f --allow-root /usr/local/cvsroot pserver
The symbolic link/alias now works on this new server where I moved the repository.