August 27, 2012
Oooh! Reader mail!
"Upcoming Entrepreneur" writes asking whether Git is relevant for an unreleased, one-man development project.
From my standpoint, once you've got a 1.0 release of your software product, Git makes perfect sense to help you better control hot fixes, feature branches, and major version releases. ... Am I crazy to think that I shouldn't bother with Git until I release a 1.0?
So, just how much value does version control, and especially industrial-strength version control like Git, add to something that you're working on alone and hasn't even hit production yet?
Here's what a distributed version control (DVCS) system, like Git or Mercurial, is good for at this stage of a project:
Letting you back out of a poor design choice. Truthfully, I've only taken advantage of this when I had the foresight to branch before heading off in my ill-fated coding direction.
Helping you learn and practice DVCS before you're in production. Make no mistake, once your project grows to multiple people or gets actual clients, you will need Git or Mercurial or something similar. Learn now while mistakes are cheap to fix. As you've discovered, there is a learning curve, and there is a difference between using your DVCS like a butter-knife and actually wielding it like a double-bladed axe of coding justice.
Integration into your automated testing and deployment infrastructure. I use Git repositories to manage the deployment process of several projects and it's a nice way to do that. There are alternatives of course, but if if you've got the axe already...
Modern editors and IDEs sometimes give you simplified alternatives to DVCS. Xcode has snapshots, AppCode has Local History, and so on. Frankly, I was never interested in these because they're really just safety nets for use when you don't commit often enough. You won't need them once you are using your DVCS well (committing often, branching and merging or abandoning fearlessly, etc.). And like I said, you will need Git or something like it eventually.
If you really hate the Git command-line, by the way, there are alternatives. Mercurial is well regarded and has been called a somewhat saner approach to the whole thing. There are also nice graphical clients (I use SourceTree) but try to force yourself to stay on the command-line for as long as you can... you will learn faster.
Thanks for writing in "Upcoming Entrepreneur" and kicking my butt back into blogging. I took this as an excuse to scratch an itch and put together a simple static blogging engine based on Dropbox ... because it's all the rage.
More questions? You can always reach me on Twitter @genegoykhman.