Changeset - 4e6dfdb3fa01
[Not reviewed]
default
0 15 0
Michael V. DePalatis - 11 years ago 2015-03-31 22:15:38
mike@depalatis.net
docs: English and consistency corrections
15 files changed with 357 insertions and 327 deletions:
0 comments (0 inline, 0 general)
README.rst
Show inline comments
 
@@ -147,9 +147,9 @@ You can also build the documentation loc
 

	
 
   make html
 

	
 
(You need to have Sphinx_ installed to build the documentation. If you don't
 
have Sphinx_ installed you can install it via the command: ``pip install
 
sphinx``)
 
.. note:: You need to have Sphinx_ installed to build the
 
          documentation. If you don't have Sphinx_ installed you can
 
          install it via the command: ``pip install sphinx`` .
 

	
 

	
 
Converting from RhodeCode
docs/api/api.rst
Show inline comments
 
@@ -5,7 +5,7 @@ API
 
===
 

	
 

	
 
Kallithea has a simple JSON RPC API with a single schema for calling all api
 
Kallithea has a simple JSON RPC API with a single schema for calling all API
 
methods. Everything is available by sending JSON encoded http(s) requests to
 
<your_server>/_admin/api .
 

	
 
@@ -14,11 +14,11 @@ API access for web views
 
++++++++++++++++++++++++
 

	
 
API access can also be turned on for each web view in Kallithea that is
 
decorated with the `@LoginRequired` decorator. Some views use
 
`@LoginRequired(api_access=True)` and are always available. By default only
 
decorated with the ``@LoginRequired`` decorator. Some views use
 
``@LoginRequired(api_access=True)`` and are always available. By default only
 
RSS/ATOM feed views are enabled. Other views are
 
only available if they have been white listed. Edit the
 
`api_access_controllers_whitelist` option in your .ini file and define views
 
``api_access_controllers_whitelist`` option in your .ini file and define views
 
that should have API access enabled.
 

	
 
For example, to enable API access to patch/diff raw file and archive::
 
@@ -30,7 +30,7 @@ For example, to enable API access to pat
 
        FilesController:archivefile
 

	
 
After this change, a Kallithea view can be accessed without login by adding a
 
GET parameter `?api_key=<api_key>` to url.
 
GET parameter ``?api_key=<api_key>`` to the URL.
 

	
 
Exposing raw diffs is a good way to integrate with
 
3rd party services like code review, or build farms that could download archives.
 
@@ -70,7 +70,7 @@ The response to the JSON-RPC API call wi
 
        "error": "null"|<error_message> # JSON formatted error (if any)
 
    }
 

	
 
All responses from API will be `HTTP/1.0 200 OK`. If there is an error,
 
All responses from API will be ``HTTP/1.0 200 OK``. If there is an error,
 
the reponse will have a failure description in *error* and
 
*result* will be null.
 

	
 
@@ -78,10 +78,10 @@ the reponse will have a failure descript
 
API client
 
++++++++++
 

	
 
Kallithea comes with a `kallithea-api` command line tool providing a convenient
 
Kallithea comes with a ``kallithea-api`` command line tool providing a convenient
 
way to call the JSON-RPC API.
 

	
 
For example, to call `get_repo`::
 
For example, to call ``get_repo``::
 

	
 
 kallithea-api --apihost=<your.kallithea.server.url> --apikey=<yourapikey> get_repo
 

	
 
@@ -91,7 +91,8 @@ For example, to call `get_repo`::
 
  'id': 75,
 
  'result': None}
 

	
 
Oops, looks like we forgot to add an argument. Let's try again, now providing the repoid as parameter::
 
Oops, looks like we forgot to add an argument. Let's try again, now
 
providing the ``repoid`` as a parameter::
 

	
 
    kallithea-api get_repo repoid:myrepo
 

	
 
@@ -101,11 +102,11 @@ Oops, looks like we forgot to add an arg
 
     'id': 39,
 
     'result': <json data...>}
 

	
 
To avoid specifying apihost and apikey every time, run::
 
To avoid specifying ``apihost`` and ``apikey`` every time, run::
 

	
 
  kallithea-api --save-config --apihost=<your.kallithea.server.url> --apikey=<yourapikey>
 

	
 
This will create a `~/.config/kallithea` with the specified hostname and apikey
 
This will create a ``~/.config/kallithea`` with the specified hostname and apikey
 
so you don't have to specify them every time.
 

	
 

	
 
@@ -139,8 +140,8 @@ OUTPUT::
 
rescan_repos
 
------------
 

	
 
Rescan repositories. If remove_obsolete is set,
 
Kallithea will delete repos that are in database but not in the filesystem.
 
Rescan repositories. If ``remove_obsolete`` is set,
 
Kallithea will delete repos that are in the database but not in the filesystem.
 
This command can only be executed using the api_key of a user with admin rights.
 

	
 
INPUT::
 
@@ -163,7 +164,7 @@ OUTPUT::
 
invalidate_cache
 
----------------
 

	
 
Invalidate cache for repository.
 
Invalidate the cache for a repository.
 
This command can only be executed using the api_key of a user with admin rights,
 
or that of a regular user with admin or write access to the repository.
 

	
 
@@ -187,8 +188,8 @@ lock
 
----
 

	
 
Set the locking state on the given repository by the given user.
 
If param 'userid' is skipped, it is set to the id of the user who is calling this method.
 
If param 'locked' is skipped, the current lock state of the repository is returned.
 
If the param ``userid`` is skipped, it is set to the ID of the user who is calling this method.
 
If param ``locked`` is skipped, the current lock state of the repository is returned.
 
This command can only be executed using the api_key of a user with admin rights, or that of a regular user with admin or write access to the repository.
 

	
 
INPUT::
 
@@ -425,7 +426,7 @@ OUTPUT::
 
delete_user
 
-----------
 

	
 
Delete given user if such user exists.
 
Delete the given user if such a user exists.
 
This command can only be executed using the api_key of a user with admin rights.
 

	
 

	
 
@@ -555,8 +556,8 @@ OUTPUT::
 
add_user_to_user_group
 
----------------------
 

	
 
Addsa user to a user group. If the user already is in that group, success will be
 
`false`.
 
Adds a user to a user group. If the user already is in that group, success will be
 
``false``.
 
This command can only be executed using the api_key of a user with admin rights.
 

	
 

	
 
@@ -585,7 +586,7 @@ remove_user_from_user_group
 
---------------------------
 

	
 
Remove a user from a user group. If the user isn't in the given group, success will
 
be `false`.
 
be ``false``.
 
This command can only be executed using the api_key of a user with admin rights.
 

	
 

	
 
@@ -614,7 +615,7 @@ get_repo
 
--------
 

	
 
Get an existing repository by its name or repository_id. Members will contain
 
either users_group or user associated to that repository.
 
either users_group or users associated to that repository.
 
This command can only be executed using the api_key of a user with admin rights,
 
or that of a regular user with at least read access to the repository.
 

	
 
@@ -743,7 +744,7 @@ get_repo_nodes
 
--------------
 

	
 
Return a list of files and directories for a given path at the given revision.
 
It's possible to specify ret_type to show only `files` or `dirs`.
 
It is possible to specify ret_type to show only ``files`` or ``dirs``.
 
This command can only be executed using the api_key of a user with admin rights.
 

	
 

	
 
@@ -775,7 +776,7 @@ OUTPUT::
 
create_repo
 
-----------
 

	
 
Create a repository. If repository name contains "/", all needed repository
 
Create a repository. If the repository name contains "/", all needed repository
 
groups will be created. For example "foo/bar/baz" will create repository groups
 
"foo", "bar" (with "foo" as parent), and create "baz" repository with
 
"bar" as group.
 
@@ -829,8 +830,8 @@ OUTPUT::
 
fork_repo
 
---------
 

	
 
Create a fork of given repo. If using celery, this will
 
return success message immidiatelly and fork will be created
 
Create a fork of the given repo. If using Celery, this will
 
return success message immediately and a fork will be created
 
asynchronously.
 
This command can only be executed using the api_key of a user with admin rights,
 
or that of a regular user with fork permission and at least read access to the repository.
 
@@ -869,7 +870,7 @@ delete_repo
 
Delete a repository.
 
This command can only be executed using the api_key of a user with admin rights,
 
