Some days ago I finally remembered to install GIT, a quite recent Version Control System built by Linus Torwalds (does anybody know him?). The logic behind GIT is quite different from those commonly used to manage the Versions of the source code. The most important difference is that there is no central repository: you do not have a main server where all your code is stored, available to everyone. GIT uses a distributed system, where everyone is server and workstation at the same time. If this can be quite scary, it is a complete different approach after all, I think that it is quite brilliant! If you want to have the “central repository” on a specific server, you can always copy one repository in a single server, but just for backup reason…
How many times you needed to create a branch of a specific code, just to test something, merging the modification with another version modified by someone else. Never, I bet, because only to think about it with CVS or SVN (not talking about the shitty SourceSafe) it is a pain. Even with SVN, which should be more user-friendly, it is not. With GIT you can do it easily: I’ve taken some code I had and I started playing around. EASY!
More than this GIT is much more faster than SVN. Having the main repository on your machine means instant commit, means that you work on YOUR branch, completely, and you can commit whenever you want, not only when you have tested everything! I am one of those who thinks that in a SVN style version control system you should update your code only when you are sure it works, otherwise those who will download your modifications will find themselves dealing with a bugged code. I think so, but I do not think this is a good solution, because I believe that a good tagging on the commit is the best way of keeping track of the changes (and the reason of the changes) in the code. GIT welcomes the idea of “commit every time you want” because when you have finished everything you needed to do, committing 1.000 times, you can send your branch to those who need it. Plain and simple.
If you are a developer I strongly encourage you to take a look at it. It may not be as perfectly supported as SVN, but it is much faster and merging/branching is a child game!