In CVS, you check out a repo to download its files:
$ cvs -d firstname.lastname@example.org:/cvs checkout -P module
You want to replace email@example.com with the username and hostname for the repo.
You'll also want to verify the SSH fingerprints. IRCNow publishes a list of known SSH fingerprints.
For example, to check out code for ircnowd from firstname.lastname@example.org, you'd run:
$ cvs -d email@example.com checkout -P ircnowd
The checkout commands produce a copy of the code in the working directory.
Commit new code
Once you checkout a CVS repo, you can edit the code and save your changes. Until you commit your code, however, none of the updates will be saved in the CVS repository. WARNING: Any code that is not committed will not be saved in the CVS repo.
When you are ready to commit your code, type:
$ cvs commit
You will be given a text editor (usually vi) to leave a commit message.
To commit and also write the message in a single command, type:
$ cvs commit -m "Your commit message goes here"
To update your working directory with new code from the repository, type:
$ cvs update
Add new files
WARNING: If you create a new file in your working directory, it will not automatically be added to the CVS repository. You must first run:
$ cvs add filename
filename with your real filename.
Then, you must commit your changes with:
$ cvs commit
cvs add is only used for adding new files to a module that has already been checked out. If you want to add a new project to the repository, use
cvs import as described in Import New Repo.
To remove files from the CVS repo, it is not enough to simply delete them from the working directory. You will also want to remove them from the CVS repository:
$ cvs remove filename
Afterwards, you must commit this change to delete it from the repository:
$ cvs commit
When working with CVS, it helps to set the CVSROOT, the path where the cvs folders are located:
You can set it for just the current shell:
$ export CVSROOT="firstname.lastname@example.org:/cvs"
If CVS is local, you can use a file path:
$ export CVSROOT="/home/username/CVS"
As a shortcut, you can add this to the bottom of your ~/.profile so you don't have to type it each time:
$ echo 'CVSROOT="email@example.com:/cvs"' >> ~/.profile
Once CVSROOT is set, you can then omit the -d argument for checking out and committing code.
So the checkout code above becomes more simple:
$ cvs checkout -P module
Any time you check out code, the CVSROOT is automatically provided for the code in the working directory. So, it was not necessary to specify the CVSROOT for the commit command.
Create New Repo
To create a new CVS repository, type:
$ cvs -d /path/to/CVS/ init
/path/to/CVS/ with where you want the CVS repository to be located. For example, you might put it in
Import New Module
If you have existing code that you'd like to import to a CVS repository, first change to the folder containing the source code, then type:
$ cvs import reponame vendortag releasetag
releasetag. CVS will put the source files inside a directory named
reponame inside the CVS root directory.
vendortag should be replaced with the vendor (the author) of the repository.
releasetag is the tag for the specific release.
$ cd ~/ircnowd/ $ cvs import ircnowd ircnow start
Note: CVS does not automatically transform the imported source code into a working directory. As a result, any changes you make to the original source code directory cannot be committed to the CVS repo.
To fix this, you will need to checkout the source code. Change your directory to somewhere else to place the new working directory, then type:
$ cvs -d /path/to/CVS/ checkout -P reponame
reponame with the repository name. Then, change directory to
reponame to make changes. Afterwards, use cvs to commit them.
If checkout works properly, you can safely delete the old source code directory you imported from (since that one is not tracked by CVS).
Eventually, when you are ready to use the code, you want to remove all the CVS-related files. To export code for use:
$ cvs -d firstname.lastname@example.org:/cvs export -D YYYYMMDD module
YYYYMMDD with the year, month, and day of the version of the repository you want to export. Replace
module with the module name.
If you see this error message:
cvs [commit aborted]: received broken pipe signal
It may be because CVS was waiting for you to connect but your connection took too long. This can happen if you take too long to send a commit message or you take too long to provide passwords for your ssh keys. If this happens, try to find ways to avoid interactive input. For example, you might consider using the -m argument with cvs commit.
cvs [server aborted]: cannot make directory /var/cvs/module: Permission denied
This error message means that /var/cvs either doesn't exist or has the wrong permissions. If you're running cvs inside a chroot, check var/cvs inside the chroot. It needs to exist and be owned by the group commit and set to group writeable.