Archives for tag: software-development

What’s wrong with Revision Control?

March 13th, 2007

It seems like I’m suggesting that Revision Control is the curer of cancer, the saviour of the universe and the answer to life the universe and everything. Well, I wish that it was, cause it would be so easy if it was, but unfortunately it does have it’s drawbacks. Some of these have been addressed in more recent systems, while others are inherently part of the system. I think it is important to note, that I don’t believe any of these reasons are a reason not to use Revision Control but things to take into consideration.

Workflow

As I have mentioned early, there are a plethora of tools that integrate revision control systems into most developer’s workflow. This may be a plugin for their IDE, a program that integrates with the shell of the Operating System, or a command line program that is integrated into the build process. However, while these do smooth the path for versioning bliss they are not the golden bullet. Developer training and smoothlining the process is an important part, as changing the well ingrained habits of anyone is extremely difficult. Usually this only involves teaching them how to check-in and make comments and as they see the other benefits further learning will follow. Software developers, whether they know it or not, love the ability to branch and fork their code, re-use components from other projects and basically reduse the amount of work they actually have to do.

Centralisation

This particular problem, is being targeted at a rapid rate of knots at present due to the distributed nature of Open Source development. The essence of the problem is that often the repository is hosted and controlled in a central position, usually the head office or the main webserver. This causes an issue when someone wants to work “offline”, performing updates and checking in is not possible without a connection. This is relieved to some extent by providing good information of any conflicts when the code is finally checked in, however there can be a small amount of extra work at the time. If the project doesn’t have a great deal of people working on it, this will probably not be a problem.

Databases

Most development in this day and age is associated with a database, and Revision Control doesn’t really provide any solutions to maintain the versions of a database, some solutions I have seen involve maintaining a build script of the database somewhere in the source tree and maintaining a versioned copy of this within the repository. This really is not an ideal solution, but will give an idea of what has changed over time.

Backups

I think it is important to note that while Revision Control does provide some sort of code backups, it does not remove the need to keep backups of the actual repository. It may seem obvious, but the actual server the repository is living on is just as susceptible to dataloss as any other server.