##// END OF EJS Templates
tests: fix failures due to environment LANG settings (Issue #286)...
tests: fix failures due to environment LANG settings (Issue #286) When the environment in which the tests are run dictates a non-English language (e.g. via LANG=de_DE.UTF-8), certain tests started to fail because formencode validation messages where translated in that language. A test failing this way is for example test_create_in_group_without_needed_permissions in kallithea/tests/functional/test_admin_repos.py . This is a regression of commit 3b29103657df (i18n: remove explicit formencode language setting), but in fact reverting it is not the right solution as there is no problem except during test execution. Instead, force the formencode language to 'empty' (meaning English) for test execution only. See also http://www.formencode.org/en/latest/i18n.html

File last commit:

r6689:c5512c9d default
r6694:c20abcf4 default
Show More
vcs_support.rst
150 lines | 5.0 KiB | text/x-rst | RstLexer

Version control systems support

Kallithea supports Git and Mercurial repositories out-of-the-box. For Git, you do need the git command line client installed on the server.

You can always disable Git or Mercurial support by editing the file kallithea/__init__.py and commenting out the backend.

BACKENDS = {
    'hg': 'Mercurial repository',
    #'git': 'Git repository',
}

Git support

Web server with chunked encoding

Large Git pushes require an HTTP server with support for chunked encoding for POST. The Python web servers waitress and gunicorn (Linux only) can be used. By default, Kallithea uses waitress for gearbox serve instead of the built-in paste WSGI server.

The web server used by gearbox is controlled in the .ini file:

use = egg:waitress#main

or:

use = egg:gunicorn#main

Also make sure to comment out the following options:

threadpool_workers =
threadpool_max_requests =
use_threadpool =

Mercurial support

Working with Mercurial subrepositories

This section explains how to use Mercurial subrepositories in Kallithea.

Example usage:

## init a simple repo
hg init mainrepo
cd mainrepo
echo "file" > file
hg add file
hg ci --message "initial file"

# clone subrepo we want to add from Kallithea
hg clone http://kallithea.local/subrepo

## specify URL to existing repo in Kallithea as subrepository path
echo "subrepo = http://kallithea.local/subrepo" > .hgsub
hg add .hgsub
hg ci --message "added remote subrepo"

In the file list of a clone of mainrepo you will see a connected subrepository at the revision it was cloned with. Clicking on the subrepository link sends you to the proper repository in Kallithea.

Cloning mainrepo will also clone the attached subrepository.

Next we can edit the subrepository data, and push back to Kallithea. This will update both repositories.

Importing existing repositories

There are two main methods to import repositories in Kallithea: via the web interface or via the filesystem. If you have a large number of repositories to import, importing them via the filesystem is more convenient.

Importing via web interface

For a small number of repositories, it may be easier to create the target repositories through the Kallithea web interface, via Admin > Repositories or via the Add Repository button on the entry page of the web interface.

Repositories can be nested in repository groups by first creating the group (via Admin > Repository Groups or via the Add Repository Group button on the entry page of the web interface) and then selecting the appropriate group when adding the repository.

After creation of the (empty) repository, push the existing commits to the Clone URL displayed on the repository summary page. For Git repositories, first add the Clone URL as remote, then push the commits to that remote. The specific commands to execute are shown under the Existing repository? section of the new repository's summary page.

A benefit of this method particular for Git repositories, is that the Kallithea-specific Git hooks are installed automatically. For Mercurial, no hooks are required anyway.

Importing via the filesystem

The alternative method of importing repositories consists of creating the repositories in the desired hierarchy on the filesystem and letting Kallithea scan that location.

All repositories are stored in a central location on the filesystem. This location is specified during installation (via setup-db) and can be reviewed at Admin > Settings > VCS > Location of repositories. Repository groups (defined in Admin > Repository Groups) are represented by a directory in that repository location. Repositories of the repository group are nested under that directory.

To import a set of repositories and organize them in a certain repository group structure, first place clones in the desired hierarchy at the configured repository location. These clones should be created without working directory. For Mercurial, this is done with hg clone -U, for Git with git clone --bare.

When the repositories are added correctly on the filesystem:

  • go to Admin > Settings > Remap and Rescan in the Kallithea web interface
  • select the Install Git hooks checkbox when importing Git repositories
  • click Rescan Repositories

This step will scan the filesystem and create the appropriate repository groups and repositories in Kallithea.

Note: Once repository groups have been created this way, manage their access permissions through the Kallithea web interface.