Version Control is a MUST!

Have you ever thrown together a development project to try something out, and then allowed it to grow into a “real” application instead of starting over and doing it right?  I recently made that mistake, which almost became a really big mistake when I did something I shouldn’t have in a hurry. If it wasn’t for using version control, I’d still be fixing my problem instead of writing about it.

I recently needed to develop a web service desktop client application for my employer that would communicate with one of their clients to retreive orders, match them up with data in our database and pass the result back.

Since I had never created a desktop application that communicates with a web service, I cobbled together a VB.NET application just to see how it all works.  Due to pressure to get it done, I continued with the “test” application and turned it into a released version for the users.  But, since it was put together quickly and was supposed to be short-lived, I didn’t follow my normal naming conventions for the objects in the application.  I did, however, take the time to check the project in to it’s own subversion repository. Boy, am I glad I did.

Yesterday, I was adding a report and needed to create a new dataset.  Without realizing it, I named the dataset the same name as an existing form.  Without warning, Visual Studio deleted the designer.vb file for that form.  All of a sudden, I’m seeing a huge list of errors, missing references, etc. in the Error List.  When I realized what had happened, I felt that lump in the pit of my stomach that comes when the amount of time you thought something would take suddenly increased by a factor of ten or more.

But then I realized that I had this project under version control! I deleted the offending dataset, recreated it with a proper name, jumped out to Windows Explorer, opened a repo browser using TortoiseSVN, and dragged/dropped the missing file back where it belonged.  Back in Visual Studio, a quick Add Existing.. put everything right with the world once again.

I use ProjectLocker as the repository host and TortoiseSVN as the SVN client.  The two work incredibly well together. In addition to a subversion repository, each ProjectLocker project also contains an instance of Trac, a terrific one-stop project management solution. Their free account provides 500Mb of storage, up to five users, and unlimited projects.  If you work with only a few clients like I do, this is a great option.  I have tried to get my clients to work with a system like Trac for posting tickets and feature requests, they just never seem to stick to it and revert back to email and phone calls, so I don’t see needing more than five users anytime soon.

One very nice feature of ProjectLocker is the ability to assign users to projects.  Users will only see their projects and nothing else. This allows you to create one or more projects for each client, provide client staff a login for those projects, and not worry that they will see any of your other client projects.

If you’d like to share how you handle version control and what kind of project management you use for your clients, please leave a comment.

Share your opinion! Post your thoughts.

Anti-Spam Protection by WP-SpamFree