Version Control

So yeah. Version control. What can I say? I was a fool. I have used exactly 4 different version control softwares over the ages, but I had never configured a single one of them, and I can get quite lazy at times. But after the affair with attempt number 1 at writing my own code I found some motivation to get something implemented. By this time I had a second personal laptop on which to do development which left the 15 pound beast laptop to use as a server so I started going back over the systems I had used in the past.

I wanted a system that would be a few things:
- Easy to implement. For Version 2.0 I finally had a deadline of sorts.
- Integrate with either the Windows Explorer shell or Visual Studio. I'm sure there are some terrific command line based versioning systems. But again timeline was not conducive to learning all of the commands out of necessity.
- Be free. The first program I'm writing, I'm writing for Veronica for free. Free pays for very little.

As an added bonus these items work well with my proclivity towards open source projects. I don't always actually dabble in the code of such projects, but I like to know that the possibility is there.

In the end I settled on Tortoise SVN. I had used it in my first programming job, it integrated with the Windows Explorer shell, and despite not reading any documentation I was able to get it up and running in under an hour. Also, there is a 3rd party mod to integrate with VS, but the thing was confusing as hell (again, didn't read any documentation). One day I will have the time to figure it out. Adding VS integration to this software puts it well above many I researched which happened not to be free.

The others I could see myself using either in the future or for other projects were:

Fossil: This was easy to get up and running, though I needed to read some documentation. Had some really cool features. It had bug tracking, a wiki, a Web UI, was stored in a single file (easy to migrate). There may have been 3rd party apps to add shell extensions or VS support, but at the end of the day I found myself tinkering with the other features not related to versioning my code and didn't end up actually finding any extensions for it. It didn't help that the Web UI made everything easier with the exception of getting code into and out of it :)

Honestly though, even on a time constraint, if I were writing an open source project to put out on the web, this would have been my choice. Having the online bug tracking and a wiki packaged in with the software are great time saving freebies for a project that is going online. Mine is staying local so this wasn't needed for me.

TFS: This is what I'm currently using at work. Obviously as a Microsoft product, its integration into Visual Studio is unparalleled. The feature set is amazing and it is great to work with. I can say all of this because at work I neither paid for it, nor configured it. Ultimately, I would have been willing to try my hand at getting this beast running if the cheapest way to acquire it weren't so expensive.

I can't think of anything to complain about other than the price tag. Microsoft uses this themselves to host thousands of their projects with thousands of users and millions of files. Basically, it is well tested and very well "endowed". If you can justify the expense or have a large team or many projects, definitely worth considering. By the same token however, it isn't so spectacular that I can't live without it, so for 1 developer with a handful projects and no money I found it very easy to pass on this in the short term.

In the end, I'm thoroughly happy with Tortoise. I have version control now. Version 2.0 of the software is currently in there and it has successfully removed oodles of stress regarding changes. The shell extensions are easy to use and I'm happy to say that I don't think I will ever make the mistake of starting a project without version control ever again.

Comments

Popular Posts