Brian talked about Subversion at the OCI monthly Java lunch. (I know, it’s not technically a Java topic, but we digress some months). It was a good presentation, although 1 hour is not enough time.
The truth is, I’ve tinkered with Subversion here and there and fully intend to start using it. I currently use CVS at home and StarTeam at work. None of these is an ideal solution, but I believe Subversion will win people over in the long run. I’ve also used Visual SourceSafe at a previous job, as well as ClearCase a long time ago.
I only really heard of two Subversion limitations:
- The GUIs are not mature - CVS offers good GUIs and tight integration with IDEs. The Subversion IDE integrations are crude in comparison
- Subversion offers no exclusive locking scheme, which is essential in some environments. Don’t get me wrong, I prefer the concurrent editing mode of CVS and Subversion. However, many organizations store lots of big binary files in version control - like Word docs. Merging those kinds of files is either impossible or a pain, at best. Plus, some companies just won’t let you use a tool that does not support exclusive locking. Argue the merits of this if you will, the fact is that some companies just work that way. I heard that exclusive locking will be included in a future release, so it will not be a problem for long.
Subversion has a rock solid version control infrastructure under the covers. Here are some features that many other version control tools - surprisingly - don’t have:
- The ability to version directories.
- The ability to re-add files after you delete them, preserving the old history. StarTeam, for example, cannot do this.
- An efficient branching and merging model.
- Every operation is versioned - things like moves, copies, deletes, etc…
- You can attach arbitrary attributes to any file, which is great for linking files to defects, for example.
Things like first-class GUIs and IDE integrations will be available for Subversion. It will take some time to catch up to CVS, but Subversion will catch up.


