Engineering Computing

CVS Documentation


CVS stands for Concurrent Versioning System. It is used to maintain sets of files on which multiple developers are working. If everyone edited the same files (such as on a share drive), mass confusion would ensue immediately. However, if people each work on their own copy, there needs to be a method of exchanging changes made to files in an organized way. Furthermore, some of these changes might conflict (two people both change the same method to print different things), and thus the change-merging system must be able to handle this. Enter CVS.


CVS uses a centralized repository method for managing files. The permanent copy (eg "real version") is stored on the server in the repository. A repository consists of a number of modules; each module being a project. Users check out a module from the repository, producing a working copy that they can edit. After editing the files, the user then commits the changes back to the repository. Other users can update their working copy to receive changes made by another user. If someone modifies a file that someone else has modified and committed, CVS attempts to merge the changes together when the first person does an update. If the changes conflict, CVS asks the user to resolve the conflict.


  • CVS documentation
    Documentation for tool, command line interface. CLI usable under windows if cvs executable placed on windows PATH.
  • WinCVS documentation
    Sections of particular interest: 4.2, 4.7-4.10, 4.12-4.14


  • NEVER MODIFY THE REPOSITORY DIRECTLY!!! (anything under /home/pi)
  • Don't check in non-source files. The only non-source files you should check in are things like images, documentation, etc. Checking in your .mcp codewarrior project file will work. Do not check the ..._Data directory.
  • Divide up which group member "owns" which files. The owner is allowed to modify at will. If you're not the owner, get permission before modifying. This will seriously reduce conflicts.
  • Renaming things is hard in CVS. You'll have to remove, then rename, then re-add. It's even more annoying for directories.
  • If you add a new directory, everyone else working on the project will have to do an update with the "Create missing directories that exist in repository" update option checked.
Questions, comments, gripes and other communication to
This course is a part of Lynn Andrea Stein's Rethinking CS101 project at the Computers and Cognition Laboratory and the Electrical and Computer Engineering area at Franklin W. Olin College of Engineering. Olin College Logo