File Organization & Version Control [part 3]: What is Version Control?


[previously - part 2, part 1] [next]

We've gone through the effort of assembling and organizing all our SketchUp related files - finally we're ready to consider version control. So what is it? Version control is sometimes known as 'revision control' or 'source control' and it is a method or application for managing the change history of a document or program. Software developers who work in teams on a project always use some kind of source control so that they can all work at the same time, often on the same code without stepping on each other's toes and canceling out each other's work.

"So what?" I hear you ask. "I work alone on my models and they aren't code." I understand that version control for your SketchUp models might seem like over kill but consider this; have you ever resumed work on a model and after several hours of effort you realize you have corrupted some component of you model. You really would like to go back to the model as it looked yesterday and copy the good example of that component into the model as it stands this afternoon. Perhaps you have a backup of the file from yesterday somewhere and you can use that, but what if you want to look at the model as it was 6 months ago? Do you even have a copy of the file from then? Or what if you've been working on a model in the office for the last week and you need to finish some work on it this weekend on your home machine? When you return to the office can you be sure which file is the latest and greatest?

In its simplest form you can implement a form of change tracking just through strict working practices. My wife is a writer and she understands the importance of tracking all versions of a document she is working on but the idea of a 'real' version tracking system frightened her. Instead she established a manual version of a change tracking program which works like this:
  • Each document she works on resides in its own directory so when she starts work on a new document she creates a new directory to house it and all its future versions.
  • When she resumes work on a document her first action is to save that document with an incremental number in its name e.g. the first version of the document is filename_01.doc - when she opens the document next time her first action is to save it as filename_02.doc.
With this method in place she can always go back to a previous version of her document and she always knows which version is the latest and greatest (the 'head'). It works and you could easily use a similar working practice in SketchUp to keep track of your work but it does have some diadvanatages. It takes time and effort to keep your files in line and you can end up with a lot of directories filled with a lot of versions of the same file which is all noise that you have to filter, process and deal with. Also, it does not deal with the multi-machine working environment very well.

You may already have a privative style of version control in place on your machine and not even realize it. In my house we have both Windows and Mac machines. The Windows PCs are automatically backed up nightly by, and on to, a Windows Home Server (WHS) device. In in similar fashion the Macs back themselves up using Time Machine to an external drive. I won't insult your intelligence by lecturing you on the importance of automatic, daily backups of your data if your work is at all important to you. What these automatic backup devices and applications provide is the ability to see how a file included in the scope of the backup looked yesterday, or last week, or last month. In a pinch these systems might get you out of trouble but they do have a lot of potential problems if you are relying on them for your change tracking. To begin with, the distance you can go back in time is limited both by your storage capacity and by the settings in your utility - at some point the program will delete an old version of your file to make room for more modern backups. It also doesn't help cross machine situations especially if those machines are not in the same location.

So we finally end up knocking at the door of dedicated version control software. Don't be intimidated, it is not as scary as you might think. It doesn't have to cost you anything and, once you've got past the initial setup time and you understand a couple of new working practices you will be able to set it and forget it, smugly confident that you can get to all versions of your model that you have captured and that you will always know where to get the latest version of that model from.

Version control applications consist of a central, shared model or database of all your files and all their versions. Think of this repository as the vault that holds the source of truth about all versions of your model files. This base structure can then be mirrored on any number of working machines or environments. Once you have finished making changes to a model you can then check those changes back into that central vault. All your other machines that reference the same vault are now aware that that file has changed and that their version of it is no out of date with the source of truth. You can easily see the history of a particular model and look at previous versions of that model for every check in that you have performed. You can bring any machine up to the latest versions of all your SketchUp files, or a specific, individual file, in the source controlled file structure so you can keep all your work machines in sync. If a client asks for a version of the file as it looked last September you can retrieve that file without any guess work. In addition, if you work on your models with one or more designers you can tell who made what changes and when they made them.

Next time I'll describe how I set up TortoiseSVN version control software to support my own working practices as well as making some suggestions for what might work for you.

[previously - part 2, part 1] [next]

No comments:

Post a Comment