CSE 378 HomeWork 3 - cvs

Winter 2005

OPTIONAL: Using cvs

Overview

It is possible, but difficult, to partition the work in these assignments so that you and your partner can work independently for a while and then merge the results into a solution. What this means is that you may find that sometimes you work together, and sometimes you work alone. Unless you work together all the time, when you sit down to work alone you might find that your partner has broken something that used to work. (Experience indicates that when something is broken it's always the partner's fault.)

cvs is a source control system. It might be of interest to you for three reasons:

  1. It will automatically keep a history of all versions of files you check in, and let you retrieve any of those versions whenever you want.
  2. It is designed so that many users, working on many machines, can share files. Those many users could be you, at school and at home, say. That is, it makes it easier to move files around if you want to work locally on some non-lab machine.
  3. It's incredibly useful, and well worth the time to learn independently of any need for it in these assignments.

Of course, cvs will be a help only if you know how to use it. That will require a little reading. Here are a couple of sources:

You probably need to understand how to use only these cvs commands: checkout, update, commit, add.

In case you want to try using cvs, I set up a repository in each group's shared file space, e.g.,

/projects/instr/05wi/cse378/cse378a/CVSRepository
(Creating the repository means you don't have to, so that's one less seldom-used command to figure out.) I also created a test project, testProj, so that you can experiment with the often used commands. (The project contains a little SMOK model.) To get a local copy of the test project, say this (assuming you're in group cse378a, which you're not (probably), and your login is zahorjan, which it isn't):
   $ cvs -d :ext:zahorjan@attu:/projects/instr/cse378/cse378a/CVSRepository checkout testProj
You have to do that only once, when you first get the project. After that, cvs remembers the location of the repository and the name of the project, and you can just say
   $ cvs upate
to update the files on your local machine with the latest copies in the repository, and
   $ cvs commit
to push the files in your local directory up into the repository.

cygwin

For this to work, you'll need at least the following components installed via cygwin setup: