This doesn’t seem like very controversial topic!
The number of arguments I’ve gotten into recently suggest otherwise! Regardless, even if you are a seasoned programmer and understand the value of using revision control I’ve run into a lot of indie devs who don’t quite understand why the extra effort has value.
So this is a blog post about value – specifically long term value.
What are the naysayers nay… saying?
It’s not just for code! It can all go into a repository. You may not be able to have the granularity of control and comparison over some binaries as you do over “plain text” files like source code, but that doesn’t mean it doesn’t add value!
The main arguments against revision control seem to be:
- I’m the only person working on the project – it’s not a big deal!
- I can remember my project’s entire history in my head – no biggie!
- I have DropBox!
- It’s just extra work for no gain!
Wrong, wrong, wrong, and holy hell no.
It does not matter if you are the only person working on a project. Future you is not current you, and future you is going to stumble across something current you left behind because 1) You made a mistake, 2) You forgot something, 3) You made a decision that made sense at the time but was made obsolete or invalid.
You cannot remember your project’s entire history in your head. I’ll bet you can’t even tell me what those four bullet points were. Go ahead – I’ll wait. Don’t cheat. You cheated, didn’t you?
DropBox is not revision control. It is sharing/backup software. It’s good for what it is. There is limited utility for getting old copies of files, but it cannot handle all the other basic functions of revision software, e.g. branching, merging, tagging, conflict handling, et cetera.
It is definitely extra work. The value is that you can access all those historical actions. You can pull up different versions of your work, branch to prototype on stuff, label builds, and generally be more organized with your work flow.
Future You Wants to Talk
You could make manual backups – that’s a large part of what revision control automates for you, though. Have you ever wanted to:
- Revert files to older versions?
- Had to maintain multiple versions of files?
- Compare changes in different versions of files?
- Compare performance or other metrics in different versions?
- Had multiple people working on the same files?
- Work on something that might muck up existing files?
- Have a history of what you did and why you did it?
- Had incremental backup that doesn’t require constantly copying everything manually?
Then you might want to take a closer look at revision control. Broke something? Look at the commit history. Chopped off that ugly block of code that you thought you’d never need again? It’s okay – you can still find it. Refactored a bunch of stuff and broke all the things? You can completely revert as an absolute failsafe.
I draw stuff! I use a typewriter!
You don’t use a typewriter, you liar. But okay, a lot of that seems to be for programmers and for code – plain text files! What about artists? What about crazy file formats?
Handy, no? And you can compare every single graphic version with every other. You can see how stuff changed or revert to an older version. You can even set other external programs like Photoshop to diff for you.
But I don’t want to mislead you. Current revision control really shines for “plain text” files. For example if you compare versions of a file in Rich Text Format, you’ll get something that looks like this:
That’s because by default Subversion (the revision control software paired with TortoiseSVN I’m using in these screenshots) simply treats .rtf files as plain text. You can set file extensions or mime types to use designated programs (such as MS Word) or pre-existing scripts (like diff-doc.js in the case of .rtf files) to diff them properly.
If you’re silly like me and still use Open Office you might diff your .rtf files this way:
Very. Another popular flavor of revision software is Git. You can manipulate files in similar fashion as Subversion, it’s just called Attributes instead of Properties. A Google search will get you more information than you can shake a stick at.
Unfortunately I’ve never had to try to diff other file types like .wav, .mp4, or .ogg; audio/video stuff. I’m also not too familiar with audio tool chains and needs – maybe someone who is can enlighten me!
The point I hope you take away is that revision software is valuable not just for incremental backup and workflow, but also if you’re not a programmer.
Thanks for reading, Mister Bums