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.