or that of a regular user with admin access to the repository.
 
When `forks` param is set it's possible to detach or delete forks of the deleted repository.
 
When ``forks`` param is set it is possible to detach or delete forks of the deleted repository.
 

	
 

	
 
INPUT::
 
@@ -895,7 +896,7 @@ OUTPUT::
 
grant_user_permission
 
---------------------
 

	
 
Grant permission for user on given repository, or update existing one if found.
 
Grant permission for a user on the given repository, or update the existing one if found.
 
This command can only be executed using the api_key of a user with admin rights.
 

	
 

	
 
@@ -923,7 +924,7 @@ OUTPUT::
 
revoke_user_permission
 
----------------------
 

	
 
Revoke permission for user on given repository.
 
Revoke permission for a user on the given repository.
 
This command can only be executed using the api_key of a user with admin rights.
 

	
 

	
 
@@ -950,7 +951,7 @@ OUTPUT::
 
grant_user_group_permission
 
---------------------------
 

	
 
Grant permission for user group on given repository, or update
 
Grant permission for a user group on the given repository, or update the
 
existing one if found.
 
This command can only be executed using the api_key of a user with admin rights.
 

	
 
@@ -979,7 +980,7 @@ OUTPUT::
 
revoke_user_group_permission
 
----------------------------
 

	
 
Revoke permission for user group on given repository.
 
Revoke permission for a user group on the given repository.
 
This command can only be executed using the api_key of a user with admin rights.
 

	
 
INPUT::
docs/contributing.rst
Show inline comments
 
@@ -16,7 +16,7 @@ https://kallithea-scm.org/repos/kallithe
 
of Kallithea).
 

	
 
For now, we use Bitbucket_ for `Pull Requests`_ and `Issue Tracker`_ services. The
 
issue tracker is for tracking bugs, not for "support", discussion or ideas -
 
issue tracker is for tracking bugs, not for support, discussion, or ideas -
 
please use the `mailing list`_ to reach the community.
 

	
 
We use Weblate_ to translate the user interface messages into languages other
docs/installation.rst
Show inline comments
 
@@ -27,7 +27,7 @@ There are several ways to install Kallit
 
  a Kallithea release is using standard pip. The package will be installed in
 
  the same location as all other Python packages you have ever installed. As a
 
  result, removing it is not as straightforward as with a virtualenv, as you'd
 
  have to remove its dependencies manually and make sure that they not are
 
  have to remove its dependencies manually and make sure that they are not
 
  needed by other packages.
 

	
 
.. _installation-source:
 
@@ -58,16 +58,13 @@ It is highly recommended to use a separa
 
This way, all libraries required by Kallithea will be installed separately from your
 
main Python installation and other applications and things will be less
 
problematic when upgrading the system or Kallithea.
 
An additional benefit of virtualenv_ is that it doesn't require root privileges. 
 
An additional benefit of virtualenv_ is that it doesn't require root privileges.
 

	
 
- Assuming you have installed virtualenv_, create a new virtual environment
 
  in for example `/srv/kallithea/venv` using the virtualenv command::
 
  for example, in `/srv/kallithea/venv`, using the virtualenv command::
 

	
 
    virtualenv /srv/kallithea/venv
 

	
 
.. note:: Older versions of virtualenv required ``--no-site-packages`` to work
 
   correctly. It should no longer be necessary.
 

	
 
- Activate the virtualenv_ in your current shell session by running::
 

	
 
    source /srv/kallithea/venv/bin/activate
 
@@ -81,7 +78,7 @@ An additional benefit of virtualenv_ is 
 

	
 
    mkdir /srv/kallithea
 

	
 
- Go into the created directory run this command to install kallithea::
 
- Go into the created directory and run this command to install Kallithea::
 

	
 
    pip install kallithea
 

	
 
@@ -90,7 +87,7 @@ An additional benefit of virtualenv_ is 
 

	
 
    python setup.py install
 

	
 
- This will install Kallithea together with pylons and all other required
 
- This will install Kallithea together with pylons_ and all other required
 
  python libraries into the activated virtualenv.
 

	
 
You can now proceed to :ref:`setup`.
 
@@ -117,13 +114,13 @@ Upgrading Kallithea from Python Package 
 
-----------------------------------------------------
 

	
 
.. note::
 
   Firstly, it is recommended that you **always** perform a database and
 
   It is strongly recommended that you **always** perform a database and
 
   configuration backup before doing an upgrade.
 

	
 
   (These directions will use '{version}' to note that this is the version of
 
   These directions will use '{version}' to note that this is the version of
 
   Kallithea that these files were used with.  If backing up your Kallithea
 
   instance from version 0.1 to 0.2, the ``my.ini`` file could be
 
   backed up to ``my.ini.0-1``.)
 
   backed up to ``my.ini.0-1``.
 

	
 

	
 
If using a SQLite database, stop the Kallithea process/daemon/service, and
 
@@ -138,13 +135,13 @@ Back up your configuration file::
 
 cp my.ini my.ini.{version}
 

	
 

	
 
Ensure that you are using the Python Virtual Environment that you'd originally
 
installed Kallithea in::
 
Ensure that you are using the Python virtual environment that you originally
 
installed Kallithea in by running::
 

	
 
 pip freeze
 

	
 
will list all packages installed in the current environment.  If Kallithea
 
isn't listed, change virtual environments to your venv location::
 
This will list all packages installed in the current environment.  If
 
Kallithea isn't listed, activate the correct virtual environment::
 

	
 
 source /srv/kallithea/venv/bin/activate
 

	
 
@@ -159,12 +156,12 @@ Then run the following command from the 
 
 paster make-config Kallithea my.ini
 

	
 
This will display any changes made by the new version of Kallithea to your
 
current configuration. It will try to perform an automerge. It's recommended
 
that you re-check the content after the automerge.
 
current configuration. It will try to perform an automerge. It is recommended
 
that you recheck the content after the automerge.
 

	
 
.. note::
 
   Please always make sure your .ini files are up to date. Often errors are
 
   caused by missing params added in new versions.
 
   Please always make sure your .ini files are up to date. Errors can
 
   often be caused by missing parameters added in new versions.
 

	
 

	
 
It is also recommended that you rebuild the whoosh index after upgrading since
 
@@ -182,9 +179,9 @@ options that need to be set.
 

	
 

	
 
.. note::
 
   DB schema upgrade library has some limitations and can sometimes fail if you try to
 
   upgrade from older major releases. In such case simply run upgrades sequentially, eg.
 
   upgrading from 0.1.X to 0.3.X should be done like that: 0.1.X. > 0.2.X > 0.3.X
 
   The DB schema upgrade library has some limitations and can sometimes fail if you try to
 
   upgrade from older major releases. In such a case simply run upgrades sequentially, e.g.,
 
   upgrading from 0.1.X to 0.3.X should be done like this: 0.1.X. > 0.2.X > 0.3.X
 
   You can always specify what version of Kallithea you want to install for example in pip
 
   `pip install Kallithea==0.2`
 

	
 
@@ -208,3 +205,4 @@ Or::
 

	
 
.. _virtualenv: http://pypi.python.org/pypi/virtualenv
 
.. _Python: http://www.python.org/
 
.. _pylons: http://www.pylonsproject.org/
docs/installation_win.rst
Show inline comments
 
@@ -19,14 +19,14 @@ Step 1 - Install Python
 

	
 
Install Python 2.x.y (x = 6 or 7). Latest version is recommended. If you need another version, they can run side by side.
 

	
 
  DO NOT USE A 3.x version.
 
.. warning:: Python 3.x is not supported.
 

	
 
- Download Python 2.x.y from http://www.python.org/download/
 
- Choose and click on the version
 
- Click on "Windows X86-64 Installer" for x64 or "Windows x86 MSI installer" for Win32.
 
- Disable UAC or run the installer with admin privileges. If you chose to disable UAC, do not forget to reboot afterwards.
 

	
 
While writing this Guide, the latest version was v2.7.9.
 
While writing this guide, the latest version was v2.7.9.
 
Remember the specific major and minor versions installed, because they will
 
be needed in the next step. In this case, it is "2.7".
 

	
 
@@ -34,18 +34,19 @@ be needed in the next step. In this case
 
Step 2 - Python BIN
 
