Version Control

A few days back, I gave a presentation on Version Control to my lab. It focussed primarily on Subversion, but I think the first part is useful regardless of the controlling system.

svn.jpg

Here’s the outline:

What is Version Control

  • software that keeps track of changes to code over time
  • centralized repository to be accessed by multiple developers

Why do I need Version Control

  • safe way to develop
  • accountability
  • multiple versions
  • branching, tagging and comparisons

Choices

  • CVS
  • Subversion
  • Microsoft Visual Source Safe
  • Perforce
  • Git
  • Bittracker

Facts about SVN

  • cost (free)
  • license (Apache-like)
  • platforms (Linux, Windows and Mac)
  • documentation (svnbook)

Facts about CVS

  • cannnot rename files
  • cannot move directories
  • eats binary files
  • limited support for unicode files

Best practices

  • micro commits
  • never break the repository
  • add relevant messages to every commit
  • don’t fix whitespace
  • tag at each release
  • never add compiled files (like object files)

And then the demo. I used TortoiseSVN on Windows and the command line on Linux to simulate a normal development session. I’m not an expert at these things, so some things required me to experiment during the demo. I picked up a lot of the figures from the svnbook to explain concepts like the lock-modify-unlock and copy-modify-merge models.

Possibly related:

Leave a Reply