Version Control

Turns out I have been doing this for a very long time and had never known or rather never thought of finding out if there was an actual name to describe what it was I was doing. I have lots of updated files on my PC saved as

  • GertrudeCv2010.doc
  • NewCv01.doc
  • Assignmentdraft.doc
  • AssignmentFinal.pdf

Well…turns out this is the most basic form of version control. I was simply trying to keep track of the changes I made to my files without completely losing the original files. I recently learnt about version control and its importance in software development especially when dealing with huge projects. How frustrating would it be to constantly have to share files between team mates working on the same code base via email?!With most version control systems(VCS) such as CVS(the grandfather of them all),Subversion, Git, Mercurial and many others, one is able to do cool stuff such:

  • Synchronization- A bunch of guys can work on the same code and stay up to date with the latest version.
  • Backup and restore — Files are archived automatically with every change made and you can easily retrieve a previous version when the need arises.
  • Tracking changes — As you make changes, you could leave messages briefly describing the change. With this evolution of the project is clear.
  • Tracking Users — There’s a tag for all the users so the blame game is really cut short when someone messes up since very change is linked to the user who made the change.
  • Branching — You could also create a separate branch to mess around with the code and test out all your imaginations without risking ruining everyone’s work then once you are certain of what’s working, you then merge it with the main branch.

So VCSs come with a lot of perks and I cannot wait to get properly acquainted with them. As a parting shot, here are some geeky VCS terms I came across.

  • Repository: The database storing the files.
  • Add: Put a file into the repo for the first time, i.e. begin tracking it with Version Control.
  • Working Set/Working Copy: Your local directory of files, where you make changes.
  • Trunk/Main: The primary location for code in the repo.
  • Revert: Throw away your local changes and reload the latest version from the repository.
  • Head: The latest revision in the repo.