In the world of Open Source development, cvs has been the reigning champion for version control. Most every major Open Source project finds its way into a cvs tree sooner or later. But now, there is a new contender; a new kid called the Subversion Project looking to knock the champ down.This week, Greg Stein and Karl Fogel talked about the Subversion Project to the Silicon Valley Linux Users Group.
"The stated goal of this project is to take over the cvs user base," Fogel said. Subversion developers intend to learn from cvs' example, and put those lessons to work.
While cvs has served the Open Source community well, it has several shortcomings that have plagued its users, critics say. Commits to a cvs repository are not atomic, which can cause problems if a commit fails midway. Cvs doesn't handle binary data well; instead of storing the diffs between two versions, it stores each version of the binary whole, wasting disk space. Network connections to cvs are expensive, in that cvs commits must transmit whole files back to the server. Subversion addresses these issues and more, say its backers.
Subversion handles binary data with particular skill. Using its own diffing algorithm, Subversion stores diffs of binary data, and provides hooks in the system so that the structure of the binary can be defined by the user.
The handling of binary files by Subversion is particularly attractive to Web developers, who must often keep track of dozens of image files as they build Web sites. This feature of Subversion was well met by the LUG members in attendance.
Subversion's commits are atomic; that is, either the entire commit occurs, or none of it occurs. This prevents against source-tree corruption by developers who lose connection to the repository in mid-commit. Atomic commits are extremely important for Open Source projects that have developers across the globe, because a dropped network connection tends to be a common occurrence. The LUG audience applauded when the presenters explained this function.
Subversion is optimized for performance, particularly for network interactions. Subversion uses Apache 2.0 with mod_DAV for its network server, which allows for many orders of magnitude more concurrent interactions with the repository than cvs' pserver does. All data sent to the server during a commit is in the form of a diff, so Subversion makes good use of network resources.
Subversion keeps track of everything in the repository; it version-controls directories, files, and user-defined meta data. Moving and deleting files and directories under Subversion is a snap, Stein and Fogal said. Their explanation that you can delete a directory under Subversion was met by applause and laughter from the crowd (under cvs, you have to manually delete the directory; cvs will not delete it for you). Subversion project leaders also plan for support for symlinks.
Stein and Fogel ended the presentation with a demo of Subversion, in which the LUG was shown exactly how easy it is to add and modify files under Subversion's control.
Subversion is jointly developed by programmers employed by Collab.net and volunteer developers worldwide. While Subversion is "not ready for prime time" yet, development is going very quickly. Alpha quality code is scheduled to be completed in late May, Fogal said.
For more information on the Subversion Project, or to contribute to the development effort, see its home page at http://subversion.tigris.org. For information about the Silicon Valley Linux Users Group (SVLUG), see http://www.svlug.org.
NewsForge editors read and respond to comments
posted on our discussion