Concurrent Versions System
"Concurrent Versions System is a version control system, an important component of Source Configuration Management (SCM). Using it, you can record the history of sources files, and documents. It fills a similar role to the free software RCS, PRCS, and Aegis packages."
This is a quick guide on how to set up the latest CVS server.
Installation
Create the cvs group - members of this group will have write access to the repository:
# groupadd cvs
Create the cvs user in the cvs group (-md makes the home directory):
# useradd -md /home/cvsroot -g cvs -p Insecure0 cvs
Initialization
Initialize your CVS repository (as cvs):
cvs% cvs -d /home/cvsroot init
The permissions on the directory (not the files inside, however) should be 2775 (drwxrwxr-x), but if not, run (as cvs):
cvs% chmod 2775 /home/cvsroot
Add any users that you want to have local access to the repository to the group cvs by using the following two steps. You can add pre-existing users to the cvs group with the command:
# gpasswd -a username cvs
Make a xinetd configuration file:
/etc/xinetd.d/cvspserver
service cvspserver { port = 2401 socket_type = stream protocol = tcp wait = no user = root passenv = /home/cvsroot server = /usr/bin/cvs server_args = -f --allow-root=/home/cvsroot pserver }
Ensure you have the following line in /etc/services
(add it if not):
cvspserver 2401/tcp
Unset the HOME
variable
# unset HOME
And restart xinetd.service
.
Configuration
Become cvs ("su cvs") and create a 'passwd' file in ~/CVSROOT
. To add entries in the file you can use htpasswd command (present in the apache package) like that:
htpasswd -b filename username password
then edit che file and add che group, should look like this:
# Format is username:password:group anonymous:: luser:HopefullySecure0:cvs other:Insecure0:cvs
Now create a 'writers' file in ~/CVSROOT
, which grants write privileges to the users you created in 'passwd':
luser other
Now create a 'readers' file in ~/CVSROOT
, which grants read privileges to the users you created in 'passwd':
anonymous
Use
You can test out the server using the following commands:
export CVSROOT=:pserver:[email protected]:/home/cvsroot cvs login mkdir ~/sandbox mkdir ~/sandbox/myproject cd ~/sandbox/myproject echo "this is a sample file" > myfile cvs import -m "description of myproject" myproject v1 r1 cd .. rm -R myproject cvs checkout myproject cd myproject echo "some changes to the file" >> myfile cvs commit -m "Explain changes here" myfile