-------------------
 

	
 
Add Python BIN folder to the path
 

	
 
You have to add the Python folder to the path, you can do it manually (editing "PATH" environment variable) or using Windows Support Tools that came preinstalled in Vista/7 and later.
 
Add Python BIN folder to the path. This can be done manually (editing
 
"PATH" environment variable) or by using Windows Support Tools that
 
come pre-installed in Windows Vista/7 and later.
 

	
 
Open a CMD and type::
 

	
 
  SETX PATH "%PATH%;[your-python-path]" /M
 

	
 
Please substitute [your-python-path] with your Python installation path. Typically: C:\\Python27
 
Please substitute [your-python-path] with your Python installation
 
path. Typically this is ``C:\\Python27``.
 

	
 

	
 
Step 3 - Install Win32py extensions
 
Step 3 - Install pywin32 extensions
 
-----------------------------------
 

	
 
Download pywin32 from:
 
@@ -53,10 +54,13 @@ http://sourceforge.net/projects/pywin32/
 

	
 
- Click on "pywin32" folder
 
- Click on the first folder (in this case, Build 219, maybe newer when you try)
 
- Choose the file ending with ".amd64-py2.x.exe" (".win32-py2.x.exe" for Win32) -> x being the minor version of Python you installed (in this case, 7).
 
  When writing this Guide, the file was:
 
  http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win-amd64-py2.7.exe/download (x64)
 
  http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win32-py2.7.exe/download (Win32)
 
- Choose the file ending with ".amd64-py2.x.exe" (".win32-py2.x.exe"
 
  for Win32) where x is the minor version of Python you installed.
 
  When writing this guide, the file was:
 
  http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win-amd64-py2.7.exe/download
 
  (x64)
 
  http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win32-py2.7.exe/download
 
  (Win32)
 

	
 

	
 
Step 4 - Install pip
 
@@ -72,11 +76,14 @@ If it was not installed or if you are us
 
- Right-click on get-pip.py and choose Saves as...
 
- Run "python get-pip.py" in the folder where you downloaded get-pip.py (may require admin access).
 

	
 
