======
svnlit
======

A Subversion browser for `Django`_ that can track and display the
contents multiple repositories.

.. _`Django`: http://www.djangoproject.com

.. contents::
   :depth: 3


Installation
============

Using svnlit in your Django site
--------------------------------

Once you've installed the svnlit source into your Python site
environment:

   1. Put ``'svnlit'`` in your ``INSTALLED_APPS`` setting.
   2. Run the command ``manage.py syncdb``.
   3. Add Subversion repositories either through the Django
      admin application or through the svnlit management command
      ``manage.py svnadd``.


Settings
========

Some of the application's behaviour can be configured by adding the
appropriate settings to your project's settings file.

The following settings are available:

SVNLIT_CLIENT_TIMEOUT
---------------------

Default: ``20``

Amount of time in seconds to allow a prolonged ``pysvn`` API call
before cancelling.

SVNLIT_CACHE_TIMEOUT
--------------------

Default: ``86400``

Amount of time in seconds to retained data cached by svnlit.

SVNLIT_SVN_CONFIG_PATH
----------------------

Default: ``None``

Optionally specify a subversion config file that can be passed to
``pysvn.Client``.

SVNLIT_CHANGESETS_PER_PAGE
--------------------------

Default: ``50``

Number of changesets to display on the changeset list view.

SVNLIT_AUTO_SYNC
----------------

Default: ``True``

If this setting is enabled, svnlit will sync repositories'
changesets' on most views. How often the syncing happens when a view
is served depends on the ``SVNLIT_SYNC_INTERVAL`` setting.

SVNLIT_SYNC_INTERVAL
--------------------

Default: ``60``

When ``SVNLIT_AUTO_SYNC`` is set to ``True``, this setting controls
how often the syncing happens. Every time a view is served, the time
elapsed since the last sync is checked. If it has exceeded the number
of seconds specified by this setting, svnlit will sync the
changesets of the repository being viewed.


Management commands
===================

svnlit comes with some commands you can use with ``manage.py``.

The ``svnadd`` command
----------------------

Add a repository. The ``label`` is the name of the repository to be
used in the URLs. The ``root`` argument is the repository URI, such as
``file:///var/svn/myrepository`` or ``svn://code.example.com/myrepository``. 
The command has several additional options. See details by running
``manage.py help svnadd``.

The ``svnsync`` command
-----------------------

Get repository changes. If no arguments are specified, all
repositories tracked by svnlit are synced. Alternately you can specify
individual repositories by passing their labels as arguments.

The ``svnclean`` command
------------------------

Clean up expired cache data generated by svnlit. This command can be
used as a job in a crontab.
