This page is about CVS (Concurrent Versions System), a version control system that has become indispensible for my everyday computing life. Apart from more obvious applications, it allows to easily update and synchronise Unix directories like ${HOME}/bin, ${HOME}/tex/inputs or IDL library directories over different computers.

Top ten CVS commands

The following CVS commands are the ones I most frequently use, the most useful ones listed first.
  1. cvs -qn update
    (check what cvs update would do, to see which files have changed, etc. The -q flag is so useful you should consider putting it into ~/.cvsrc)
  2. cvs update -d
    (update current directory including possible generation of subdirectories)
  3. cvs commit
    (commit changes, additions etc.)
  4. cvs diff file
    (difference to original version)
    cvs diff -rHEAD file
    (difference to latest repository version)

    A variant is

    cvs diff -u -rHEAD file | a2ps -Eudiff --prologue=diff -Pdisplay
    (prettyprint difference between local and latest version)
  5. cvs checkout module
    (check module out of repository)
  6. cvs add file
    (flag addition of file to repository)
  7. cvs checkout -d directory module
    (check out module into specific directory)
  8. cvs log file | less
    (print log messages for file)
  9. cvs annotate file
    (show listing which indicates version and author of each line)
  10. cvs import repository vendor-tag release-tag
    (import current directory)


pcl-cvs (or cvs-pcl) mode in Emacs

More documentation

You may find my `Quick Introduction to CVS' useful (300kB PDF or 58kB gzipped PostScript).

Or you may want to check out some

Web Resources

Last updated 15-Apr-2002 by Wolfgang Dobler
Send comments to