|
CVS |
Installing CVS Integration for Visual Studio Working with CVS from Visual Studio
|
||||
|
This document is the result
of a great deal of research, comparison of conflicting documentation,
and direct experimentation, the end result of which is a working CVS server
running on my local server. |
|||||
|
If you wish to include this information in your own web site, go ahead and include a link to it, but don't just copy it to your own page and call it yours. That's tacky. |
|||||
|
The Steps Involved
|
|||||
|
This identifies the port CVS
server will use. In most Linux/Unix installations, this is already defined.
Port 2401 is the commonly accepted default port for CVS use.
|
|||||
|
A couple of important notes here: 1. That second parameter is a lowercase 'L', not a 1 or an uppercase 'i'. 2. The last parameter, '--allow-root=/raid/cvsroot' defines the location of the repository to be used. There can be more than one, in which case each would have its own '--allow-root' parameter. The following steps must all be done as root:
should do the trick. Do the same thing with chgrp, changing group ownership to 'cvsadmin' for the repository and everything underneath.
This will initialize the repository, creating a directory called CVSROOT within it. Do this for each repository you wish to set up, substituted the desired pathnames as needed.
This checks out the CVSROOT directory and all its contents. CVS uses itself to perform revision control on its own configuration files. Neat-o! |
|||||
|
Note that first parameter. It tells CVS Server not to use the regular userbase for passwords, allowing us to define a separate userbase for CVS.
Don't forget that trailing colon! Then add the word 'cvsuser' to the end of each line, so that it looks something like this:
This tells CVS Server to change this user to 'cvsuser' as soon as the login for a user is recognized. Another way to create this file is to use htpasswd, which is normally used to generate Apache access password files. The format it creates is about the same as that which CVS requires, except for the :cvsuser appendage to each line. You'll still have to do that manually, but it allows you to create a passwd file with passwords different that those in the regular /etc/passwd file.
Be sure not to reverse the order of these commands, as that would lock you out of CVS!!!
That's
it. If you've done everything right and I haven't forgotten anything,
CVS Server Now all you have to do is make sure WinCVS is working on all the client workstations. If WinCVS can't connect to the server or you get some odd message, chances are good you've screwed up /etc/inetd.conf, write permissions on the repository(ies), forgotten to restart inetd, failed to commit your changes to CVSROOT or botched the password file. |
|||||
|
The source code for the version of CVS currently running as a CVS server on my server is located here and and has been modified slightly from the distributed version. These modifications specifically center on the use of a file called .cvsignore, which it expects to see in the user's home directory. When operating in server mode, CVS does not have direct access to the client's home directory and so attempts to access the file in /root, an act for which it does not have permission. This generates an annoying and misleading error message, when in fact nothing is wrong. Another change allows the root account to check files in and out of a repository. Considering that initial setup for a CVS server requires that the installing user have root access or actually be root, this caused undue problems. The first change is to ignore.c, to a routine called ign_setup(), which attempts to access various lists of file types to ignore during normal operation. Here is the code to look for in the source file:
The other modification is to options.h. Be careful with this, as options.h is recreated each time you run the configure script for the project. I turned off CVS_BADROOT, so that CVS would permit operations to the repository by root. I understand that since this tutorial was written, this silly bug in ignore.c has been fixed, so you may or may not need to make this code change yourself. |
|||||
|
SPECIAL NOTE ABOUT TYPES OF CHECKOUT:
|
|||||