Subversion: Initial Impression
In the last few days, I have played a little with Subversion. I admit that I’m somewhat of a sucker for configuration management / version control systems. Up to now, I’ve had the opportunity to work with CVS, VSS, StarTeam, and Perforce (I’m not even counting RCS). Out of these tools, the only one I really dislike is VSS, as it its file-based (rather than true client-server) approach severly limits its scalability. CVS, the de-facto standard for open source projects as well as many commercial ones, is certainly a solid tool, but it does have its shortcomings, such as the inability to version folders or to move or rename files. Its branching and merging is also somewhat awkward. StarTeam is my favorite tool in this regard, as its floating branches are extremely powerful in any project that requires maintenance of several major release branches. It also has some great bug tracking and task management features, which can be nicely integrated with the configuration management. Perforce is another very solid configuration management system. I have not had much exposure to its branching and merging features, but I believe that those are handled very similar to CVS. One of the things that sets it apart from similar tools is its support for changelists, which allow truly atomic checkins that are (for example) tied to a particular bugfix. Of course, both StarTeam and Perforce are commercial tools and therefore usually not an option for a startup. And as always there is some great stuff going on in the open source community.
Subversion attempts to replace CVS and directly addresses most of its shortcomings, while providing a similar command line interface. A few days ago I have replaced my personal CVS server with a Subversion server, and the process was pretty painless. One of the interesting things about Subversion is its ability to piggy-back on various servers for remote access. It provides a lightweight server of its own, but it can also be used in cojunction with Apache, by using the provided Subversion WebDAV module. There are also a fair amount of Subversion clients available and under development. I have found TortoiseSVN an excellent client for Windows systems. It contains both repository management as well as local Subversion sandbox management functionality. The Subclipse Eclipse plugin also appears to work flawlessly.
I have not used Subversion enough to comment on its branching and merging features or other advanced functionality, but I can say that it is just as easy to use as CVS with basic operations, and moving or renaming files or folders works as advertised. The underlying concepts are quite different, so make sure to read up on it in the excellent and free (!) O’Reilly Version control with Subversion book.
If you are starting a new project and planning to use CVS, you should strongly consider using Subversion instead. Of course, there are several other free version control tools out there, which you may want to investigate as well. For example, GNU Arch comes up every once in a while. Here’s a link to a list of free version control tools.
October 24th, 2004 at 8:35 am
I’ve been using Subversion at home for a little while now and found it much nicer than CVS. The fact that you can move files around without loosing the version history is huge. Now if they could keep up with the Intellij folks ever changing plugin APIs!
October 24th, 2004 at 12:36 pm
Glad to hear that Subversion works well for you. It definitely looks very promising. Are you using Svn-Up? It looks like they have versions for both IDEA 3.x and 4.x, but I haven’t tried it yet. I love IntelliJ IDEA, but recently I’ve been playing with Eclipse a lot, and the Subclipse plugin appears to work quite well.
July 12th, 2005 at 12:45 pm
I’m using subversion for about one month and it works better than CVS, especially for binary files it’s a great choice.