Getting started with CVS

  1. First, note that this FAQ is concerned only with accessing the repositories for projects on which you are a developer. If you simply want to check out code for a project and don't need to commit changes back, you should use anonymous access.

  2. Make sure you have correctly registered an SSH key for your machine with Savannah, as explained in SshAccess.

  3. Move into the local directory where you want to keep your local copy of the CVS tree. For example: mkdir ~/myproj-workingdir cd ~/myproj-workingdir

  4. Download the CVS tree structure as explained in your project's CVS page (for example, https://savannah.gnu.org/cvs/?group=emacs) under "Project Member CVS Access via SSH".

    Beware that username and projectname are case sensitive, unlike in the web interface.

    This will create an empty project directory, where you should start writing your project. If there is such no empty directory, check that you are not using the -P (prune directory) option in your command line or \~/.cvsrc file.

  5. You can now start creating any files you want in your local project directory (\~/myproj-workingdir/project in the example above). Every time you create a new file, you must add it and commit it to the repository with:

    cvs add filename cvs ci filename

    You might want to add an -m option to the commit command if you don't want to enter an edit session to type a log message:

    cvs ci -m "your log message" filename

    When you add a new subdirectory, you just have to add it, not to commit it:

    cvs add dirname

    When you start a new working session, you should first update your repository to get any changes made by other developers:

    cvs update

    And when you modify an existing file, you should commit the changes to the repository:

    cvs ci filename

  6. You can see the contents and history of your CVS repository via the ViewCVS interface. There are links to this interface in your project page.

  7. You may want to use a frontend to CVS; we recommend tkcvs, see http://www.gnu.org/directory/TkCVS.html

    More info (and sources):