In this check-off lab, I want you to learn enough about CVS (Concurrent Versions System) so that you can make productive use of it in your projects. To that end, I will have you work with your Lab 4 partner(s) to set up a repository, create a project in that repository which is your Lab 4, and use basic CVS commands to work concurrently on that project.
If you want to know more about CVS, please look at the book Pragmatic Version Control, by David Thomas and Andrew Hunt, which is in the monitor room next to the computer lab. That book gives a good overview of version control using CVS. It also gives a number of standard commands, which they call recipes, which you can add to your repertoire. Additionally, here are two links to CVS websites:
cvs -d ~/sandbox init
This will create a directory called sandbox and put various system
files in a subdirectory called CVS. You should not do anything
directly to your sandbox. It will be manipulated through the
various CVS commands. Note: be sure to make this
directory read/write accessible to others.
By the way, the general form of a CVS command is:
cvs <global options> command <options and arguments>
using the notation from Pragmatic Version Control. In
particular, the CVS command used above is init, and the
global option is -d ~/sandbox, which tells where the
repository should be located. You can get more information about
the commands starting on page 139 of Pragmatic Version
Control.
cvs -d ~/sandbox import -m "Initial import" lab4 lab4 initial
This makes CVS install the files and directories (and recursively
their files and directories) in the repository with under name lab4.
After issuing this command, do a directory listing on ~/sandbox, and
you should see a directory called lab4 which (more or less) contains
the files in your source directory. (I say more or less since, for
example, the GNUmakefile is now GNUmakefile,v. This is how it keeps
the various versions of the file as it is being revised.)
cvs -d ~user/sandbox co lab4
This will create a subdirectory called lab4 of your work directory,
which is identical to the directory that you used to create your Lab
4 project, except that it has some additional CVS files and
directories which it uses to maintain necessary information. In
particular, each directory has a subdirectory called CVS which knows
where the repository is located. (You may look at these CVS
directories, but do not change them directly; your CVS commands will
work with them.) In particular, whenever you issue a CVS command
from your project or its subdirectories, you will no longer need to
include the global option -d ~/sandbox.
cvs commit -m "Minor changes"
This will commit all changed files in the current directory (and
recursively below) to the project.
You can see what changes you have made by issuing the following command:
cvs log file-name
where file-name is the name of the file (including path, if
necessary) that you edited. This will give information about the
various revisions of that file.
cvs diff -r1.1 -r1.2 file-name
This will do a "diff" on the two revisions (1.1 and 1.2), and report
the lines of the two versions that differ.
cvs update
This should now update the files in your project directory,
reflecting the changes the other team member made.
Instructor: Karl Knight