.. -*- mode: rst -*-

.. _server-plugins-version-svn:

===
Svn
===

The Svn plugin is useful if you would like to track changes to your
Bcfg2 repository using a `Subversion <http://subversion.tigris.org/>`_
backend.

As with the other Version plugins, the Svn plugin enables you to get
revision information out of your repository for reporting
purposes. Once the plugin is enabled, every time a client checks in,
it will include the current repository revision in the
reports/statistics.

Additionally, if the ``pysvn`` library is installed, the Svn plugin
exposes two XML-RPC method calls:

* ``Svn.Update`` updates the working copy to the latest version in the
  repository.
* ``Svn.Commit`` commits any changes to the working copy back to the
  repository.  In order for this to work, the user Bcfg2 runs as must
  be able to commit to the repository non-interactively.

Enabling the Svn plugin
=======================

Simply add Svn to your plugins line in ``/etc/bcfg2.conf``::

    [server]
    plugins = Bundler,Cfg,Metadata,..,Svn

Resolving conflicts
=======================

By default, the Svn plugin does not attempt to resolve conflicts
when trying to commit or update the repository. This can be changed by
adding to ``/etc/bcfg2.conf``, e.g.::

    [svn]
    conflict_resolution = theirs-conflict

The possible values of ``conflict_resolution`` are:

* ``base``
* ``postpone`` (default)
* ``mine-conflict``
* ``theirs-conflict``
* ``mine-full``
* ``theirs-full``

The other possible SVN conflict resolvers (``edit``, ``launch``,
``working``) require manual intervention and so are not possible.
Descriptions of each action can be found in the `Version Control with
Subversion
<http://svnbook.red-bean.com/en/1.7/svn.ref.svn.html#svn.ref.svn.sw.accept>`_
book.

