I will treat this as a 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 partners to set up a repository, create a project in that repository for the music scheduling system, 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 initThis 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" musicsystem musicsystem initialThis makes CVS install the files and directories (and recursively their files and directories) in the repository with under name musicsystem. After issuing this command, do a directory listing on ~/sandbox, and you should see a directory called musicsystem 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 musicsystemThis will create a subdirectory called musicsystem of your work directory, which is identical to the directory that you used to create your Music System 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
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-namewhere 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-nameThis will do a "diff" on the two revisions (1.1 and 1.2), and report the lines of the two versions that differ.
cvs updateThis should now update the files in your project directory, reflecting the changes the other team member made.