The primary aims are to keep as much cash in my pocket rather than putting them in some vendor's pocket and that it has to scale up.
What can scale up better than source control system that are routinely used by Internet Open-Source communities? Hence there are CVS and Subversion. I have used CVS and not at all impressed with it and since Subversion (SVN) is a replacement of CVS, I will concentrate on it instead.
The other on offer is VSTS with TFS from Microsoft. Since my MSDN subscription can let me use this and that it is a fairly common toolset, I will also explore this one too. The fact that it is becoming like a giant octopus reaching out and trying to be a tool for everything worries me. Others such as ClearCase, I can't afford and my dislike of it has subsided considerably after my discovery of TFS as revealed below.
There are enough centralised materials on TFS that need not be repeated but Subversion route is more interesting and is free!
One of the things that stunned me when looking at VSTS/TFS as a VCS is that it has taken away the facility of keyword substitution of things like $Revision:$, $Date:$ or $Log:$ (keywords available in VSS) in the source file to brand it. They are god-send when you have a few copies of them lying around.
In these days of ubiquitous USB memory drives, the chance of having a few copies of the same file is extremely high. Without any form of identification, you will be spending hours resolving the differences.
To me, this is a philosophy that someone is trying to ram that into the customer's throat and is a classic example of "Why Software Sucks...". The fact is that the repository has all these pieces of information and the software refuses to allow the users to use them as they see fit. Their developers should be reminded that "You are not the user" principle.
This is not just VSTS/TFS dogmatic approach in pursue of their philosophy but out of the box, ClearCase does not support this too. But at least in ClearCase, one can add a script that is called when one checks in a file to extract those information from the repository and injecting them into the source file. Microsoft, I hope you are listening.
It is also interesting to compare the philosophy used in Subversion in managing the versions.
- It is very similar to that used in TFS.
- It treats a set of files/folders as a tree rather than file by file as in CVS.
- It is also atomic - meaning that if one file in a set fails to check in, the whole set will not get in.
- The revision number applies to the entire tree not really to a file.
Good to see SVN developers that are considerate and not pushing one's philosophy down one's throat.
This alone wins me over immediately.
For Windows users, one of the disadvantage with early CVS was that there was no GUI client. SVN has fixed all that. The best is the Windows Explorer plug-in called TortoiseSVN.
For those that live day in day out inside Visual Studio, help is also available in the form of an add-in.
Finally, the Windows version of SVN with an installer can be downloaded from here free.
Armed with all the materials, I am off to explore the world without VSS. Stay tune.