Asst: Version Control

This assignment will let you show off your expertise with version control while setting up an assignment/lab for future students.

Put together a lab/assignment to give other students experience in working with a version control system. The challenge is to provide a consistent experience for all students that covers the essential elements of version control without requiring elaborate scheduled interactions among students or between the student and instructor. In other words, we want to present the illusion of working in collaboration with others, without the uncertainty that true collaboration would entail.

Your assignment will consist of

You may choose what version control system you wish to work with and your scripts may be in any reasonable language (sh, bash, Perl, Python, ...).

For example, your assignment might work something like this:

  1. Run step1. (This creates a unique repository for that student, pre-loaded with the Java spreadsheet project.)
  2. Check out a copy of the project from the repository at [wherever you stored that student's repository].
  3. Compile the project and verify that it passes all unit tests.
  4. Run step2. (This checks out a copy of the project in a separate location, makes certain changes to the files designed to have at least one conflict with the changes coming up in the next step, checks in those changes, and deletes the new copy of the project.)
  5. Change the project by doing ... [specific instructions, e.g., rename the foo() function in class Bar to foobar(), updating all calls made to foo() so that the project still compiles.].
  6. Check in your changes, resolving any6 conflicts according to the guidelines [...]
  7. Run step3. (This checks out a copy of the current revision, then verifies thatthe changes were checked in and conflicts resolved appropriately. Alternatively, you might provide a script to the instructor to do such checks at grading time.)

You might continue from there to try out branching, or ... ?

Package your assignment into a file versionControl.zip and submit using the button below.