wiki:VersionControlNotes

General notes on our SCM

We currently use Subversion which is a centralized version control system (see VersionControlLinks for more information about centralized vs. distributed). This has pros and cons which I want to state here briefly.

Pros

  • Everybody has access to a unified central repository.
  • We have a central instance for access control (currently needed). We especially have the ability to control who can commit.
  • Subversion is really easy to use, especially if CVS is known.

Cons

  • Penalizes small commits. On trunk the code has to work for others, so small or even incomplete changes are unacceptable. This hinders a "commit early, commit often" scheme. With the currently used version 1.4 of subversion branching and merging is a real pain so even feature or private branches for development do not work well. This is hopefully getting better with 1.5.
  • Only online commits. This is especially problematic during RoboCup events. If multiple parts of the team need access to the very same repository and there is no internet connection available (unfortunately often the case) then there is always rivalry about the repository server (which will be some laptop). We often ended up with many machines with locally modified version where we had to figure out manually in the commotion after an event which was the current version.
  • Still shortcomings in Subversion. The biggest problem being the branch/merge problem mentioned before and hopefully being fixed by 1.5. Then there is no way to enforce useful autoprops from the repository. The  Subversion roadmap shows a change at the horizon, but not anytime soon.