During the 13-14 years I’ve worked as a developer, I’ve been storing the source code to various different systems. In the first company I worked in there was no version control software whatsoever. All source code was mostly on developers’ workstations and was synchronized on a network drive on irregular basis. Needless to say, that was the worst way of working this far.
On year 2000 I changed workplace. The new company I worked in was light-years ahead in what came to software development practices. They had a development process! And a coding guideline! And, imagine this, a version control system for storing the source code!!!
The VCS we used at that time was Microsoft Visual SourceSafe, I think it was version 5. VSS kinda worked, but we had numerous problems with it, worst problem being unstableness. The system was offline about once a week as the database needed to be re-indexed or something. Occasionally we lost some data and there were no good tools available to e.g. solve merge conflicts.
It was a big step forward as we moved to CVS. That was the first time we started to outline a central build server. Move from VSS to CVS was a big change and it took a long time until we could retire the old VSS server. It wasn’t long after that when some teams started to move to SVN. Move from CVS to SVN was painless and quick, although we still have some legacy source code stored in CVS.
SVN has worked for us fairly well, but now after running a multi-team project where lots of people handle same source code daily, we’ve reached the point where SVN cannot cope with our requirements.
Also we’ve noticed that we have way too many SVN repositories and even few old CVS repos. So we’ve set a couple of goals for the new VCS:
1. We must be able to store all source code on the same system
2. VCS must support our way of working with multiple scrum teams
3. R&D, instead of IT, must be able to control access to different parts of the source code.
4. Transition process must be as easy and painless as possible
So the hunt for A Better VCS(tm) had begun.