|
Motivation
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.
Model
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.
Docs
- 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
Hints
- 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.
|