.. -*- mode: rst -*-

.. _appendix-guides-vcs:

=======================
Version control systems
=======================

The sections in this guide only cover the basics steps in the setup of
the different version control systems for usage with the Bcfg2.

Git
===

.. _Git tutorial: http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html

Adding the :ref:`server-plugins-version-git` plugin will allow you to
store version information in the statistics database. For tracking the
configuration files in the ``/var/lib/bcfg2`` directory a git repository
needs to be established::

    git init

For more detail about the setup of git please refer to a `git tutorial`_.
The first commit can be the empty or the already populated directory::

    git add . && git commit -a

While running ``bcfg2-info`` the following line will show up::

   Initialized git plugin with git directory = /var/lib/bcfg2/.git

Mercurial 
=========

The :ref:`server-plugins-version-hg` plugin also allows you to store
version information in the statistics database.

To use mercurial to track your configuration files, the repository must
be initialized::

    hg init

Mercurial will not commit the files to the repository until a user name
is defined in ``/var/lib/bcfg2/.hg/``

.. code-block:: sh

    cat <<END_ENTRY >> /var/lib/bcfg2/.hg/hgrc
    [ui]
    username = Yor name <you@example.com>
    END_ENTRY

Now you are able to make submissions to the repository::

    hg commit

While running ``bcfg2-info`` the following line will show up::

   Initialized hg plugin with hg directory = /var/lib/bcfg2/.hg

Darcs 
=====

The :ref:`server-plugins-version-darcs` plugin also allows you to store
version information in the statistics database.

To use darcs to track your configuration files, the repository must
be initialized::

    darcs initialize

To commit to the darcs repository an author must be added to the 
``_darcs/prefs/author`` file.  If the ``author`` file is missing, 
darcs will ask you to enter your e-mail address.

.. code-block:: sh

    cat <<END_ENTRY >> /var/lib/bcfg2/_darcs/prefs/author
    you@example.com
    END_ENTRY

All files in the ``/var/lib/bcfg2`` directory should be added to darcs
now::

    darcs add *

After that you can submit them to the repository::

    darcs record

While running ``bcfg2-info`` the following line will show up::

   Initialized Darcs plugin with darcs directory = /var/lib/bcfg2/_darcs

Cvs
===

The :ref:`server-plugins-version-cvs` plugin also allows you to store
version information in the statistics database.

    plugins = Base,Bundler,Cfg,...,Cvs

The CVS repository must be initialized::

    cvs -d /var/lib/bcfg2 init
