Category: Version Control

Shitty finding of the month: VSS hates special characters in file name

Just so you still-stuck-in-VSS-devs know that if your file name contains certain valid Windows file name special characters, such as the percentage “%”, then you’re doomed for not being able to add that file to VSS since the genius source control doesn’t do special character escape while executing the check-in command and will politely show you the syntax error dialog box:

VSS showing syntax error when processing files with special characters

Now, wag your finger to you-know-who.


Best SVN options out there?

First of all, let me vent this: VSS sucks, period. What was the latest release of it? VSS 2005. It was 5 years ago and Microsoft never released updates to the server knowing that it corrupts source files on a regular base.

Now, back to the topic. Why I went for SVN at last? VSS’s successor TFS is not a bad option either but it’s not just expensive but also only available on Windows Server 2003/2008. So individual developers or small business would (most likely) never consider it as a viable option. SVN is like Linux in the OS world, it’s open, and has a lot of free and wonderful implementations. With different options out there, you can almost get the same result as using TFS, and maybe even better.

Let’s focus on version control this time. In my opinion, the biggest advantage that SVN offers over the legacy VSS is branching. Multiple developers can create their own branch of a project and work on it without been disturbed by other people’s change, and merge their works back to the main tree later on. There are a lot of free SVN servers and clients out there that provide you comprehensive support for this model.

If you are an individual developer

You should consider one of the best free SVN client out there: TortoiseSVN. TortoiseSVN is a Windows Explorer shell extension. It integrates into the right click menu in Explorer:
TortoiseSVN Menu

The best part about TortoiseSVN is that it is capable of creating a local SVN repository itself. So you don’t need to install an SVN server. If you or your team is working within a LAN environment, you can simply create this reposition at a shared folder and have everyone else connect to it. It has a repository browser comes with it and supports all features you could possibly need for a small team.

If you are a .NET developer, then the downside of TortoiseSVN is that it’s not a plug-in for Visual Studio. So you don’t get the nice menus. But fear not my warriors, CallabNet has a perfect VS plug-in for you, and it’s free: AnkhSVN.

Let’s use Visual Studio as an example. After installing AnkhSVN, you get the nice right-click menu in your Solution Explorer, as well as a Subversion Repository Explorer accessible via the toolbar button AnkhSVN Button or by pressing Ctrl-K, R.
AnkhSVN Visual Studio Menu

AnkhSVN works with any SVN repository including the local repository created by TortoiseSVN. Essentially making it a local equivalent option to TFS when everything’s still completely free.

If you are in a team environment

Honestly, IMO, the above mentioned option suits a lot of collaboration needs for a small development team already. But in case a proper SVN server is required for external access via HTTP or HTTPS, there are 2 excellent free options out there as well:

  1. CollabNet Subversion Edge server. If you are going for AnkhSVN, you should also consider there free SVN server. It has a web management interface and sets up a HTTP service for any compatible SVN clients.
  2. VisualSVN Server. Similar to CollabNet Subversion Edge but providing HTTPS capability as an extra. Also comes with a management application instead of using a web interface. While this server is free, their Visual Studio plug-in is not. But, the server works with all compatible SVN clients like AnkhSVN and TortoiseSVN.