NAME

VCI::VCS::Svn - The Subversion implementation of VCI

DESCRIPTION

This is a "driver" for VCI for the Subversion version-control system. You can find out more about Subversion at http://subversion.tigris.org.

For information on how to use VCI::VCS::Svn, see VCI.

CONNECTING TO A SUBVERSION REPOSITORY

For the repo argument to "connect" in VCI, pass the same URL that you'd pass to your SVN client, without the actual branch name. That is, pass a URL to the very root of your repository.

For example, if I have a project called Foo that I store in svn.domain.com/svn/repo/Foo then the repo would be svn://svn.domain.com/svn/repo/.

REQUIREMENTS

VCI::VCS::Svn requires at least Subversion 1.1, and the SVN::Client perl modules that ship with Subversion must be installed.

LIMITATIONS AND EXTENSIONS

These are limitations of VCI::VCS::Svn compared to the general API specified in the VCI::Abstract modules.

VCI::VCS::Svn::Commit

For added, removed, modified and copied, objects only implement Committable without actually being File or Directory objects. This is due to a limitation in the current Subversion API. (See http://subversion.tigris.org/issues/show_bug.cgi?id=1967.)

PERFORMANCE

VCI::VCS::Svn performs well with both local and remote repositories, even when there are large numbers of revisions in the repository. We use the API directly in C (via SVN::Client), so there is no overhead of actually using the svn binary.

Some optimizations are not implemented yet, though, so certain operations may be slow, such as searching commits by time. This should be easy to rectify in a future version, particularly as I get some idea from users about how they most commonly use VCI.