From https://www.nongnu.org/cvs/:
- 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.
More recent alternatives are listed at "Version control systems" category linked above.
Client
If you want to connect to a cvs server, install cvs and follow instructions from the owners of that server. For example openbsd.org/anoncvs
NOTE: there's a bug which some servers might require rsh which is not available on arch. You can force cvs to use ssh instead with the environment variable CVS_RSH=ssh.
$ export CVS_RSH=ssh or before each command invocation $ CVS_RSH=ssh cvs ...
Server
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
As the cvs user, create a passwd file in ~/CVSROOT. To add entries in the file you can use htpasswd commands (present in the apache package) as follows:
htpasswd -b filename username password
then edit the file and add the group, for example:
# Format is username:password:group anonymous:: archie:HopefullySecure0:cvs other:Insecure0:cvs
Now create a writers file in ~/CVSROOT, which grants write privileges to the users you created in passwd:
archie 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: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