November 2013

Gavin Pickin

Not Using Source Control? Amazingly, You're Not Alone

Source Control

This is kinda tough to admit, as I take pride in my work, my abilities, my drive… but up until recently… I was one of those people… that was living in a bubble, and was behind the times in a lot of things, ok, maybe almost everything. I had heard about lots of best practices… but living in my bubble, they were muffled, and almost sounded like a different language. This year, I decided to burst my bubble and get out, and now I'm free of my bubble, there are a lot of things I can finally understand, and implement, and one of those best practices I needed to implement, shamefully I must say, is Source / Version control.

I'm not making excuses, I have known we should be using Source / Version Control for quite a while, but we never took the time to educate ourselves, and go ahead and do it. I had worked a little with some source control a long time ago… and didn't like it (its come a long way like all tools), and to be honest, its been on my to do list for a long time, and if your to do list looks anything like mine, you'll understand why it never got done. There are loads of really good reasons to use it, and there are no good reasons not to… yup, thats what I said, "No Good Reasons" not to use it… but there are a few terrible ones.

Some Awful Reasons not to Use Source Control

  • We're only a small team we don't need it
  • We have backups, we don't need Version Control
  • We don't change old code often, whats the point
  • Its too hard / I don't understand it
  • Its too expensive
  • Or the truth - Laziness

The funny thing is, I assumed almost everyone used Source / Version control… but you would be surprised. Its just like Unit testing (Adam Cameron is writing a great series on this, and I'll get to this at some point too), everyone should be doing it, everyone knows they should be doing it, and you'd be surprised how many people, are not using it.

The reason I actually started using Git or Git Like Source Control, was because of some open source work… and I had to figure out how it worked… so like most things you want to learn, you almost always have to put yourself in the position where you make yourself learn it through a project. 

Obviously, for those of you not using it, yet… maybe you need some convincing still.

Here are some times when Version Control would be helpful

  • Made a change to code, and wanted to revert it
  • Wanted to know what, where and when certain people made changes to code
  • Wanted to prove that your changes didn't introduce a bug
  • Had to maintain multiple versions
  • Wanted to merge your dev server and staging server changes without cherry picking
  • Wanted to see differences in versions of a file
  • Wanted to restore from a backup 15 mins ago, instead of last night from backup
  • Wanted to not lose your mornings work when someone updated their old version of a file
  • Wanted an offsite additional backup facility

The list goes on and on and on.

I think those reasons prove that Small teams, Backups, Code that never Changes are false truths… but the Its too Hard and Price might be a little tougher to convince you of… so here are my reasons why I call BS on them.

Its too hard / I Don't Understand it

Thats just Lazy too… some of the concepts might be a little tricky, but if the other 4-5 reasons about too hard are true, small team, seldom change code etc, complicated forking branching and merging won't really be an issue for you. 

GitHub has Github bootcamp with simple walk through tutorials, to guide you every step of the way.

Code School even has a free git basics course (in alliance with GitHub)… to help you get up to speed. Try GitHub 15 Minute Tutorial

Bit Bucket has step by step instructions as you do things, giving you all the info you need, so even a monkey can do it (trust me, I'm proof of that).

You can get 95% of the benefit with 5% of the complexity and "hard" stuff… sorry, its not a good excuse.

Its too expensive

Well, lets see - GITHUB is FREE… so thats a poor answer.

Your response, but thats for Open Source, it costs for Private Repos.

Yes, you are correct, it does… but lets think about it. 

If you need 5 repos of less, its only $7 a month, and 10 repos is only $12 a month from Github. For most developers, that is a lot… but if you have a team, and a few more projects, it can add up… but wait, Github is not the only provider of Git services.

Another great service we started using, is Bit Bucket, made by Atlassian who also makes JIRA the bug tracker (very popular), HipChat (another cool tool Adam Tuttle introduced me to), SourceTree (a free Git GUI Tool) and a few others. Their pricing model is very different.

UNLIMITED repos… you just pay by Users. If you have 5 users or less, you can have "Unlimited Repos" for $0 a month. If you have up to 10 users, its only $10 a month. So if you're paying less than $1 per user, per month, I don't think Expensive is a valid excuse either.

For the record, I am not a shareholder, I don't commission on their products (although I should see if they have a referral system because their products are awesome), but they have a million products, most of them seem to SaaS type products, and they're all really cool... so check them out.

Now, some of you are probably thinking, great, but wait… I work for a lot of big companies and organizations where they have to have ownership of their code, nothing leaves the building, vpns and security, now what? Now i have to buy this expensive product, to manage my Source / Version Control?

Atlassian has a solution for that too... Stash. Stash is a solution where you can have your Remote Git Server on your own server, in your own network… and the price is unreal too.

For 10 users or less… its only $10 a month. No setup fees, no lump sum downpayment, for the equivalent Bit Bucket 10 user package, you can install their Git Server on your own systems, with all the bells and whistles, for only $10 a month. Private, safe, secure, in-house Source / Version Control problem solved.

So, when it comes down to it, if you are not using it??? 
Why the hell not?

If you really think its too hard, then you're in luck, because on top of all of the hundreds of tutorials, bootcamps, walkthroughs, training seminars, and more… I'm going to do a Dummies Guide to Git - Using Bit Bucket.

They say the best way to learn something isn't to use it, but try and teach it… so I'm going to create a series for those who need the refresher, or learning from new… and those experts, who have been using this for years, and can't believe there are a few slackers out there like me, chime in with your input, I'm no expert, and I'm sure there are lots of stories, advice and tools you can share with us Dummies, so chime in.

I'm loving it already, and I'm sure I'll love it more when it saves my ass a few times in the future.

So, whats your excuse?






by Dan Skaggs
11/06/2013 06:28:04 AM

I might add that there's another alternative to Atlassian Stash if you're looking for a Git solution you can run on your own network. GitLab ( is a free management interface laid over Git that you can run on your own network. It supports quite a few of the features that GitHub does (issues, pull requests, wiki, etc). They have wonderfully detailed install/upgrade instructions on their site. We've been using it at my employer for a little over 6 months with a team of 4 and it's been wonderful.

by Doug Cain
11/07/2013 08:56:46 AM

VisualSVN is a super simple subversion server for windows if your not inclined to GIT.

Also amazingly free with plenty of subversion support in Eclipse etc. it all becomes part of your workflow in no time.

by Mark Gregory
11/08/2013 11:17:22 AM

There are also some for-pay services that are pretty interesting. I implemented source control through Beanstalk at a shop with about 10 devs not too long ago. Beanstalk integrates with some other cool stuff, and has some deployment management features as well. For a team that was going from no source control, it was perfect.

Blog Search