posted by Eugenia Loli on Fri 20th Feb 2004 06:00 UTC
IconOn Monday, the Subversion project is scheduled to release version 1.0 of their version control system, under development for several years now. Subversion was intended from its inception as the CVS replacement and it comes with many important features previously found only on commercial VCS like Perforce. It was designed for better remote performance, and it is multi-platform with a GUI/CLI front-end.


* Directories, renames, and file meta-data are versioned.
* Commits are truly atomic.
* Apache as network server, WebDAV/DeltaV for protocol (separate standalone server also available)
* Branching and tagging are cheap (constant time) operations
* Natively client/server, layered library design
* Client/server protocol sends diffs in both directions
* Costs are proportional to change size, not data size
* Efficient handling of binary files
* Parseable output

Features to come post-1.0:
* Support for symbolic links
* Better merge support (currently same as CVS')
* Broader WebDAV compatibility
* Support for plug-in client side diff programs

Interesting PowerPoint presentations explaining the features and the goals of Subversion: 1, 2.

More features and comparisons at the big VCS shootout.

Quick Tutorial:

Create a new svn repository, e.g.

$ cd /home/eugenia
$ svnadmin create svn
Populate your new repository by using an existing folder with your source code:
$ svn mkdir file:///home/eugenia/svn/tetris-sharp -m 'Create Tetris project'
$ svn import file:///home/eugenia/svn /home/eugenia/tetris-sharp tetris-sharp/trunk \
-m 'Initial Import of Tetris project'
The text accompanying the -m knob is added to the log.
To start working with your code you will need to checkout some files.
$ svn checkout file:///home/eugenia/svn/tetris-sharp ~/tetris-src
To commit a file just use one of the following. Please note that Subversion requires log entries each time you commit something.
$ svn commit *.cs -m "commit all .cs files"
$ svn commit *.cs data \
-m "save all .cs files in the current directory and everything in the tetris-src/data directory"
$ svn commit -m "commit all files that have changed since my last commit"

There are much more to explore in the very detailed Subversion Book.

e p (0)    43 Comment(s)

Technology White Papers

See More