# Concurrent Versions System

This article or section is out of date.

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk: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

Install cvs and xinetd.

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 config 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

Note: If a user is present in the readers file cannot have write access too.

## Use

You can test out the server using the following commands:

    export CVSROOT=:pserver:my_user_name@127.0.0.1:/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

Category:

- Version Control System

Hidden category:

- Pages or sections flagged with Template:Out of date