(See http://stackoverflow.com/questions/4750806/how-to-install-pip-on-windows for explanations or alternatives)
 
.. note::
 

	
 
Note that pip.exe will be placed inside your Python installation's Scripts folder, which is likely not on your path.
 
   See http://stackoverflow.com/questions/4750806/how-to-install-pip-on-windows
 
   for details and alternative methods.
 

	
 
Open a CMD and type::
 
Note that pip.exe will be placed inside your Python installation's
 
Scripts folder, which is likely not on your path. To correct this,
 
open a CMD and type::
 

	
 
  SETX PATH "%PATH%;[your-python-path]\Scripts" /M
 

	
 
@@ -86,7 +93,10 @@ Step 5 - Kallithea Folder Structure
 

	
 
Create a Kallithea folder structure.
 

	
 
This is only an example to install Kallithea. Of course, you can change it. However, this Guide will follow the proposed structure, so please later adapt the paths if you change them. Folders with NO SPACES are recommended. But you can try it if you are brave...
 
This is only an example to install Kallithea. Of course, you can
 
change it. However, this guide will follow the proposed structure, so
 
please later adapt the paths if you change them. Folders without
 
spaces are recommended.
 

	
 
Create the following folder structure::
 

	
 
@@ -101,10 +111,7 @@ Step 6 - Install virtualenv
 

	
 
.. note::
 
   A python virtual environment will allow for isolation between the Python packages of your system and those used for Kallithea.
 
   It is strongly recommended to use it to ensure that Kallithea does not change a dependency that another software uses or vice versa.
 
   If you are using your server (or VM) only for Kallithea, you can skip this step, at your own risk.
 

	
 
Install Virtual Env for Python
 
   It is strongly recommended to use it to ensure that Kallithea does not change a dependency that other software uses or vice versa.
 

	
 
In a command prompt type::
 

	
 
@@ -120,7 +127,7 @@ To create a virtual environment, run::
 
Step 7 - Install Kallithea
 
--------------------------
 

	
 
In order to install Kallithea, you need to be able to run "pip install kallithea". It will use Python pip to install the Kallithea Python package and its dependencies.
 
In order to install Kallithea, you need to be able to run "pip install kallithea". It will use pip to install the Kallithea Python package and its dependencies.
 
Some Python packages use managed code and need to be compiled.
 
This can be done on Linux without any special steps. On Windows, you will need to install Microsoft Visual C++ compiler for Python 2.7.
 

	
 
@@ -139,13 +146,14 @@ The prompt will change into "(Env) C:\\K
 

	
 
  pip install kallithea
 

	
 
(Long step, please wait until fully complete)
 

	
 
Some warnings will appear. Don't worry, they are normal.
 
.. note:: This will take some time. Please wait patiently until it is fully
 
          complete. Some warnings will appear. Don't worry, they are
 
          normal.
 

	
 

	
 
Step 8 - (Optional) Install git
 
-------------------------------
 

	
 
Mercurial being a python package, it was installed automatically when doing "pip install kallithea".
 

	
 
You need to install git manually if you want Kallithea to be able to host git repositories.
 
@@ -158,28 +166,35 @@ Step 9 - Configuring Kallithea
 

	
 
Steps taken from `<setup.html>`_
 

	
 
You have to use the same command prompt as in Step 7, so if you closed it, reopen it following the same commands (including the "activate" one).
 

	
 
When ready, type::
 
You have to use the same command prompt as in Step 7, so if you closed
 
it, reopen it following the same commands (including the "activate"
 
one). When ready, type::
 

	
 
  cd C:\Kallithea\Bin
 
  paster make-config Kallithea production.ini
 

	
 
Then, you must edit production.ini to fit your needs (IP address, IP port, mail settings, database, etc.) NotePad++ (free) or similar text editors are recommended, as they handle well the EndOfLine character differences between Unix and Windows (http://notepad-plus-plus.org/).
 
Then you must edit production.ini to fit your needs (IP address, IP
 
port, mail settings, database, etc.). `NotePad++`__ or a similar text
 
editor is recommended to properly handle the newline character
 
differences between Unix and Windows.
 

	
 
For the sake of simplicity, run it with the default settings. After your edits (if any), in the previous Command Prompt, type::
 
__ http://notepad-plus-plus.org/
 

	
 
For the sake of simplicity, run it with the default settings. After your edits (if any) in the previous command prompt, type::
 

	
 
  paster setup-db production.ini
 

	
 
(This time a NEW database will be installed. You must follow a different step to later UPGRADE to a newer Kallithea version)
 
.. warning:: This time a *new* database will be installed. You must
 
             follow a different step to later *upgrade* to a newer
 
             Kallithea version)
 

	
 
The script will ask you for confirmation about creating a NEW database, answer yes (y)
 
The script will ask you for confirmation about creating a new database, answer yes (y)
 

	
 
The script will ask you for repository path, answer C:\\Kallithea\\Repos (or similar).
 
The script will ask you for the repository path, answer C:\\Kallithea\\Repos (or similar).
 

	
 
The script will ask you for admin username and password, answer "admin" + "123456" (or whatever you want)
 
The script will ask you for the admin username and password, answer "admin" + "123456" (or whatever you want)
 

	
 
The script will ask you for admin mail, answer "admin@xxxx.com" (or whatever you want)
 
The script will ask you for admin mail, answer "admin@xxxx.com" (or whatever you want).
 

	
 
If you make a mistake and the script doesn't end, don't worry: start it again.
 

	
 
@@ -201,7 +216,7 @@ Remark:
 
If it does not work the first time, Ctrl-C the CMD process and start it again. Don't forget the "http://" in Internet Explorer.
 

	
 

	
 
What this Guide does not cover:
 
What this guide does not cover:
 

	
 
- Installing Celery
 
- Running Kallithea as a Windows Service. You can investigate here:
 
@@ -226,14 +241,14 @@ Open a CommandPrompt like in Step 7 (cd 
 

	
 
Backup your production.ini file now.
 

	
 
Then, run::
 
Then run::
 

	
 
  paster make-config Kallithea production.ini
 

	
 
Look for changes and update your production.ini accordingly.
 

	
 
Then, update the database::
 
Next, update the database::
 

	
 
  paster upgrade-db production.ini
 

	
 
Full steps in `<upgrade.html>`_
 
More details can be found in `<upgrade.html>`_.
docs/setup.rst
Show inline comments
 
@@ -9,19 +9,19 @@ Setting up Kallithea
 
--------------------
 

	
 
First, you will need to create a Kallithea configuration file. Run the
 
following command to do this::
 
following command to do so::
 

	
 
    paster make-config Kallithea my.ini
 

	
 
- This will create the file `my.ini` in the current directory. This
 
  configuration file contains the various settings for Kallithea, e.g proxy
 
  port, email settings, usage of static files, cache, Celery settings and
 
  logging.
 
This will create the file ``my.ini`` in the current directory. This
 
configuration file contains the various settings for Kallithea, e.g.,
 
proxy port, email settings, usage of static files, cache, Celery
 
settings, and logging.
 

	
 

	
 
Next, you need to create the databases used by Kallithea. It is recommended to
 
use PostgreSQL or SQLite (default). If you choose a database other than the
 
default ensure you properly adjust the database URL in your my.ini
 
default, ensure you properly adjust the database URL in your ``my.ini``
 
configuration file to use this other database. Kallithea currently supports
 
PostgreSQL, SQLite and MySQL databases. Create the database by running
 
the following command::
 
@@ -34,46 +34,50 @@ entering this "root" path ``setup-db`` w
 
and password for the initial admin account which ``setup-db`` sets
 
up for you.
 

	
 
setup process can be fully automated, example for lazy::
 
The setup process can be fully automated, example for lazy::
 

	
 
    paster setup-db my.ini --user=nn --password=secret --email=nn@your.kallithea.server --repos=/srv/repos
 

	
 

	
 
- The ``setup-db`` command will create all of the needed tables and an
 
  admin account. When choosing a root path you can either use a new empty
 
  location, or a location which already contains existing repositories. If you
 
  choose a location which contains existing repositories Kallithea will
 
  add all of the repositories at the chosen location to its database.
 
  (Note: make sure you specify the correct path to the root).
 
- Note: the given path for Mercurial_ repositories **must** be write accessible
 
  for the application. It's very important since the Kallithea web interface
 
  will work without write access, but when trying to do a push it will
 
  eventually fail with permission denied errors unless it has write access.
 
The ``setup-db`` command will create all of the needed tables and an
 
admin account. When choosing a root path you can either use a new
 
empty location, or a location which already contains existing
 
repositories. If you choose a location which contains existing
 
repositories Kallithea will add all of the repositories at the chosen
 
location to its database.  (Note: make sure you specify the correct
 
path to the root).
 

	
 
You are now ready to use Kallithea, to run it simply execute::
 
.. note:: the given path for Mercurial_ repositories **must** be write
 
          accessible for the application. It's very important since
 
          the Kallithea web interface will work without write access,
 
          but when trying to do a push it will fail with permission
 
          denied errors unless it has write access.
 

	
 
You are now ready to use Kallithea. To run it simply execute::
 

	
 
    paster serve my.ini
 

	
 
- This command runs the Kallithea server. The web app should be available at the
 
  127.0.0.1:5000. This ip and port is configurable via the my.ini
 
- This command runs the Kallithea server. The web app should be available at
 
  http://127.0.0.1:5000. This ip and port is configurable via the my.ini
 
  file created in previous step
 
- Use the admin account you created above when running ``setup-db``
 
  to login to the web app.
 
- The default permissions on each repository is read, and the owner is admin.
 
  Remember to update these if needed.
 
- In the admin panel you can toggle LDAP, anonymous, permissions settings. As
 
  well as edit more advanced options on users and repositories
 
- In the admin panel you can toggle LDAP, anonymous, and permissions
 
  settings, as well as edit more advanced options on users and
 
  repositories
 

	
 
Optionally users can create `rcextensions` package that extends Kallithea
 
Optionally users can create an ``rcextensions`` package that extends Kallithea
 
functionality. To do this simply execute::
 

	
 
    paster make-rcext my.ini
 

	
 
This will create `rcextensions` package in the same place that your `ini` file
 
lives. With `rcextensions` it's possible to add additional mapping for whoosh,
 
stats and add additional code into the push/pull/create/delete repo hooks.
 
For example for sending signals to build-bots such as Jenkins.
 
Please see the `__init__.py` file inside `rcextensions` package
 
This will create an ``rcextensions`` package in the same place that your ``ini`` file
 
lives. With ``rcextensions`` it's possible to add additional mapping for whoosh,
 
stats and add additional code into the push/pull/create/delete repo hooks,
 
for example, for sending signals to build-bots such as Jenkins.
 
Please see the ``__init__.py`` file inside ``rcextensions`` package
 
for more details.
 

	
 

	
 
@@ -90,39 +94,41 @@ Kallithea repository structures are kept
 
as the project. When using repository groups, each group is a subdirectory.
 
This allows you to easily use ssh for accessing repositories.
 

	
 
In order to use ssh you need to make sure that your web-server and the users
 
In order to use ssh you need to make sure that your web server and the users'
 
login accounts have the correct permissions set on the appropriate directories.
 
(Note that these permissions are independent of any permissions you have set up
 
using the Kallithea web interface.)
 

	
 
.. note:: These permissions are independent of any permissions you
 
          have set up using the Kallithea web interface.
 

	
 
If your main directory (the same as set in Kallithea settings) is for example
 
set to **/srv/repos** and the repository you are using is named `kallithea`, then
 
to clone via ssh you should run::
 
If your main directory (the same as set in Kallithea settings) is for
 
example set to ``/srv/repos`` and the repository you are using is
 
named ``kallithea``, then to clone via ssh you should run::
 

	
 
    hg clone ssh://user@server.com//srv/repos/kallithea
 

	
 
Using other external tools such as mercurial-server_ or using ssh key based
 
Using other external tools such as mercurial-server_ or using ssh key-based
 
authentication is fully supported.
 

	
 
Note: In an advanced setup, in order for your ssh access to use the same
 
permissions as set up via the Kallithea web interface, you can create an
 
authentication hook to connect to the Kallithea db and runs check functions for
 
permissions against that.
 
.. note:: In an advanced setup, in order for your ssh access to use
 
          the same permissions as set up via the Kallithea web
 
          interface, you can create an authentication hook to connect
 
          to the Kallithea db and run check functions for permissions
 
          against that.
 

	
 
Setting up Whoosh full text search
 
----------------------------------
 

	
 
The whoosh index can be build by using the paster
 
The whoosh index can be built by using the paster
 
command ``make-index``. To use ``make-index`` you must specify the configuration
 
file that stores the location of the index. You may specify the location of the
 
repositories (`--repo-location`).  If not specified, this value is retrieved
 
repositories (``--repo-location``).  If not specified, this value is retrieved
 
from the Kallithea database.
 
It is also possible to specify a comma separated list of
 
repositories (`--index-only`) to build index only on chooses repositories
 
repositories (``--index-only``) to build index only on chooses repositories
 
skipping any other found in repos location
 

	
 
You may optionally pass the option `-f` to enable a full index rebuild. Without
 
the `-f` option, indexing will run always in "incremental" mode.
 
You may optionally pass the option ``-f`` to enable a full index rebuild. Without
 
the ``-f`` option, indexing will run always in "incremental" mode.
 

	
 
For an incremental index build use::
 

	
 
@@ -133,14 +139,14 @@ For a full index rebuild use::
 
    paster make-index my.ini -f
 

	
 

	
 
building index just for chosen repositories is possible with such command::
 
Building an index for just selected repositories is possible with such command::
 

	
 
    paster make-index my.ini --index-only=vcs,kallithea
 

	
 

	
 
In order to do periodical index builds and keep your index always up to date.
 
It's recommended to do a crontab entry for incremental indexing.
 
An example entry might look like this::
 
In order to do periodic index builds and keep your index always up to
 
date, it is recommended to use a crontab entry.  An example entry
 
might look like this::
 

	
 
    /path/to/python/bin/paster make-index /path/to/kallithea/my.ini
 

	
 
@@ -149,8 +155,8 @@ modification date of each file and add i
 
available. The indexing daemon checks for any removed files and removes them
 
from index.
 

	
 
If you want to rebuild index from scratch, you can use the `-f` flag as above,
 
or in the admin panel you can check `build from scratch` flag.
 
If you want to rebuild the index from scratch, you can use the ``-f`` flag as above,
 
or in the admin panel you can check the "build from scratch" flag.
 

	
 

	
 
Setting up LDAP support
 
@@ -158,15 +164,15 @@ Setting up LDAP support
 

	
 
Kallithea supports LDAP authentication. In order
 
to use LDAP, you have to install the python-ldap_ package. This package is
 
available via pypi, so you can install it by running
 
available via pypi, so you can install it by running::
 

	
 
    pip install python-ldap
 

	
 
.. note::
 
   python-ldap requires some certain libs on your system, so before installing
 
   it check that you have at least `openldap`, and `sasl` libraries.
 
.. note:: ``python-ldap`` requires some libraries to be installed on
 
          your system, so before installing it check that you have at
 
          least the ``openldap`` and ``sasl`` libraries.
 

	
 
LDAP settings are located in Admin->LDAP section.
 
LDAP settings are located in the Admin->LDAP section.
 

	
 
Here's a typical LDAP setup::
 

	
 
@@ -190,7 +196,7 @@ Here's a typical LDAP setup::
 
 Last Name Attribute  = lastName
 
 E-mail Attribute     = mail
 

	
 
If your user groups are placed in a Organisation Unit (OU) structure the Search Settings configuration differs::
 
If your user groups are placed in an Organisation Unit (OU) structure, the Search Settings configuration differs::
 

	
 
 Search settings
 
 Base DN              = DC=host,DC=example,DC=org
 
@@ -433,25 +439,26 @@ Integration with Issue trackers
 
-------------------------------
 

	
 
Kallithea provides a simple integration with issue trackers. It's possible
 
to define a regular expression that will fetch issue id stored in commit
 
messages and replace that with an url to this issue. To enable this simply
 
uncomment following variables in the ini file::
 
to define a regular expression that will fetch an issue id stored in a commit
 
messages and replace that with a URL to the issue. To enable this simply
 
uncomment the following variables in the ini file::
 

	
 
    issue_pat = (?:^#|\s#)(\w+)
 
    issue_server_link = https://myissueserver.com/{repo}/issue/{id}
 
    issue_prefix = #
 

	
 
`issue_pat` is the regular expression describing which strings in
 
``issue_pat`` is the regular expression describing which strings in
 
commit messages will be treated as issue references. A match group in
 
parentheses should be used to specify the actual issue id.
 

	
 
The default expression matches issues in the format '#<number>', e.g. '#300'.
 
The default expression matches issues in the format ``#<number>``, e.g., ``#300``.
 

	
 
Matched issues are replaced with the link specified as `issue_server_link`
 
{id} is replaced with issue id, and {repo} with repository name.
 
Since the # is stripped away, `issue_prefix` is prepended to the link text.
 
`issue_prefix` doesn't necessarily need to be #: if you set issue
 
prefix to ISSUE- this will generate a URL in format::
 
Matched issues are replaced with the link specified as
 
``issue_server_link`` ``{id}`` is replaced with issue id, and
 
``{repo}`` with the repository name.  Since the # is stripped away,
 
``issue_prefix`` is prepended to the link text.  ``issue_prefix`` doesn't
 
necessarily need to be ``#``: if you set issue prefix to ``ISSUE-`` this will
 
generate a URL in the format::
 

	
 
  <a href="https://myissueserver.com/example_repo/issue/300">ISSUE-300</a>
 

	
 
@@ -471,25 +478,25 @@ such reference will be transformed into:
 
Hook management
 
---------------
 

	
 
Hooks can be managed in similar way to this used in .hgrc files.
 
To access hooks setting click `advanced setup` on Hooks section of Mercurial
 
Settings in Admin.
 
Hooks can be managed in similar way to that used in ``.hgrc`` files.
 
To access hooks setting click `advanced setup` in the `Hooks` section
 
of Mercurial Settings in Admin.
 

	
 
There are 4 built in hooks that cannot be changed (only enable/disable by
 
checkboxes on previos section).
 
To add another custom hook simply fill in first section with
 
<name>.<hook_type> and the second one with hook path. Example hooks
 
can be found at *kallithea.lib.hooks*.
 
There are four built in hooks that cannot be changed (only enabled/disabled by
 
checkboxes in the previous section).
 
To add another custom hook simply fill in the first section with
 
``<name>.<hook_type>`` and the second one with hook path. Example hooks
 
can be found in ``kallithea.lib.hooks``.
 

	
 

	
 
Changing default encoding
 
-------------------------
 

	
 
By default, Kallithea uses UTF-8 encoding.
 
It is configurable as `default_encoding` in the .ini file.
 
This is configurable as ``default_encoding`` in the .ini file.
 
This affects many parts in Kallithea including user names, filenames, and
 
encoding of commit messages. In addition Kallithea can detect if `chardet`
 
library is installed. If `chardet` is detected Kallithea will fallback to it
 
encoding of commit messages. In addition Kallithea can detect if the ``chardet``
 
library is installed. If ``chardet`` is detected Kallithea will fallback to it
 
when there are encode/decode errors.
 

	
 

	
 
@@ -511,9 +518,9 @@ or Redis_.
 
The use of Celery is configured in the Kallithea ini configuration file.
 
To enable it, simply set::
 

	
 
 use_celery = true
 
  use_celery = true
 

	
 
and add or change the celery.* and broker.* configuration variables.
 
and add or change the ``celery.*`` and ``broker.*`` configuration variables.
 

	
 
Remember that the ini files use the format with '.' and not with '_' like
 
Celery. So for example setting `BROKER_HOST` in Celery means setting
 
@@ -536,10 +543,10 @@ Kallithea will by default generate URLs 
 
Alternatively, you can use some special configuration settings to control
 
directly which scheme/protocol Kallithea will use when generating URLs:
 

	
 
- With `https_fixup = true`, the scheme will be taken from the HTTP_X_URL_SCHEME,
 
  HTTP_X_FORWARDED_SCHEME or HTTP_X_FORWARDED_PROTO HTTP header (default 'http').
 
- With `force_https = true` the default will be 'https'.
 
- With `use_htsts = true`, it will set Strict-Transport-Security when using https.
 
- With ``https_fixup = true``, the scheme will be taken from the ``HTTP_X_URL_SCHEME``,
 
  ``HTTP_X_FORWARDED_SCHEME`` or ``HTTP_X_FORWARDED_PROTO HTTP`` header (default ``http``).
 
- With ``force_https = true`` the default will be ``https``.
 
- With ``use_htsts = true``, it will set ``Strict-Transport-Security`` when using https.
 

	
 
Nginx virtual host example
 
--------------------------
 
@@ -671,7 +678,7 @@ Apache subdirectory part::
 
    </Location>
 

	
 
Besides the regular apache setup you will need to add the following line
 
into [app:main] section of your .ini file::
 
into ``[app:main]`` section of your .ini file::
 

	
 
    filter-with = proxy-prefix
 

	
 
@@ -682,7 +689,7 @@ Add the following at the end of the .ini
 
    prefix = /<someprefix>
 

	
 

	
 
then change <someprefix> into your chosen prefix
 
then change ``<someprefix>`` into your chosen prefix
 

	
 
Apache's WSGI config
 
--------------------
 
@@ -700,9 +707,9 @@ that, you'll need to:
 
    a2enmod wsgi
 

	
 
- Create a wsgi dispatch script, like the one below. Make sure you
 
  check the paths correctly point to where you installed Kallithea
 
  check that the paths correctly point to where you installed Kallithea
 
  and its Python Virtual Environment.
 
- Enable the WSGIScriptAlias directive for the wsgi dispatch script,
 
- Enable the ``WSGIScriptAlias`` directive for the WSGI dispatch script,
 
  as in the following example. Once again, check the paths are
 
  correctly specified.
 

	
 
@@ -714,7 +721,7 @@ Here is a sample excerpt from an Apache 
 
    WSGIScriptAlias / /srv/kallithea/dispatch.wsgi
 
    WSGIPassAuthorization On
 

	
 
Or if using a dispatcher wsgi script with proper virtualenv activation::
 
Or if using a dispatcher WSGI script with proper virtualenv activation::
 

	
 
    WSGIDaemonProcess kallithea processes=1 threads=4
 
    WSGIScriptAlias / /srv/kallithea/dispatch.wsgi
 
@@ -723,15 +730,15 @@ Or if using a dispatcher wsgi script wit
 

	
 
.. note::
 
   When running apache as root, please make sure it doesn't run Kallithea as
 
   root, for examply by adding: `user=www-data group=www-data` to the configuration.
 
   root, for examply by adding: ``user=www-data group=www-data`` to the configuration.
 

	
 
.. note::
 
   If running Kallithea in multiprocess mode,
 
   make sure you set `instance_id = \*` in the configuration so each process
 
   gets it's own cache invalidationkey.
 
   make sure you set ``instance_id = *`` in the configuration so each process
 
   gets it's own cache invalidation key.
 

	
 

	
 
Example wsgi dispatch script::
 
Example WSGI dispatch script::
 

	
 
    import os
 
    os.environ["HGENCODING"] = "UTF-8"
 
@@ -767,7 +774,8 @@ Or using proper virtualenv activation::
 
Other configuration files
 
-------------------------
 

	
 
Some example init.d scripts can be found in init.d directory: https://kallithea-scm.org/repos/kallithea/files/tip/init.d/
 
Some example init.d scripts can be found in the ``init.d`` directory:
 
https://kallithea-scm.org/repos/kallithea/files/tip/init.d/ .
 

	
 
.. _virtualenv: http://pypi.python.org/pypi/virtualenv
 
.. _python: http://www.python.org/
docs/usage/backup.rst
Show inline comments
 
@@ -13,8 +13,8 @@ Just copy your .ini file, it contains al
 
Whoosh index
 
------------
 

	
 
Whoosh index is located in **/data/index** directory where you installed
 
Kallithea ie. the same place where the ini file is located
 
The Whoosh index is located in the ``data/index`` directory where you installed
 
Kallithea, i.e., the same place where the ini file is located
 

	
 

	
 
Database
 
@@ -23,4 +23,4 @@ Database
 
When using sqlite just copy kallithea.db.
 
Any other database engine requires a manual backup operation.
 

	
 
Database backup will contain all gathered statistics
 
A database backup will contain all gathered statistics.
docs/usage/debugging.rst
Show inline comments
 
@@ -4,27 +4,29 @@
 
Debugging Kallithea
 
===================
 

	
 
If you encountered problems with Kallithea here are some instructions how to
 
possibly debug them.
 
If you encounter problems with Kallithea, here are some instructions
 
on how to debug them.
 

	
 
** First make sure you're using the latest version available.**
 
.. note:: First make sure you're using the latest version available.
 

	
 
Enable detailed debug
 
---------------------
 

	
 
Kallithea uses standard python logging modules to log it's output.
 
By default only loggers with INFO level are displayed. To enable full output
 
change `level = DEBUG` for all logging handlers in currently used .ini file.
 
This change will allow to see much more detailed output in the logfile or
 
Kallithea uses the standard Python ``logging`` module to log its output.
 
By default only loggers with ``INFO`` level are displayed. To enable full output
 
change ``level = DEBUG`` for all logging handlers in the currently used .ini file.
 
This change will allow you to see much more detailed output in the log file or
 
console. This generally helps a lot to track issues.
 

	
 

	
 
Enable interactive debug mode
 
-----------------------------
 

	
 
To enable interactive debug mode simply comment out `set debug = false` in
 
.ini file, this will trigger and interactive debugger each time there an
 
error in browser, or send a http link if error occured in the backend. This
 
is a great tool for fast debugging as you get a handy python console right
 
in the web view. ** NEVER ENABLE THIS ON PRODUCTION ** the interactive console
 
can be a serious security threat to you system.
 
To enable interactive debug mode simply comment out ``set debug = false`` in
 
the .ini file. This will trigger an interactive debugger each time
 
there is an error in the browser, or send a http link if an error occured in the backend. This
 
is a great tool for fast debugging as you get a handy Python console right
 
in the web view.
 

	
 
.. warning:: NEVER ENABLE THIS ON PRODUCTION! The interactive console
 
             can be a serious security threat to your system.
docs/usage/general.rst
Show inline comments
 
@@ -8,48 +8,51 @@ General Kallithea usage
 
Repository deleting
 
-------------------
 

	
 
Currently when admin/owner deletes a repository, Kallithea does not physically
 
delete a repository from filesystem, it renames it in a special way so it's
 
not possible to push,clone or access repository. It's worth a notice that,
 
even if someone will be given administrative access to Kallithea and will
 
delete a repository You can easy restore such action by restoring `rm__<date>`
 
from the repository name, and internal repository storage (.hg/.git). There
 
is also a special command for cleaning such archived repos::
 
Currently when an admin or owner deletes a repository, Kallithea does
 
not physically delete said repository from the filesystem, but instead
 
renames it in a special way so that it is not possible to push, clone
 
or access repository. It is worth noting that even if someone will be
 
given administrative access to Kallithea and will delete a repository,
 
you can easy restore such an action by removing ``rm__<date>`` from
 
the repository name. There is also a special command for cleaning such
 
archived repos::
 

	
 
    paster cleanup-repos --older-than=30d my.ini
 

	
 
This command will scan for archived repositories that are older than 30d,
 
display them and ask if you want to delete them (there's a --dont-ask flag also)
 
If you host big amount of repositories with forks that are constantly deleted
 
it's recommended that you run such command via crontab.
 
This command will scan for archived repositories that are older than
 
30 days, display them, and ask if you want to delete them (there is
 
a ``--dont-ask`` flag also) If you host a large amount of repositories with
 
forks that are constantly deleted it is recommended that you run such a
 
command via crontab.
 

	
 
Follow current branch in file view
 
----------------------------------
 

	
 
In file view when this checkbox is checked the << and >> arrows will jump
 
to changesets within the same branch currently viewing. So for example
 
if someone is viewing files at 'beta' branch and marks `follow current branch`
 
checkbox the << and >> buttons will only show him revisions for 'beta' branch
 
to changesets within the same branch currently being viewed. So for example
 
if someone is viewing files in the ``beta`` branch and marks the `follow current branch`
 
checkbox the << and >> buttons will only show revisions for the `'beta`` branch.
 

	
 

	
 
Compare view from changelog
 
---------------------------
 

	
 
Checkboxes in compare view allow users to view combined compare view. You can
 
only show the range between the first and last checkbox (no cherry pick).
 
Clicking more than one checkbox will activate a link in top saying
 
`Show selected changesets <from-rev> -> <to-rev>` clicking this will bring
 
compare view. In this view also it's possible to switch to combined compare.
 
Checkboxes in the compare view allow users to view a combined compare
 
view. You can only show the range between the first and last checkbox
 
(no cherry pick).  Clicking more than one checkbox will activate a
 
link at the top saying ``Show selected changesets <from-rev> ->
 
<to-rev>``. Clicking this will activate the compare view. In this view
 
it is also possible to switch to combined compare.
 

	
 
Compare view is also available from the journal on pushes having more than
 
one changeset
 
one changeset.
 

	
 

	
 
Non changeable repository urls
 
------------------------------
 

	
 
Due to complicated nature of repository grouping, often urls of repositories
 
can change.
 
Due to the complicated nature of repository grouping, URLs of repositories
 
can often change.
 

	
 
example::
 

	
 
@@ -59,58 +62,56 @@ example::
 
  http://server.com/test_group/repo_name
 

	
 
This can be an issue for build systems and any other hardcoded scripts, moving
 
repository to a group leads to a need for changing external systems. To
 
overcome this Kallithea introduces a non changable replacement url. It's
 
simply an repository ID prefixed with `_` above urls are also accessible as::
 
a repository to a group leads to a need for changing external systems. To
 
overcome this Kallithea introduces a non-changable replacement URL. It's
 
simply a repository ID prefixed with ``_``. The above URLs are also accessible as::
 

	
 
  http://server.com/_<ID>
 

	
 
Since ID are always the same moving the repository will not affect such url.
 
the _<ID> syntax can be used anywhere in the system so urls with repo_name
 
for changelogs, files and other can be exchanged with _<ID> syntax.
 
Since IDs are always the same, moving the repository will not affect
 
such a URL.  the ``_<ID>`` syntax can be used anywhere in the system so
 
URLs with ``repo_name`` for changelogs and files can be exchanged
 
with the ``_<ID>`` syntax.
 

	
 

	
 
Mailing
 
-------
 

	
 
When administrator will fill up the mailing settings in .ini files
 
Kallithea will send mails on user registration, or when Kallithea errors occur
 
on errors the mails will have a detailed traceback of error.
 

	
 
When the administrator configures the mailing settings in .ini files
 
Kallithea will send mails on user registration, or when Kallithea
 
errors occur.
 

	
 
Mails are also sent for code comments. If someone comments on a changeset
 
mail is sent to all participants, the person who commited the changeset
 
(if present in Kallithea), and to all people mentioned with @mention system.
 
(if present in Kallithea), and to all people mentioned with the @mention system.
 

	
 

	
 
Trending source files
 
---------------------
 

	
 
Trending source files are calculated based on pre defined dict of known
 
types and extensions. If You miss some extension or Would like to scan some
 
custom files it's possible to add new types in `LANGUAGES_EXTENSIONS_MAP` dict
 
located in `/kallithea/lib/celerylib/tasks.py`
 
Trending source files are calculated based on a pre-defined dict of known
 
types and extensions. If you miss some extension or would like to scan some
 
custom files, it is possible to add new types in the ``LANGUAGES_EXTENSIONS_MAP`` dict
 
located in ``kallithea/lib/celerylib/tasks.py``.
 

	
 

	
 
Cloning remote repositories
 
---------------------------
 

	
 
Kallithea has an ability to clone remote repos from given remote locations.
 
Currently it support following options:
 
Kallithea has the ability to clone remote repos from given remote locations.
 
Currently it supports the following options:
 

	
 
- hg  -> hg clone
 
- svn -> hg clone
 
- git -> git clone
 

	
 

	
 
.. note::
 

	
 
    - *`svn -> hg` cloning requires `hgsubversion` library to be installed.*
 
.. note:: svn -> hg cloning requires tge ``hgsubversion`` library to be installed.
 

	
 
If you need to clone repositories that are protected via basic auth, you
 
might pass the url with stored credentials inside eg.
 
`http://user:passw@remote.server/repo`, Kallithea will try to login and clone
 
using given credentials. Please take a note that they will be stored as
 
might pass the url with stored credentials inside, e.g.,
 
``http://user:passw@remote.server/repo``, Kallithea will try to login and clone
 
using the given credentials. Please take note that they will be stored as
 
plaintext inside the database. Kallithea will remove auth info when showing the
 
clone url in summary page.
 

	
 
@@ -121,26 +122,28 @@ Visual settings in admin pannel
 

	
 

	
 
Visualisation settings in Kallithea settings view are extra customizations
 
of server behavior. There are 3 main section in the settings.
 
of server behavior. There are 3 main sections in the settings.
 

	
 
General
 
~~~~~~~
 

	
 
`Use repository extra fields` option allows to set a custom fields for each
 
repository in the system. Each new field consists of 3 attributes `field key`,
 
`field label`, `field description`. Example usage of such fields would be to
 
define company specific information into repositories eg. defining repo_manager
 
key that would add give info about a manager of each repository. There's no
 
limit for adding custom fields. Newly created fields are accessible via API.
 
The `Use repository extra fields` option allows to set a custom fields
 
for each repository in the system. Each new field consists of 3
 
attributes: ``field key``, ``field label``, ``field
 
description``. Example usage of such fields would be to define company
 
specific information into repositories, e.g., defining a
 
``repo_manager`` key that would give info about a manager of each
 
repository. There's no limit for adding custom fields. Newly created
 
fields are accessible via API.
 

	
 
`Show Kallithea version` option toggles displaying exact Kallithea version in
 
the footer
 
The `Show Kallithea version` option toggles displaying the exact
 
Kallithea version in the footer
 

	
 

	
 
Dashboard items
 
~~~~~~~~~~~~~~~
 

	
 
Number if items in main page dashboard before pagination is displayed
 
Number of items in main page dashboard before pagination is displayed.
 

	
 

	
 
Icons
docs/usage/git_support.rst
Show inline comments
 
@@ -5,16 +5,17 @@ Git support
 
===========
 

	
 

	
 
Kallithea Git support is enabled by default. You just need a git
 
Kallithea Git support is enabled by default. You just need a Git
 
command line client installed on the server to make Git work fully.
 

	
 
Web server with chunked encoding
 
--------------------------------
 

	
 
Large Git pushes do however require a 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 `paster serve` instead of the built-in `paste` WSGI server. 
 
Large Git pushes requires a 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 `paster serve` instead of the built-in `paste` WSGI
 
server.
 

	
 
The default paste server is controlled in the .ini file::
 

	
 
@@ -35,8 +36,8 @@ Also make sure to comment out the follow
 
Disabling Git
 
-------------
 

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

	
 
.. code-block:: python
 

	
docs/usage/locking.rst
Show inline comments
 
@@ -9,30 +9,30 @@ The scenario for repos with `locking fun
 
every initial clone and every pull gives users (with write permission)
 
the exclusive right to do a push.
 

	
 
Each repo can be manually unlocked by admin from the repo settings menu.
 
Each repo can be manually unlocked by an admin from the repo settings menu.
 

	
 
| Repos with **locking function=disabled** is the default, that's how repos work
 
  today.
 
| Repos with **locking function=enabled** behaves like follows:
 

	
 
Repos have a state called `locked` that can be true or false.
 
The hg/git commands `hg/git clone`, `hg/git pull`, and `hg/git push`
 
Repos have a state called ``locked`` that can be true or false.
 
The hg/git commands ``hg/git clone``, ``hg/git pull``, and ``hg/git push``
 
influence this state:
 

	
 
- The command `hg/git pull <repo>` will lock that repo (locked=true)
 
- The command ``hg/git pull <repo>`` will lock that repo (``locked=true``)
 
  if the user has write/admin permissions on this repo
 

	
 
- The command `hg/git clone <repo>` will lock that repo (locked=true) if the
 
- The command ``hg/git clone <repo>`` will lock that repo (``locked=true``) if the
 
  user has write/admin permissions on this repo
 

	
 

	
 
Kallithea will remember the user id who locked the repo so
 
only this specific user can unlock the repo (locked=false) by calling
 
Kallithea will remember the user who locked the repo so
 
only this specific user can unlock the repo (``locked=false``) by calling
 

	
 
- `hg/git push <repo>`
 
- ``hg/git push <repo>``
 

	
 
Every other command on that repo from this user and
 
every command from any other user will result in http return code 423 (locked).
 
every command from any other user will result in an http return code 423 (locked).
 

	
 
Additionally, the http error includes the <user> that locked the repo
 
(e.g. “repository <repo> locked by user <user>”).
 
(e.g., “repository <repo> locked by user <user>”).
docs/usage/performance.rst
Show inline comments
 
@@ -4,17 +4,17 @@
 
Optimizing Kallithea Performance
 
================================
 

	
 
When serving large amount of big repositories Kallithea can start
 
performing slower than expected. Because of demanding nature of handling large
 
amount of data from version control systems here are some tips how to get
 
When serving a large amount of big repositories, Kallithea can start
 
performing slower than expected. Because of the demanding nature of handling large
 
amounts of data from version control systems, here are some tips on how to get
 
the best performance.
 

	
 
* Kallithea will perform better on machines with faster disks (SSD/SAN). It's
 
  more important to have faster disk than faster CPU.
 
  more important to have a faster disk than a faster CPU.
 

	
 
* Slowness on initial page can be easily fixed by grouping repositories, and/or
 
  increasing cache size (see below), that includes using lightweight dashboard
 
  option and vcs_full_cache setting in .ini file
 
  increasing cache size (see below). This includes using the lightweight dashboard
 
  option and ``vcs_full_cache`` setting in .ini file
 

	
 

	
 
Follow these few steps to improve performance of Kallithea system.
 
@@ -22,41 +22,42 @@ Follow these few steps to improve perfor
 

	
 
1. Increase cache
 

	
 
    in the .ini file::
 
    In the .ini file::
 

	
 
     beaker.cache.sql_cache_long.expire=3600 <-- set this to higher number
 

	
 
    This option affects the cache expiration time for main page. Having
 
    few hundreds of repositories on main page can sometimes make the system
 
    to behave slow when cache expires for all of them. Increasing `expire`
 
    option to day (86400) or a week (604800) will improve general response
 
    times for the main page. Kallithea has an intelligent cache expiration
 
    system and it will expire cache for repositories that had been changed.
 
    This option affects the cache expiration time for the main
 
    page. Having several hundreds of repositories on main page can
 
    sometimes make the system behave slowly when the cache expires for
 
    all of them. Increasing the ``expire`` option to a day (86400) or a
 
    week (604800) will improve general response times for the main
 
    page. Kallithea has an intelligent cache expiration system and it
 
    will expire the cache for repositories that have been changed.
 

	
 
2. Switch from sqlite to postgres or mysql
 

	
 
    sqlite is a good option when having small load on the system. But due to
 
    locking issues with sqlite, it's not recommended to use it for larger
 
    setup. Switching to mysql or postgres will result in a immediate
 
    sqlite is a good option when having a small load on the system. But due to
 
    locking issues with sqlite, it is not recommended to use it for larger
 
    deployments. Switching to mysql or postgres will result in an immediate
 
    performance increase.
 

	
 
3. Scale Kallithea horizontally
 

	
 
    Scaling horizontally can give huge performance increase when dealing with
 
    Scaling horizontally can give huge performance increases when dealing with
 
    large traffic (large amount of users, CI servers etc). Kallithea can be
 
    scaled horizontally on one (recommended) or multiple machines. In order
 
    to scale horizontally you need to do the following:
 

	
 
    - each instance needs it's own .ini file and unique `instance_id` set in them
 
    - each instance `data` storage needs to be configured to be stored on a
 
      shared disk storage, preferably together with repositories. This `data`
 
      dir contains template caches, sessions, whoosh index and it's used for
 
      tasks locking (so it's safe across multiple instances). Set the
 
      `cache_dir`, `index_dir`, `beaker.cache.data_dir`, `beaker.cache.lock_dir`
 
      variables in each .ini file to shared location across Kallithea instances
 
    - if celery is used each instance should run separate celery instance, but
 
      the message broken should be common to all of them (ex one rabbitmq
 
      shared server)
 
    - load balance using round robin or ip hash, recommended is writing LB rules
 
    - Each instance needs its own .ini file and unique ``instance_id`` set.
 
    - Each instance's ``data`` storage needs to be configured to be stored on a
 
      shared disk storage, preferably together with repositories. This ``data``
 
      dir contains template caches, sessions, whoosh index and is used for
 
      task locking (so it is safe across multiple instances). Set the
 
      ``cache_dir``, ``index_dir``, ``beaker.cache.data_dir``, ``beaker.cache.lock_dir``
 
      variables in each .ini file to a shared location across Kallithea instances
 
    - If celery is used each instance should run a separate Celery instance, but
 
      the message broker should be common to all of them (e.g.,  one
 
      shared RabbitMQ server)
 
    - Load balance using round robin or IP hash, recommended is writing LB rules
 
      that will separate regular user traffic from automated processes like CI
 
      servers or build bots.
docs/usage/statistics.rst
Show inline comments
 
@@ -17,16 +17,16 @@ With Celery disabled
 
- This happens on each single visit to the statistics page until all commits are
 
  fetched. Statistics are kept cached until additional commits are added to the
 
  repository. In such a case Kallithea will only fetch the new commits when
 
  updating it's cache.
 
  updating its cache.
 

	
 

	
 
With Celery enabled
 
-------------------
 

	
 
- On the first visit to the summary page Kallithea will create tasks that will
 
  execute on celery workers. This task will gather all of the stats until all
 
  execute on Celery workers. This task will gather all of the stats until all
 
  commits are parsed, each task will parse 250 commits, and run the next task to
 
  parse next 250 commits, until all of the commits are parsed.
 
  parse the next 250 commits until all of the commits are parsed.
 

	
 
.. note::
 
   At any time you can disable statistics on each repository via the repository
docs/usage/subrepos.rst
Show inline comments
 
@@ -23,14 +23,14 @@ Example usage of Subrepos with Kallithea
 
    hg ci --message "added remote subrepo"
 

	
 

	
 
In the file list of a clone of repo1 you will see a connected subrepo at
 
revision it was during cloning.
 
Clicking in subrepos link should send you to proper repository in Kallithea.
 
In the file list of a clone of ``repo1`` you will see a connected
 
subrepo at the revision it was at during cloning. Clicking in
 
subrepos link should send you to the proper repository in Kallithea.
 

	
 
Cloning repo1 will also clone attached subrepository.
 
Cloning ``repo1`` will also clone the attached subrepository.
 

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

	
 
See http://mercurial.aragost.com/kick-start/en/subrepositories/ for more
 
information about subrepositories.
docs/usage/troubleshooting.rst
Show inline comments
 
@@ -6,49 +6,50 @@ Troubleshooting
 
===============
 

	
 
:Q: **Missing static files?**
 
:A: Make sure either to set the `static_files = true` in the .ini file or
 
:A: Make sure either to set the ``static_files = true`` in the .ini file or
 
   double check the root path for your http setup. It should point to
 
   for example:
 
   /home/my-virtual-python/lib/python2.7/site-packages/kallithea/public
 
   ``/home/my-virtual-python/lib/python2.7/site-packages/kallithea/public``
 

	
 
|
 

	
 
:Q: **Can't install celery/rabbitmq?**
 
:A: Don't worry Kallithea works without them too. No extra setup is required.
 
    Try out great celery docs for further help.
 
:A: Don't worry. Kallithea works without them, too. No extra setup is required.
 
    Try out the great Celery docs for further help.
 

	
 
|
 

	
 
:Q: **Long lasting push timeouts?**
 
:A: Make sure you set a longer timeouts in your proxy/fcgi settings, timeouts
 
    are caused by https server and not Kallithea.
 
:A: Make sure you set a longer timeout in your proxy/fcgi settings. Timeouts
 
    are caused by the http server and not Kallithea.
 

	
 
|
 

	
 
:Q: **Large pushes timeouts?**
 
:A: Make sure you set a proper max_body_size for the http server. Very often
 
    Apache, Nginx or other http servers kill the connection due to to large
 
:A: Make sure you set a proper ``max_body_size`` for the http server. Very often
 
    Apache, Nginx, or other http servers kill the connection due to to large
 
    body.
 

	
 
|
 

	
 
:Q: **Apache doesn't pass basicAuth on pull/push?**
 
:A: Make sure you added `WSGIPassAuthorization true`.
 
:A: Make sure you added ``WSGIPassAuthorization true``.
 

	
 
|
 

	
 
:Q: **Git fails on push/pull?**
 
:A: Make sure you're using an wsgi http server that can handle chunked encoding
 
    such as `waitress` or `gunicorn`.
 
:A: Make sure you're using a WSGI http server that can handle chunked encoding
 
    such as ``waitress`` or ``gunicorn``.
 

	
 
|
 

	
 
:Q: **How can I use hooks in Kallithea?**
 
:A: It's easy if they are python hooks just use advanced link in hooks section
 
    in Admin panel, that works only for Mercurial. If you want to use githooks,
 
    just install proper one in repository eg. create file in
 
    `/gitrepo/hooks/pre-receive`. You can also use Kallithea-extensions to
 
    connect to callback hooks, for both Git and Mercurial.
 
:A: It's easy if they are Python hooks: just use advanced link in
 
    hooks section in Admin panel, that works only for Mercurial. If
 
    you want to use Git hooks, just install th proper one in the repository,
 
    e.g., create a file `/gitrepo/hooks/pre-receive`. You can also use
 
    Kallithea-extensions to connect to callback hooks, for both Git
 
    and Mercurial.
 

	
 
|
 

	
 
@@ -64,7 +65,7 @@ Troubleshooting
 

	
 
:Q: **Requests hanging on Windows**
 
:A: Please try out with disabled Antivirus software, there are some known problems with Eset Anitivirus. Make sure
 
    you have installed latest windows patches (especially KB2789397).
 
    you have installed the latest Windows patches (especially KB2789397).
 

	
 

	
 
.. _virtualenv: http://pypi.python.org/pypi/virtualenv
0 comments (0 inline, 0 general)