Saturday, March 31, 2012

Revision control for non-programmers

"Revision control, also known as version control and source control, is the management of changes to documents, programs, web sites and other information stored as computer files."

Revision control software is mostly used and created for software development, but I think almost everyone working with digital projects (from thesis/research to website or graphical design) can benefit from learning a revision control system. Problem is that all tutorials and examples focus on more advanced functions used in software development, which makes it harder for non-programmers folks to learn.

Revision control creates a snapshot (revision) of all your selected project files when you decide to "commit" (update) changes made since the last snapshot. You also provide a short log message about what has changed and why, for later reference.
This creates a history with comments of all major changes. You can easily switch between different snapshots, for example, when you fucked up.
It's like wikipedia page history, but for you project files. 

Revision control software has reached a mature third generation. Most are free, cross-platform, open source and with a nice graphical user interface.

TortoiseHG, interface for Mercurial.

It is easy and useful to use for your local projects. The full power kicks in when you work in a team, then you can all work on the same files, at the same time, and have a complete history of who changed what and when. With a few clicks you can host a server such that others can get your project, make changes and commit these back to the server.

It is a bit difficult to get the terminology and full concept when you are new to it, but should not take long and it is simple in the end, like riding a bike. It's a must use for programmers, but it may be very useful too in other fields (science/research, engineering, graphical design) , while used very little.

You may not want or need it right now, but I think it's good for many of you to know there are excellent revision control solutions available that I enjoy using. It's pretty cool to see a full timeline of your thesis project, when you were most active, or were stuck in problems. And it can save lots of time when you can switch to a previous working version. In teams it creates a central point, communication and traceability.

Do any of you already use some sort of revision control? See any need for it? I like Mercurial with TortoiseHG best at the moment. These applications will improve and last for a long time.


pimp-a-lot bear said...

This looks interesting!
I haven't used revision control so far in my work, but I agree there it could help organize my work a little more. Already I have faced the mess of different versions of code, documents or configuration settings, something I'm not particularly looking forward to.

I'd like to try version-control, although I'm not sure whether mercurial with tortoiseHG and its de-centralized model are the right solution for me. But I assume you'd also benefit from such a model when ou are using different machines in your work.

Anyway, I'm now installing it, I'll let you know how it is progressing.

annom said...

Brave man!

You don't need to use the decentralised nature of mercurial if you are a single local user. Just ignore the push and pull functionality and only use commit. If you use different machines you can easily share the repository with "hg serve". Then you can't ignore push and pull anymore though.