Bits on Bits on Bits

My 4 Stages of Version Control

Version control – it’s great. It’s also amazing how you don’t realize how much better it can be until you use a better tool. Personally, I like to think I’ve gone through 4 main “stages” of version control, each stage being a more useful and effective addition to my workflow than the previous.

Stage 1 – Local Backups

“Hmmmm, I’m planning on making a lot of change to this code, better make a copy of the file hello.cpp. I’ll call it hello2.cpp! I’m a genius!”

Stage 1 is every n00b’s favorite, just making another copy of the file. Something go horribly wrong while you were in that 4am coding frenzy? You’ve always got that copy lying around, assuming you had the foresight to make it.

Stage 2 – Offsite Backups

“Hey (insert programming partner’s name here), we’re going to need to share our code somehow! How about I work on it Friday night, then email you a zip file of my progress? Then you can work on it Saturday!”

Stage 2 is only slightly better than stage 1. As least you (and your partner) have a copy of the code the next time you spill some hot chocolate on your laptop.

Stage 3 – Centralized Version Control

“Wow, svn is really cool! You can make savepoints in your code?! Other people can get your code too, and contribute to it?!”

Using an actual version control system for the first time is mindblowing in the omg-why-didn’t-I-know-about-this-before kind of way. Once you realize how to commit and branch code, there’s no turning back.

Stage 4 – Distributed Version Control

“I don’t really get what the big deal is with git. I mean it’s pretty much the same as – oh wait, oh wait no it’s not. Ok. Yes. This is really cool. LET FREEDOM RING.”

Just when I was telling my friends how great svn is, git came along and changed everthing. Changes are stored extremely efficiently, making the act of pulling changes quick even when there are a lot of files modified. Branches with git are “cheap” in that they are easily mergeable with other branches. With git, life is good. With github, life is great. I’ll go into that more in another post.

Comments