M1W7 – Version Control

My Version Control Story

I first started using version control software in around 1997, and straight away it was an absolute revelation.

I could immediately see the benefits, both as an individual, but more importantly when working as part of a larger development team.

I cannot think of one single project, either as a game developer, or a professional application developer since then that has not been put into some sort of version control software. Even the simple 100 line utilities.

The blocks below explain the stages of my journey. I will explain the pros and cons as I see them in another entry

Before Version Control

Hopefully this absolute worst case scenario (OK it turns out alright in the end) be a lesson into how important version control is.

When working on a multi-programmer project, when features were complete, which we would be working on separately, we would have “merge meetings”. We would all have noted which source files we had worked on, and we would put them onto a floppy disk.

We would all then take turns sitting with the lead programmer, and opening his version of a changed file, and your version of a changed file in This would highlight the differences in the files, and the lead programmer would then merge your changes into their master copy of the source code. This would be repeated for all files for all programmers on the project.

The lead programmer would then create a copy of the master project, and then go round everyone else’s PC and delete their current copy, and put a new one on there.

With that background in place one day a project just me and the lead programmer were working on got lost. For some inexplicable reason the lead programmer deleted his master copy, then mine, and when we tried to copy from the floppy disk, it was corrupt. We had lost, at that point, 6 months of work.

We had to go and buy some file recovery software, which was pretty successful. The only file that could not be recovered was one of mine, which I luckily had backup of from the previous week, and only lost half a day of work.

This was what prompted us to start looking at version control software.

Visual Source Safe 5/6

My first experience of version control was with Microsoft’s This, as stated, was a game changer for us. At the simplest level, it was a database of source files, and you “pushed” and “pulled” files to and from this database, as and when you needed them.

Ordinarily, you would make changes to a file, save it then push it, so a single source files would have a complete history of saves from day 1. This enabled us to quickly find how and where bugs had been introduced by reverting back to a previous version, and it enabled you to view any two versions side by side, like you could in WinDiff.

What was also ground breaking for us at the time was the ability to “label” versions. What this meant was that at key points in development, like a milestone (alpha or beta maybe) you could apply a label to every file within a project. Then at a later date you could recall specific labelled versions. We often used this feature when we had to deliver press builds. We would pull the press version, build, distribute, then go back to the latest version.

I still, to this day, have my VSS6 repository on my NAS drive here at home.

Team Foundation Server

I found Visual SourceSafe to be entirely adequate whilst working in the games industry in an office with other people, and whilst working solo on projects outside the games industry, right up until around 2010, when the need arose to work in teams again, but remotely. As VSS6 needed to be installed on a local PC/server, this meant it was no longer a viable option.

The answer was Team Foundation Server, which was the natural successor to VSS and worked in a similar way. The bonus with this though was that it could be set up on a web server, meaning it was ideal for remote teams who needed access to the same project.

As it is so similar in concept to VSS, there really is not a lot to add. I still have projects stored in TFS today (around 50 in total), but I am slowly transitioning them across to what is probably now the biggest and best known version control system. GitHub.

GitHub

Now, every project that I set up both personally and professionally, is done so in GitHub.

I will say right from the outset that for a long, long time I hated GitHub. With a passion. I just couldn’t get to grips with it, and didn’t like the way it “worked” when compared to TFS.

Now I understand it more, and with the help of great tools like The way that GitHub works as well makes it more resilient to disaster than maybe some other version control systems.

Perforce

The only other version control software I have used is Perforce, but this was only a trial, and was a long time ago. I can remember very little about it apart from it was ideally suited for all aspects of game development, but had a tricky learning curve and was difficult to install and set up.

I think I might have to go back and re-evaluate this at some point.

TortoiseSVN

Another one I used very briefly was TortoiseSVN 4 which I had to use during one of the modules during my OU BSc (Hons) degree. Again, because I did not use it extensively I can remember very little about it outside me constantly comparing it to VSS and TFS and finding it coming up short.

Sources

  1. Docs.microsoft.com. 2021. How to Use the Windiff.exe Utility – Windows Client. [online] Available at: <https://docs.microsoft.com/en-us/troubleshoot/windows-client/shell-experience/how-to-use-windiff-utility> [Accessed 19 March 2021].
  2. Docs.microsoft.com. 2021. Using Visual SourceSafe – Windows drivers. [online] Available at: <https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/using-visual-sourcesafe> [Accessed 19 March 2021].
  3. GitHub Desktop. 2021. GitHub Desktop. [online] Available at: <https://desktop.github.com/> [Accessed 20 March 2021].
  4. Tortoisesvn.net. 2021. Home · TortoiseSVN. [online] Available at: <https://tortoisesvn.net/> [Accessed 20 March 2021].

Leave a Reply

Your email address will not be published. Required fields are marked *