CVS (Concurrent Version System) is a code management system. It keeps track of changes in a source repository, has features like branches, which allows for several parallell development efforts or bug correction paths for each file.
I could have chosen something else, like CMS (Digital's code management system) or RCS (another free package for Unix, that basically does the same thing as CMS), but CVS has the following features I haven't seen elsewhere:
- It's free.
- It's networked. This means you can have the client part on your machine, develop at home, and submit your changes to a chosen server that holds the source repository.
- It allows concurrent development in the same files.
- It moves the responsability of merging (textually) conflicting changes to the authors. The third party is involved.
- The CVS client runs on a number of architectures, like Unix, VMS, MacOS, NT, which means that every developer has his or her own choice of editing environment. I assume Unix and VMS will be those mostly seen.
The drawback is that the server part can (for now) only work on Unix. That is, however, a very small problem, since it's very few (for now, only me) that will see it, and I'm prepared to handle the administrative part.
If you don't know CVS already, I'd suggest you check the following docs:
A warning! All the pages shown here will have Unix-specific parts. The VMS variants are shown further down this page
- Introduction to CVS by Jim Blandy. It covers very well what you need for basic development.
- Dennis Butler's tutorial, which is nice, and pretty easy to understand.
- The docs section of Pascal Molli's site (see below).
- Cyclic Books
The CVS root for Free-VMS development is :pserver:email@example.com:/src/FreeVMS.
username must be replaced with the username you will have in the repository. To set that up, do the following:
- $ define CVSROOT ":pserver:firstname.lastname@example.org:/src/FreeVMS"
- Unix, using sh or bash
- Unix, using csh or tcsh
- setenv CVSROOT ":pserver:email@example.com:/src/FreeVMS"
The rest works very much as documented. Here is a quick reference:
- To check out source
- cvs checkout path ! To check out a directory and subdirectories
- cvs checkout path/file ! To check out a specific file
... and here's when I get interrupted. I'll continue with this later...
The repository is also available over the web. Please do not bookmark that, it will probably change.