Version Control

Any large, useful software system will undergo many revisions in its lifetime and most likely undertaken by several different programmers who may work on the code concurrently and independently.

The process of code change needs to be managed so that

  • no (useful) changes are lost
  • the changes produce "consistent" versions of the system
  • we can roll back to earlier versions of the code when problems are discovered

To do this we use a Version Control system (like git or svn.

Version Control Methods

A VC system needs to have the ability to:

  • Add files to the program's repository (storage box) (save them in a staging area til committed)
  • Commit files (upload them)
  • Merge changes (if two people were working on the project at the same time)
  • Label versions (by majorRelease.minorRelease.patch - i.e. newFunctionality.newInterior.bugFix)

To do all these it needs to be able to read and write to files, sync them with a server, and access/modify directories.

We could write our own quite simply, but it's easy to use github (or an equivalent).