David Kramer david at
Wed Aug 9 23:54:40 EDT 2006

Stephen Adler wrote:
> Guys,
> I'm in the midst of setting up a project and I'm thinking of migrating
> away from CVS and using subversion. Does anyone have any thoughts on
> this, or any comments? Anyone with experience using subversion, if you
> could comment, I certainly would like to read them.

Yes.  My most important piece of advice is, when you dance in the
streets celebrating how much better your life is with Subversion of CVS,
watch for oncoming cars.

I've [evangelized and] installed Subversion at two different companies,
and am in the process of reinventing how my current company uses it.

A few more features it offers:
- Shallow copies: When you do a copy/branch/tag, it does the moral
equivalent of symbolic links.  You could make a tag copy of your entire
source code set every day for a year for a few hundred K.

- Hooks to perform actions on the server.  Checkout hooks, pre-commit
hooks, and post-commit hooks allow you to put your own logic for
copying, logging, enforcing rules for checkins, locks, etc.

- Multiple wonderful front ends.  The http:// and https:// interfaces
were already mentioned.  For our Redmond-encumbered brethren, there's
TortoiseSVN, which plugs right into Windows Explorer.

- Multiple back ends for storing revisions.

- Multiple IDE plugins, like for Eclipse.

- Flexible locking schemes.  My preference is for "none", but there's
advisory locking, hard locking, and pre-commit-hook locking (you can
implement whatever your twisted mind devises).  For instance, at one
company, a pre-commit hook would check that if a file being checked in
has a certain property, the file can only be checked in by a particular

- Built-in cleanup facilities when your data's had a long night of
partying and gets a little tipsy.

- Moving files and directories around the repository while maintaining
their history.  Oh, and when reviewing the change log of those files and
directories, you have the option of stopping at when it was copied, or
continuing on to the first revision of the file.

- The command line client has special identifiers to automatically refer
to the first check in, the last check in, and the check in before the last.

- You can export the repository to a human-readable text file, and even
edit that text file and rebuild the repository from it.  This is handy
if you need to make radical transformations of the arrangement of files
and directories.

- This is an open source project with tons of documentation and even a
real live book.

Should I keep going?

More information about the Discuss mailing list