December 30, 2024

I have Windows XP Home Edition on my laptop. And I wanted to install CVS server on it. The first thing I tried was CVSNT. It was the only CVS server that I could find that ran natively on Win32. But I ran into one problem that I couldn’t figure out. When I tried to use a CVS client, it could not read the repository. I guessed it must have had some sort of file permission problem. But, in WinXP Home, I can’t figure out how to change the permissions on files. Something like this should be obvious. But, apparently Microsoft tried to make it more “friendly” by only having files that are readable by all in a certain folder. So I tried placing the repository there, but it still didn’t work.

So, my next attempt was installing CVS under Cygwin. After installing the core components of Cygwin, two other components also needs to be installed – cygrunsrv and inetutils. Cygrunsrv will enable Windows to run Cygwin executables as a service. Inetutils will give you inetd.

Next, I configured inetd to run as a service. Cygwin will actually use the Windows login for the users. So, I added two users from Windows Control Panel – cvs and user. Then from the Cygwin prompt, I created the passwd and group files.

$iu-config
$mkpasswd -l > /etc/passwd
$mkgroup -l > /etc/group

Then I configured the CVS server by creating the respository and editing some configuration files.

$cvs -d /cvs init
$chown -R cvs /cvs

Added the following line to /etc/services:

cvspserver 2401/tcp #CVS PServer

And added the following line to /etc/initd.conf:

cvspserver stream tcp nowait cvs /usr/bin/cvs cvs –allow-root=/cvs pserver

Then I started the “CYGWIN inetd” service from the Services in the Windows Control Panel. I fired up WinCVS and was able to get to the repository.

To access it from another computer, you’ll have to open up port 2401 if the firewall option is enabled.