Changeset - 7f9040460576
[Not reviewed]
Merge default
1 58 5
Mads Kiilerich - 10 years ago 2015-10-02 22:46:15
madski@unity3d.com
Merge stable 0.3
63 files changed with 2096 insertions and 860 deletions:
0 comments (0 inline, 0 general)
.hgignore
Show inline comments
 
@@ -28,3 +28,4 @@ syntax: regexp
 
^my\.ini$
 
^fabfile.py
 
^\.idea$
 
^\.cache$
.hgsigs
Show inline comments
 
new file 100644
 
9b3e9e242f5c97cc0c7657e5ac93dce7de61ca16 0 iQEcBAABAgAGBQJWDuAdAAoJEJ1bI/kYT6UUAlYH/ReCa7Im5tvy+ot5oAc7xey/O2rCVHp2h6i82tTWK/0i9EaS4DP+eTbAjV4WJA4qWF5DPenEJ3X9JhrTLNvGkR0f7lUqiFVMTJ472YlSsvIWg38gVFruzwk1cODRfq72o8ERYcRSfzrL4cDpIqjEd/vVVCV/gKVvPmzr4/FED/ZmS0X6T9gxWJo/eWSuLNAxHHtE/pCWDO3XEe+iOm+hHjkyz4Hn2r9/+ucrirnzycH6DnYO/kWvQzBnzgMjJm+1rLZ5cfU89V8zfhv6z0pd8CHZfpKGc2Z8EwVJq9LR+M4/76uDlYXx7IfZAxhRNqN6MC+yvPmDo3382dNr7Wkopi0=
.hgtags
Show inline comments
 
@@ -61,3 +61,4 @@ d17e88a1a88a29f6fac948c94498129e405a40d3
 
ad0ce803b40cb17fc3988373052943e041030b02 0.2
 
c6e32714336345403adf76abb6ebf9b8116fcdc7 0.2.1
 
14f488a5dc4ca6647bc6acf12534fd137e968aa8 0.2.2
 
9b3e9e242f5c97cc0c7657e5ac93dce7de61ca16 0.3
CONTRIBUTORS
Show inline comments
 
@@ -35,6 +35,7 @@ List of contributors to Kallithea projec
 
    Niemand Jedermann <predatorix@web.de> 2015
 
    Peter Vitt <petervitt@web.de> 2015
 
    Robert Martinez <ntttq@inboxen.org> 2015
 
    Robert Rauch <mail@robertrauch.de> 2015
 
    Ronny Pfannschmidt <opensource@ronnypfannschmidt.de> 2015
 
    Sam Jaques <sam.jaques@me.com> 2015
 
    Søren Løvborg <sorenl@unity3d.com> 2015
README.rst
Show inline comments
 
@@ -37,6 +37,13 @@ developers -- you can do the same.
 
Please visit https://docs.kallithea-scm.org/en/latest/installation.html for
 
more details.
 

	
 
There is also an experimental `Puppet module`_ for installing and setting up
 
Kallithea. Currently, only basic functionality is provided, but it is still
 
enough to get up and running quickly, especially for people without Python
 
background. See
 
https://docs.kallithea-scm.org/en/latest/installation_puppet.html for further
 
information.
 

	
 

	
 
Source code
 
-----------
 
@@ -178,7 +185,7 @@ To run Kallithea on a RhodeCode database
 
This location will depend on where you installed Kallithea. If you installed
 
via::
 

	
 
   python setup.py install
 
   python2 setup.py install
 

	
 
then you will find this location at
 
``$VIRTUAL_ENV/lib/python2.7/site-packages/Kallithea-0.1-py2.7.egg/kallithea``.
 
@@ -194,7 +201,7 @@ database, using the database string you 
 
   cd /path/to/kallithea
 
   cp /path/to/rhodecode/rhodecode.db kallithea.db
 
   pip install sqlalchemy-migrate
 
   python kallithea/bin/rebranddb.py sqlite:///kallithea.db
 
   python2 kallithea/bin/rebranddb.py sqlite:///kallithea.db
 

	
 
.. Note::
 

	
 
@@ -238,3 +245,4 @@ repository, and have a look at the hooks
 
.. _Celery: http://celeryproject.org/
 
.. _vcs: http://pypi.python.org/pypi/vcs
 
.. _Software Freedom Conservancy: http://sfconservancy.org/
 
.. _Puppet module: https://forge.puppetlabs.com/rauch/kallithea
development.ini
Show inline comments
 
@@ -57,7 +57,7 @@ pdebug = false
 
## SMTP server settings
 
## Only smtp_server is mandatory. All other settings take the specified default
 
## values.
 
#smtp_server = mail.server.com
 
#smtp_server = smtp.example.com
 
#smtp_username =
 
#smtp_password =
 
#smtp_port = 25
 
@@ -228,8 +228,8 @@ show_revision_number = false
 

	
 
## gist URL alias, used to create nicer urls for gist. This should be an
 
## url that does rewrites to _admin/gists/<gistid>.
 
## example: http://gist.kallithea.server/{gistid}. Empty means use the internal
 
## Kallithea url, ie. http[s]://your.kallithea.server/_admin/gists/<gistid>
 
## example: http://gist.example.com/{gistid}. Empty means use the internal
 
## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid>
 
gist_alias_url =
 

	
 
## white list of API enabled controllers. This allows to add list of
 
@@ -264,7 +264,7 @@ issue_pat = (?:\s*#)(\d+)
 
## fetched from the regex and {repo} is replaced with full repository name
 
## including groups {repo_name} is replaced with just name of repo
 

	
 
issue_server_link = https://myissueserver.com/{repo}/issue/{id}
 
issue_server_link = https://issues.example.com/{repo}/issue/{id}
 

	
 
## prefix to add to link to indicate it's an url
 
## #314 will be replaced by <issue_prefix><id>
 
@@ -274,10 +274,10 @@ issue_prefix = #
 
## issue_pat, issue_server_link, issue_prefix can have suffixes to specify
 
## multiple patterns, to other issues server, wiki or others
 
## below an example how to create a wiki pattern
 
# wiki-some-id -> https://mywiki.com/some-id
 
# wiki-some-id -> https://wiki.example.com/some-id
 

	
 
#issue_pat_wiki = (?:wiki-)(.+)
 
#issue_server_link_wiki = https://mywiki.com/{id}
 
#issue_server_link_wiki = https://wiki.example.com/{id}
 
#issue_prefix_wiki = WIKI-
 

	
 
## instance-id prefix
docs/api/api.rst
Show inline comments
 
@@ -49,7 +49,7 @@ Clients must send JSON encoded JSON-RPC 
 

	
 
For example, to pull to a local "CPython" mirror using curl::
 

	
 
    curl https://example.com/_admin/api -X POST -H 'content-type:text/plain' \
 
    curl https://kallithea.example.com/_admin/api -X POST -H 'content-type:text/plain' \
 
        --data-binary '{"id":1,"api_key":"xe7cdb2v278e4evbdf5vs04v832v0efvcbcve4a3","method":"pull","args":{"repo":"CPython"}}'
 

	
 
In general, provide
 
@@ -83,30 +83,29 @@ way to call the JSON-RPC API.
 

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

	
 
 kallithea-api --apihost=<your.kallithea.server.url> --apikey=<yourapikey> get_repo
 
    kallithea-api --apihost=<Kallithea URL> --apikey=<API key> get_repo
 

	
 
 calling {"api_key": "<apikey>", "id": 75, "args": {}, "method": "get_repo"} to http://127.0.0.1:5000
 
 Kallithea said:
 
 {'error': 'Missing non optional `repoid` arg in JSON DATA',
 
  'id': 75,
 
  'result': None}
 
    Calling method get_repo => <Kallithea URL>
 
    Server response
 
    ERROR:"Missing non optional `repoid` arg in JSON DATA"
 

	
 
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
 
    kallithea-api --apihost=<Kallithea URL> --apikey=<API key> get_repo repoid:myrepo
 

	
 
    calling {"api_key": "<apikey>", "id": 39, "args": {"repoid": "myrepo"}, "method": "get_repo"} to http://127.0.0.1:5000
 
    Kallithea said:
 
    {'error': None,
 
     'id': 39,
 
     'result': <json data...>}
 
    Calling method get_repo => <Kallithea URL>
 
    Server response
 
    {
 
        "clone_uri": null,
 
        "created_on": "2015-08-31T14:55:19.042",
 
    ...
 

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

	
 
  kallithea-api --save-config --apihost=<your.kallithea.server.url> --apikey=<yourapikey>
 
    kallithea-api --save-config --apihost=<Kallithea URL> --apikey=<API key>
 

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

	
 

	
docs/contributing.rst
Show inline comments
 
@@ -34,7 +34,8 @@ To get started with development::
 
        cd kallithea
 
        virtualenv ../kallithea-venv
 
        source ../kallithea-venv/bin/activate
 
        python setup.py develop
 
        pip install --upgrade pip setuptools
 
        python2 setup.py develop
 
        paster make-config Kallithea my.ini
 
        paster setup-db my.ini --user=user --email=user@example.com --password=password --repos=/tmp
 
        paster serve my.ini --reload &
docs/index.rst
Show inline comments
 
@@ -22,6 +22,7 @@ Kallithea Documentation
 
   installation_win_old
 
   installation_iis
 
   setup
 
   installation_puppet
 

	
 
**Usage**
 

	
docs/installation.rst
Show inline comments
 
@@ -39,8 +39,9 @@ repository, follow the instructions belo
 
        cd kallithea
 
        virtualenv ../kallithea-venv
 
        source ../kallithea-venv/bin/activate
 
        python setup.py develop
 
        python setup.py compile_catalog   # for translation of the UI
 
        pip install --upgrade pip setuptools
 
        python2 setup.py develop
 
        python2 setup.py compile_catalog   # for translation of the UI
 

	
 
You can now proceed to :ref:`setup`.
 

	
 
@@ -64,14 +65,25 @@ An additional benefit of virtualenv_ is 
 

	
 
    virtualenv /srv/kallithea/venv
 

	
 
- Activate the virtualenv_ in your current shell session by running::
 
- Activate the virtualenv_ in your current shell session and make sure the
 
  basic requirements are up-to-date by running::
 

	
 
    source /srv/kallithea/venv/bin/activate
 
    pip install --upgrade pip setuptools
 

	
 
.. note:: You can't use UNIX ``sudo`` to source the ``virtualenv`` script; it
 
   will "activate" a shell that terminates immediately. It is also perfectly
 
   acceptable (and desirable) to create a virtualenv as a normal user.
 

	
 
.. note:: Some dependencies are optional. If you need them, install them in
 
   the virtualenv too::
 

	
 
     pip install psycopg2
 
     pip install python-ldap
 

	
 
   This might require installation of development packages using your
 
   distribution's package manager.
 

	
 
- Make a folder for Kallithea data files, and configuration somewhere on the
 
  filesystem. For example::
 

	
 
@@ -84,7 +96,7 @@ An additional benefit of virtualenv_ is 
 
  Alternatively, download a .tar.gz from http://pypi.python.org/pypi/Kallithea,
 
  extract it and run::
 

	
 
    python setup.py install
 
    python2 setup.py install
 

	
 
- This will install Kallithea together with pylons_ and all other required
 
  python libraries into the activated virtualenv.
docs/installation_iis.rst
Show inline comments
 
@@ -55,7 +55,7 @@ the necessary components to finalize an 
 
has been generated, it is necessary to run the following command due to the way
 
that ISAPI-WSGI is made::
 

	
 
    python dispatch.py install
 
    python2 dispatch.py install
 

	
 
This accomplishes two things: generating an ISAPI compliant DLL file,
 
``_dispatch.dll``, and installing a script map handler into IIS for the
 
@@ -103,7 +103,7 @@ ISAPI-WSGI wrapper above uses ``win32tra
 
In order to dump output from WSGI using ``win32traceutil`` it is sufficient to
 
type the following in a console window::
 

	
 
    python -m win32traceutil
 
    python2 -m win32traceutil
 

	
 
and any exceptions occurring in the WSGI layer and below (i.e. in the Kallithea
 
application itself) that are uncaught, will be printed here complete with stack
docs/installation_puppet.rst
Show inline comments
 
new file 100644
 
.. _installation_puppet:
 

	
 
===================================
 
Installation and setup using Puppet
 
===================================
 

	
 
The whole installation and setup process of Kallithea can be simplified by
 
using Puppet and the `rauch/kallithea
 
<https://forge.puppetlabs.com/rauch/kallithea>`_ Puppet module. This is
 
especially useful for getting started quickly, without having to deal with all
 
the Python specialities.
 

	
 
.. note:: The following instructions assume you are not familiar with Puppet at
 
          all. If this is not the case, you should probably skip directly to the
 
          `Kallithea Puppet module documentation
 
          <https://forge.puppetlabs.com/rauch/kallithea#puppet-kallithea>`_.
 

	
 

	
 
Installing Puppet
 
-----------------
 

	
 
This installation variant requires a Unix/Linux type server with Puppet 3.0+
 
installed. Many major distributions have Puppet in their standard repositories.
 
Thus, you will probably be ready to go by running, e.g. ``apt-get install
 
puppet`` or ``yum install puppet``, depending on your distro's favoured package
 
manager. Afterwards, check the Puppet version by running ``puppet --version``
 
and ensure you have at least 3.0.
 

	
 
If your distribution does not provide Puppet packages or you need a
 
newer version, please see the `Puppet Reference Manual
 
<https://docs.puppetlabs.com/puppet/4.2/reference/install_linux.html>`_ for
 
instructions on how to install Puppet on your target platform.
 

	
 

	
 
Installing the Puppet module
 
----------------------------
 

	
 
To install the latest version of the Kallithea Puppet module from the Puppet
 
Forge, run the following as ``root``:
 

	
 
.. code-block:: bash
 

	
 
    puppet module install rauch/kallithea
 

	
 
This will install both the Kallithea Puppet module and its dependency modules.
 

	
 
.. warning::  Be aware that Puppet can do all kinds of things to your systems.
 
              Third-party modules (like the ``kallithea`` module) may run
 
              arbitrary commands on your system (most of the time as the
 
              ``root`` user), so do not apply them on production machines if
 
              you don't know what you are doing. Instead, use a test system
 
              (e.g. a virtual machine) for evaluation purposes.
 

	
 

	
 
Applying the module
 
-------------------
 

	
 
To trigger the actual installation process, we have to *apply* the
 
``kallithea`` Puppet class, which is provided by the module we have just
 
installed, to our system. For this, create a file named e.g. ``kallithea.pp``,
 
a *Puppet manifest*, with the following content:
 

	
 
.. _simple_manifest:
 
.. code-block:: puppet
 

	
 
    class { 'kallithea':
 
      seed_db    => true,
 
      manage_git => true,
 
    }
 

	
 
To apply the manifest, simply run the following (preferably as root):
 

	
 
.. code-block:: bash
 

	
 
    puppet apply kallithea.pp
 

	
 
This will basically run through the usual Kallithea :ref:`installation` and
 
:ref:`setup` steps, as documented. Consult the module documentation for details
 
on `what the module affects
 
<https://forge.puppetlabs.com/rauch/kallithea#what-kallithea-affects>`_. You
 
can also do a *dry run* by adding the ``--noop`` option to the command.
 

	
 

	
 
Using parameters for customizing the setup process
 
--------------------------------------------------
 

	
 
The ``kallithea`` Puppet class provides a number of `parameters
 
<https://forge.puppetlabs.com/rauch/kallithea#class-kallithea>`_ for
 
customizing the setup process. You have seen the usage of the ``seed_db``
 
parameter in the :ref:`example above <simple_manifest>`, but there are more.
 
For example, you can specify the installation directory, the name of the user
 
under which Kallithea gets installed, the initial admin password, etc.
 
Notably, you can provide arbitrary modifications to Kallitheas configuration
 
file by means of the ``config_hash`` parameter.
 

	
 
Parameters, which have not been set explicitly, will be set to default values,
 
which are defined inside the ``kallithea`` Puppet module. For example, if you
 
just stick to the defaults as in the :ref:`example above <simple_manifest>`,
 
you will end up with a Kallithea instance, which
 

	
 
- is installed in ``/srv/kallithea``, owned by the user ``kallithea``
 
- uses the Kallithea default configuration
 
- uses the admin user ``admin`` with password ``adminpw``
 
- is started automatically and enabled on boot
 

	
 
As of Kallithea 0.3.0, this in particular means that Kallithea will use an
 
SQLite database and listen on ``http://localhost:5000``.
 

	
 
See also the `full parameters list
 
<https://forge.puppetlabs.com/rauch/kallithea#class-kallithea>`_ for more
 
information.
 

	
 

	
 
Making your Kallithea instance publicly available
 
-------------------------------------------------
 

	
 
If you followed the instructions above, the Kallithea instance will be
 
listening on ``http://localhost:5000`` and therefore not publicly available.
 
There are several ways to change this.
 

	
 
The direct way
 
^^^^^^^^^^^^^^
 

	
 
The simplest setup is to instruct Kallithea to listen on another IP address
 
and/or port by using the ``config_hash`` parameter of the Kallithea Puppet
 
class. For example, assume we want to listen on all interfaces on port 80:
 

	
 
.. code-block:: puppet
 

	
 
    class { 'kallithea':
 
      seed_db => true,
 
      config_hash => {
 
        "server:main" => {
 
          'host' => '0.0.0.0',
 
          'port' => '80',
 
        }
 
      }
 
    }
 

	
 
Using Apache as reverse proxy
 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 

	
 
In a more advanced setup, you might instead want use a full-blown web server
 
like Apache HTTP Server as the public web server, configured such that requests
 
are internally forwarded to the local Kallithea instance (a so called *reverse
 
proxy setup*). This can be easily done with Puppet as well:
 

	
 
First, install the `puppetlabs/apache
 
<https://forge.puppetlabs.com/puppetlabs/apache>`_ Puppet module as above by running the following as root:
 

	
 
.. code-block:: bash
 

	
 
    puppet module install puppetlabs/apache
 

	
 
Then, append the following to your manifest:
 

	
 
.. code-block:: puppet
 

	
 
    include apache
 

	
 
    apache::vhost { 'kallithea.example.com':
 
      docroot             => '/var/www/html',
 
      manage_docroot      => false,
 
      port                => 80,
 
      proxy_preserve_host => true,
 
      proxy_pass          => [
 
        {
 
          path => '/',
 
          url  => 'http://localhost:5000/',
 
        },
 
      ],
 
    }
 

	
 
Applying the resulting manifest will install the Apache web server and setup a
 
virtual host acting as a reverse proxy for your local Kallithea instance.
docs/installation_win.rst
Show inline comments
 
@@ -71,7 +71,7 @@ If it was not installed or if you are us
 

	
 
- Go to https://bootstrap.pypa.io
 
- 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).
 
- Run "python2 get-pip.py" in the folder where you downloaded get-pip.py (may require admin access).
 

	
 
.. note::
 

	
 
@@ -134,6 +134,7 @@ In a command prompt type (adapting paths
 

	
 
  cd C:\Kallithea\Env\Scripts
 
  activate
 
  pip install --upgrade pip setuptools
 

	
 
The prompt will change into "(Env) C:\\Kallithea\\Env\\Scripts" or similar
 
(depending of your folder structure). Then type::
docs/installation_win_old.rst
Show inline comments
 
@@ -151,7 +151,7 @@ Create a virtual Python environment in C
 
do so, open a CMD (Python Path should be included in Step3), navigate
 
where you downloaded "virtualenv.py", and write::
 

	
 
 python virtualenv.py C:\Kallithea\Env
 
  python2 virtualenv.py C:\Kallithea\Env
 

	
 
(--no-site-packages is now the default behaviour of virtualenv, no need
 
to include it)
 
@@ -183,6 +183,7 @@ In that CMD (loaded with VS2008 PATHs) t
 

	
 
  cd C:\Kallithea\Env\Scripts (or similar)
 
  activate
 
  pip install --upgrade pip setuptools
 

	
 
The prompt will change into "(Env) C:\\Kallithea\\Env\\Scripts" or similar
 
(depending of your folder structure). Then type::
docs/setup.rst
Show inline comments
 
@@ -36,7 +36,7 @@ up for you.
 
The ``setup-db`` values can also be given on the command line.
 
Example::
 

	
 
    paster setup-db my.ini --user=nn --password=secret --email=nn@example.org --repos=/srv/repos
 
    paster setup-db my.ini --user=nn --password=secret --email=nn@example.com --repos=/srv/repos
 

	
 
The ``setup-db`` command will create all needed tables and an
 
admin account. When choosing a root path you can either use a new
 
@@ -108,7 +108,7 @@ If your main directory (the same as set 
 
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
 
    hg clone ssh://user@kallithea.example.com/srv/repos/kallithea
 

	
 
Using other external tools such as mercurial-server_ or using ssh key-based
 
authentication is fully supported.
 
@@ -176,7 +176,7 @@ Here's a typical LDAP setup::
 

	
 
 Connection settings
 
 Enable LDAP          = checked
 
 Host                 = host.example.org
 
 Host                 = host.example.com
 
 Port                 = 389
 
 Account              = <account>
 
 Password             = <password>
 
@@ -443,7 +443,7 @@ and have that replaced with a URL to the
 
uncomment the following variables in the ini file::
 

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

	
 
``issue_pat`` is the regular expression describing which strings in
 
@@ -461,13 +461,13 @@ generate a URL in the format:
 

	
 
.. code-block:: html
 

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

	
 
If needed, more than one pattern can be specified by appending a unique suffix to
 
the variables. For example::
 

	
 
    issue_pat_wiki = (?:wiki-)(.+)
 
    issue_server_link_wiki = https://mywiki.com/{id}
 
    issue_server_link_wiki = https://wiki.example.com/{id}
 
    issue_prefix_wiki = WIKI-
 

	
 
With these settings, wiki pages can be referenced as wiki-some-id, and every
 
@@ -475,7 +475,7 @@ such reference will be transformed into:
 

	
 
.. code-block:: html
 

	
 
  <a href="https://mywiki.com/some-id">WIKI-some-id</a>
 
  <a href="https://wiki.example.com/some-id">WIKI-some-id</a>
 

	
 

	
 
Hook management
 
@@ -569,7 +569,7 @@ Sample config for Nginx using proxy:
 
    ## gist alias
 
    server {
 
       listen          443;
 
       server_name     gist.myserver.com;
 
       server_name     gist.example.com;
 
       access_log      /var/log/nginx/gist.access.log;
 
       error_log       /var/log/nginx/gist.error.log;
 

	
 
@@ -583,13 +583,13 @@ Sample config for Nginx using proxy:
 
       ssl_ciphers DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA:RC4-MD5;
 
       ssl_prefer_server_ciphers on;
 

	
 
       rewrite ^/(.+)$ https://your.kallithea.server/_admin/gists/$1;
 
       rewrite (.*)    https://your.kallithea.server/_admin/gists;
 
       rewrite ^/(.+)$ https://kallithea.example.com/_admin/gists/$1;
 
       rewrite (.*)    https://kallithea.example.com/_admin/gists;
 
    }
 

	
 
    server {
 
       listen          443;
 
       server_name     your.kallithea.server;
 
       server_name     kallithea.example.com
 
       access_log      /var/log/nginx/kallithea.access.log;
 
       error_log       /var/log/nginx/kallithea.error.log;
 

	
 
@@ -612,7 +612,7 @@ Sample config for Nginx using proxy:
 
       }
 

	
 
       location @kallithea {
 
            proxy_pass      http://kallithea;
 
            proxy_pass      http://127.0.0.1:5000;
 
       }
 

	
 
    }
 
@@ -648,8 +648,7 @@ Here is a sample configuration file for 
 
.. code-block:: apache
 

	
 
    <VirtualHost *:80>
 
            ServerName hg.myserver.com
 
            ServerAlias hg.myserver.com
 
            ServerName kallithea.example.com
 

	
 
            <Proxy *>
 
              # For Apache 2.4 and later:
docs/usage/general.rst
Show inline comments
 
@@ -78,11 +78,11 @@ Permanent repository URLs
 
Due to the complicated nature of repository grouping, URLs of repositories
 
can often change. For example, a repository originally accessible from::
 

	
 
  http://example.com/repo_name
 
  http://kallithea.example.com/repo_name
 

	
 
would get a new URL after moving it to test_group::
 

	
 
  http://example.com/test_group/repo_name
 
  http://kallithea.example.com/test_group/repo_name
 

	
 
Such moving of a repository to a group can be an issue for build systems and
 
other scripts where the repository paths are hardcoded. To mitigate this,
 
@@ -94,7 +94,7 @@ such URLs.
 

	
 
In the example, the repository could also be accessible as::
 

	
 
  http://example.com/_<ID>
 
  http://kallithea.example.com/_<ID>
 

	
 
The ID of a given repository can be shown from the repository ``Summary`` page,
 
by selecting the ``Show by ID`` button next to ``Clone URL``.
 
@@ -137,7 +137,7 @@ Currently it supports the following opti
 

	
 
If you need to clone repositories that are protected via basic authentication,
 
you can pass the credentials in the URL, e.g.
 
``http://user:passw@remote.server/repo``. Kallithea will then try to login and
 
``http://user:passw@remote.example.com/repo``. Kallithea will then try to login and
 
clone using the given credentials. Please note that the given credentials will
 
be stored as plaintext inside the database. However, the authentication
 
information will not be shown in the clone URL on the summary page.
kallithea/__init__.py
Show inline comments
 
@@ -29,7 +29,7 @@ Original author and date, and relevant c
 
import sys
 
import platform
 

	
 
VERSION = (0, 2, 2)
 
VERSION = (0, 3)
 
BACKENDS = {
 
    'hg': 'Mercurial repository',
 
    'git': 'Git repository',
kallithea/bin/kallithea_api.py
Show inline comments
 
@@ -36,7 +36,7 @@ def argparser(argv):
 
      "kallithea-api [-h] [--format=FORMAT] [--apikey=APIKEY] [--apihost=APIHOST] "
 
      "[--config=CONFIG] [--save-config] "
 
      "METHOD <key:val> <key2:val> ...\n"
 
      "Create config file: kallithea-api --apikey=<key> --apihost=http://your.kallithea.server --save-config"
 
      "Create config file: kallithea-api --apikey=<key> --apihost=http://kallithea.example.com --save-config"
 
    )
 

	
 
    parser = argparse.ArgumentParser(description='Kallithea API cli',
kallithea/bin/kallithea_gist.py
Show inline comments
 
@@ -39,7 +39,7 @@ def argparser(argv):
 
      "kallithea-gist [-h] [--format=FORMAT] [--apikey=APIKEY] [--apihost=APIHOST] "
 
      "[--config=CONFIG] [--save-config] [GIST OPTIONS] "
 
      "[filename or stdin use - for terminal stdin ]\n"
 
      "Create config file: kallithea-gist --apikey=<key> --apihost=http://your.kallithea.server --save-config"
 
      "Create config file: kallithea-gist --apikey=<key> --apihost=http://kallithea.example.com --save-config"
 
    )
 

	
 
    parser = argparse.ArgumentParser(description='Kallithea Gist cli',
kallithea/bin/ldap_sync.conf
Show inline comments
 
[default]
 
api_url = http://your.kallithea.server:5000/_admin/api
 
api_url = http://kallithea.example.com/_admin/api
 
api_user = admin
 
api_key = XXXXXXXXXXXX
 

	
 
ldap_uri = ldap://your.ldap.server:389
 
ldap_user = cn=kallithea,ou=binders,dc=linaro,dc=org
 
ldap_uri = ldap://ldap.example.com:389
 
ldap_user = cn=kallithea,dc=example,dc=com
 
ldap_key = XXXXXXXXX
 
base_dn = dc=linaro,dc=org
 
base_dn = dc=example,dc=com
 

	
 
sync_users = True
 
\ No newline at end of file
kallithea/bin/template.ini.mako
Show inline comments
 
@@ -51,7 +51,7 @@ pdebug = false
 
<%text>## SMTP server settings</%text>
 
<%text>## Only smtp_server is mandatory. All other settings take the specified default</%text>
 
<%text>## values.</%text>
 
#smtp_server = mail.server.com
 
#smtp_server = smtp.example.com
 
#smtp_username =
 
#smtp_password =
 
#smtp_port = 25
 
@@ -226,8 +226,8 @@ show_revision_number = false
 

	
 
<%text>## gist URL alias, used to create nicer urls for gist. This should be an</%text>
 
<%text>## url that does rewrites to _admin/gists/<gistid>.</%text>
 
<%text>## example: http://gist.kallithea.server/{gistid}. Empty means use the internal</%text>
 
<%text>## Kallithea url, ie. http[s]://your.kallithea.server/_admin/gists/<gistid></%text>
 
<%text>## example: http://gist.example.com/{gistid}. Empty means use the internal</%text>
 
<%text>## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid></%text>
 
gist_alias_url =
 

	
 
<%text>## white list of API enabled controllers. This allows to add list of</%text>
 
@@ -262,7 +262,7 @@ issue_pat = (?:\s*#)(\d+)
 
<%text>## fetched from the regex and {repo} is replaced with full repository name</%text>
 
<%text>## including groups {repo_name} is replaced with just name of repo</%text>
 

	
 
issue_server_link = https://myissueserver.com/{repo}/issue/{id}
 
issue_server_link = https://issues.example.com/{repo}/issue/{id}
 

	
 
<%text>## prefix to add to link to indicate it's an url</%text>
 
<%text>## #314 will be replaced by <issue_prefix><id></%text>
 
@@ -272,10 +272,10 @@ issue_prefix = #
 
<%text>## issue_pat, issue_server_link, issue_prefix can have suffixes to specify</%text>
 
<%text>## multiple patterns, to other issues server, wiki or others</%text>
 
<%text>## below an example how to create a wiki pattern</%text>
 
# wiki-some-id -> https://mywiki.com/some-id
 
# wiki-some-id -> https://wiki.example.com/some-id
 

	
 
#issue_pat_wiki = (?:wiki-)(.+)
 
#issue_server_link_wiki = https://mywiki.com/{id}
 
#issue_server_link_wiki = https://wiki.example.com/{id}
 
#issue_prefix_wiki = WIKI-
 

	
 
<%text>## instance-id prefix</%text>
kallithea/config/deployment.ini_tmpl
Show inline comments
 
@@ -52,7 +52,7 @@ pdebug = false
 
## SMTP server settings
 
## Only smtp_server is mandatory. All other settings take the specified default
 
## values.
 
#smtp_server = mail.server.com
 
#smtp_server = smtp.example.com
 
#smtp_username =
 
#smtp_password =
 
#smtp_port = 25
 
@@ -222,8 +222,8 @@ show_revision_number = false
 

	
 
## gist URL alias, used to create nicer urls for gist. This should be an
 
## url that does rewrites to _admin/gists/<gistid>.
 
## example: http://gist.kallithea.server/{gistid}. Empty means use the internal
 
## Kallithea url, ie. http[s]://your.kallithea.server/_admin/gists/<gistid>
 
## example: http://gist.example.com/{gistid}. Empty means use the internal
 
## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid>
 
gist_alias_url =
 

	
 
## white list of API enabled controllers. This allows to add list of
 
@@ -258,7 +258,7 @@ issue_pat = (?:\s*#)(\d+)
 
## fetched from the regex and {repo} is replaced with full repository name
 
## including groups {repo_name} is replaced with just name of repo
 

	
 
issue_server_link = https://myissueserver.com/{repo}/issue/{id}
 
issue_server_link = https://issues.example.com/{repo}/issue/{id}
 

	
 
## prefix to add to link to indicate it's an url
 
## #314 will be replaced by <issue_prefix><id>
 
@@ -268,10 +268,10 @@ issue_prefix = #
 
## issue_pat, issue_server_link, issue_prefix can have suffixes to specify
 
## multiple patterns, to other issues server, wiki or others
 
## below an example how to create a wiki pattern
 
# wiki-some-id -> https://mywiki.com/some-id
 
# wiki-some-id -> https://wiki.example.com/some-id
 

	
 
#issue_pat_wiki = (?:wiki-)(.+)
 
#issue_server_link_wiki = https://mywiki.com/{id}
 
#issue_server_link_wiki = https://wiki.example.com/{id}
 
#issue_prefix_wiki = WIKI-
 

	
 
## instance-id prefix
kallithea/controllers/changelog.py
Show inline comments
 
@@ -98,7 +98,6 @@ class ChangelogController(BaseRepoContro
 
        # TODO: Somehow just don't send this extra junk in the GET URL
 
        if request.GET.get('set'):
 
            request.GET.pop('set', None)
 
            request.GET.pop('_authentication_token', None)
 
            if revision is None:
 
                return redirect(url('changelog_home', repo_name=repo_name, **request.GET))
 
            return redirect(url('changelog_file_home', repo_name=repo_name, revision=revision, f_path=f_path, **request.GET))
kallithea/controllers/login.py
Show inline comments
 
@@ -27,8 +27,8 @@ Original author and date, and relevant c
 

	
 

	
 
import logging
 
import re
 
import formencode
 
import urlparse
 

	
 
from formencode import htmlfill
 
from webob.exc import HTTPFound, HTTPBadRequest
 
@@ -56,32 +56,27 @@ class LoginController(BaseController):
 
    def __before__(self):
 
        super(LoginController, self).__before__()
 

	
 
    def _validate_came_from(self, came_from):
 
        """Return True if came_from is valid and can and should be used"""
 
        if not came_from:
 
            return False
 
    def _validate_came_from(self, came_from,
 
            _re=re.compile(r"/(?!/)[-!#$%&'()*+,./:;=?@_~0-9A-Za-z]*$")):
 
        """Return True if came_from is valid and can and should be used.
 

	
 
        Determines if a URI reference is valid and relative to the origin;
 
        or in RFC 3986 terms, whether it matches this production:
 

	
 
        parsed = urlparse.urlparse(came_from)
 
        server_parsed = urlparse.urlparse(url.current())
 
        allowed_schemes = ['http', 'https']
 
        if parsed.scheme and parsed.scheme not in allowed_schemes:
 
            log.error('Suspicious URL scheme detected %s for url %s',
 
                     parsed.scheme, parsed)
 
            return False
 
        if server_parsed.netloc != parsed.netloc:
 
            log.error('Suspicious NETLOC detected %s for url %s server url '
 
                      'is: %s' % (parsed.netloc, parsed, server_parsed))
 
            return False
 
        return True
 
          origin-relative-ref = path-absolute [ "?" query ] [ "#" fragment ]
 

	
 
    def _redirect_to_origin(self, origin):
 
        '''redirect to the original page, preserving any get arguments given'''
 
        request.GET.pop('came_from', None)
 
        raise HTTPFound(location=url(origin, **request.GET))
 
        with the exception that '%' escapes are not validated and '#' is
 
        allowed inside the fragment part.
 
        """
 
        return _re.match(came_from) is not None
 

	
 
    def index(self):
 
        c.came_from = safe_str(request.GET.get('came_from', ''))
 
        if not self._validate_came_from(c.came_from):
 
        if c.came_from:
 
            if not self._validate_came_from(c.came_from):
 
                log.error('Invalid came_from (not server-relative): %r', c.came_from)
 
                raise HTTPBadRequest()
 
        else:
 
            c.came_from = url('home')
 

	
 
        not_default = self.authuser.username != User.DEFAULT_USER
 
@@ -89,7 +84,7 @@ class LoginController(BaseController):
 

	
 
        # redirect if already logged in
 
        if self.authuser.is_authenticated and not_default and ip_allowed:
 
            return self._redirect_to_origin(c.came_from)
 
            raise HTTPFound(location=c.came_from)
 

	
 
        if request.POST:
 
            # import Login Form validator class
 
@@ -119,7 +114,7 @@ class LoginController(BaseController):
 
            else:
 
                log_in_user(user, c.form_result['remember'],
 
                    is_external_auth=False)
 
                return self._redirect_to_origin(c.came_from)
 
                raise HTTPFound(location=c.came_from)
 

	
 
        return render('/login.html')
 

	
kallithea/controllers/pullrequests.py
Show inline comments
 
@@ -502,9 +502,10 @@ class PullrequestsController(BaseRepoCon
 
        pull_request.title = _form['pullrequest_title']
 
        pull_request.description = _form['pullrequest_desc'].strip() or _('No description')
 
        pull_request.owner = User.get_by_username(_form['owner'])
 
        user = User.get(c.authuser.user_id)
 
        try:
 
            PullRequestModel().mention_from_description(pull_request, old_description)
 
            PullRequestModel().update_reviewers(pull_request_id, reviewers_ids)
 
            PullRequestModel().mention_from_description(user, pull_request, old_description)
 
            PullRequestModel().update_reviewers(user, pull_request_id, reviewers_ids)
 
        except UserInvalidException as u:
 
            h.flash(_('Invalid reviewer "%s" specified') % u, category='error')
 
            raise HTTPBadRequest()
 
@@ -590,7 +591,7 @@ class PullrequestsController(BaseRepoCon
 
            # candidates: descendants of old head that are on the right branch
 
            #             and not are the old head itself ...
 
            #             and nothing at all if old head is a descendant of target ref name
 
            if other_scm_instance._repo.revs('present(%s)::&%s', c.cs_ranges[-1].raw_id, c.a_branch_name):
 
            if not c.is_range and other_scm_instance._repo.revs('present(%s)::&%s', c.cs_ranges[-1].raw_id, c.a_branch_name):
 
                c.update_msg = _('This pull request has already been merged to %s.') % c.a_branch_name
 
            elif c.pull_request.is_closed():
 
                c.update_msg = _('This pull request has been closed and can not be updated.')
 
@@ -614,10 +615,11 @@ class PullrequestsController(BaseRepoCon
 
                    c.update_msg = _('This pull request can be updated with changes on %s:') % c.cs_branch_name
 
                else:
 
                    show = set()
 
                    avail_revs = set() # drop revs[0]
 
                    c.update_msg = _('No changesets found for updating this pull request.')
 

	
 
                # TODO: handle branch heads that not are tip-most
 
                brevs = org_scm_instance._repo.revs('%s - %ld', c.cs_branch_name, avail_revs)
 
                brevs = org_scm_instance._repo.revs('%s - %ld - %s', c.cs_branch_name, avail_revs, revs[0])
 
                if brevs:
 
                    # also show changesets that are on branch but neither ancestors nor descendants
 
                    show.update(org_scm_instance._repo.revs('::%ld - ::%ld - ::%s', brevs, avail_revs, c.a_branch_name))
kallithea/controllers/summary.py
Show inline comments
 
@@ -195,6 +195,7 @@ class SummaryController(BaseRepoControll
 
        stats = self.sa.query(Statistics)\
 
            .filter(Statistics.repository == c.db_repo)\
 
            .scalar()
 
        c.stats_percentage = 0
 
        if stats and stats.languages:
 
            c.no_data = False is c.db_repo.enable_statistics
 
            lang_stats_d = json.loads(stats.languages)
kallithea/i18n/fr/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -8,10 +8,10 @@ msgstr ""
 
"Project-Id-Version: Kallithea 0.3\n"
 
"Report-Msgid-Bugs-To: translations@kallithea-scm.org\n"
 
"POT-Creation-Date: 2015-09-08 10:34+0200\n"
 
"PO-Revision-Date: 2015-09-07 16:35+0200\n"
 
"Last-Translator: Andrew Shadura <andrew@shadura.me>\n"
 
"PO-Revision-Date: 2015-09-10 15:13+0200\n"
 
"Last-Translator: Étienne Gilli <etienne.gilli@gmail.com>\n"
 
"Language-Team: French "
 
"<https://hosted.weblate.org/projects/kallithea/kallithea/fr/>\n"
 
"<https://hosted.weblate.org/projects/kallithea/stable/fr/>\n"
 
"Language: fr\n"
 
"MIME-Version: 1.0\n"
 
"Content-Type: text/plain; charset=UTF-8\n"
 
@@ -50,9 +50,9 @@ msgid "Ignore whitespace"
 
msgstr "Ignorer les espaces et tabulations"
 

	
 
#: kallithea/controllers/changeset.py:169
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Increase diff context to %(num)s lines"
 
msgstr "augmenter le contexte du diff à %(num)s lignes"
 
msgstr "Augmenter le contexte du diff à %(num)s lignes"
 

	
 
#: kallithea/controllers/changeset.py:212 kallithea/controllers/files.py:96
 
#: kallithea/controllers/files.py:116 kallithea/controllers/files.py:742
 
@@ -299,8 +299,7 @@ msgstr "Journal public"
 
msgid "Journal"
 
msgstr "Historique"
 

	
 
#: kallithea/controllers/login.py:150 kallithea/controllers/login.py:196
 
#| msgid "bad captcha"
 
#: kallithea/controllers/login.py:151 kallithea/controllers/login.py:197
 
msgid "Bad captcha"
 
msgstr "Mauvais captcha"
 

	
 
@@ -309,16 +308,15 @@ msgid "You have successfully registered 
 
msgstr "Vous vous êtes inscrits avec succès à Kallithea"
 

	
 
#: kallithea/controllers/login.py:202
 
#, fuzzy
 
#| msgid "Your password reset link was sent"
 
msgid "A password reset confirmation code has been sent"
 
msgstr "Un lien de rénitialisation de votre mot de passe vous a été envoyé"
 
msgstr ""
 
"Un lien de confirmation de réinitialisation de mot de passe a été envoyé"
 

	
 
#: kallithea/controllers/login.py:251
 
#, fuzzy
 
#| msgid "Password reset link"
 
msgid "Invalid password reset token"
 
msgstr "Lien de remise à zéro du mot de passe"
 
msgstr "Clé de réinitialisation de mot de passe invalide"
 

	
 
#: kallithea/controllers/login.py:256
 
#: kallithea/controllers/admin/my_account.py:167
 
@@ -438,7 +436,7 @@ msgstr "Cette demande de pull peut être mise à jour avec les modifications de %s :"
 

	
 
#: kallithea/controllers/pullrequests.py:617
 
msgid "No changesets found for updating this pull request."
 
msgstr "Pas de changeset trouvé pour ce pull request"
 
msgstr "Pas de changeset trouvé pour ce pull request."
 

	
 
#: kallithea/controllers/pullrequests.py:625
 
#, python-format
 
@@ -451,7 +449,7 @@ msgstr "Le smises à jour des Git pull requests ne sont pas encore supportées."
 

	
 
#: kallithea/controllers/pullrequests.py:722
 
msgid "No permission to change pull request status"
 
msgstr ""
 
msgstr "Permission manquante pour changer le statut du pull request"
 

	
 
#: kallithea/controllers/pullrequests.py:727
 
msgid "Closing."
 
@@ -502,9 +500,8 @@ msgstr "Une erreur est survenue durant la mise à jour des réglages par défaut"
 
#: kallithea/controllers/admin/gists.py:59
 
#: kallithea/controllers/admin/my_account.py:243
 
#: kallithea/controllers/admin/users.py:285
 
#, fuzzy
 
msgid "Forever"
 
msgstr "pour toujours"
 
msgstr "Pour toujours"
 

	
 
#: kallithea/controllers/admin/gists.py:60
 
#: kallithea/controllers/admin/my_account.py:244
 
@@ -546,9 +543,8 @@ msgid "Deleted gist %s"
 
msgstr "Gist %s supprimé"
 

	
 
#: kallithea/controllers/admin/gists.py:233
 
#, fuzzy
 
msgid "Unmodified"
 
msgstr "non modifié"
 
msgstr "Non modifié"
 

	
 
#: kallithea/controllers/admin/gists.py:262
 
msgid "Successfully updated gist content"
 
@@ -832,9 +828,9 @@ msgid "Deleted repository %s"
 
msgstr "Dépôt %s supprimé"
 

	
 
#: kallithea/controllers/admin/repos.py:321
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Cannot delete repository %s which still has forks"
 
msgstr "Impossible de supprimer le dépôt %s : Des forks y sont attachés"
 
msgstr "Impossible de supprimer le dépôt %s : des forks y sont attachés"
 

	
 
#: kallithea/controllers/admin/repos.py:326
 
#, python-format
 
@@ -882,15 +878,13 @@ msgstr "Une erreur est survenue durant cette opération"
 

	
 
#: kallithea/controllers/admin/repos.py:537
 
#: kallithea/controllers/admin/repos.py:564
 
#, fuzzy
 
msgid "Repository has been locked"
 
msgstr "Ce dépôt n’est pas verrouillé"
 
msgstr "Ce dépôt a été verrouillé"
 

	
 
#: kallithea/controllers/admin/repos.py:540
 
#: kallithea/controllers/admin/repos.py:561
 
#, fuzzy
 
msgid "Repository has been unlocked"
 
msgstr "Ce dépôt n’est pas verrouillé"
 
msgstr "Ce dépôt a été déverrouillé"
 

	
 
#: kallithea/controllers/admin/repos.py:543
 
#: kallithea/controllers/admin/repos.py:568
 
@@ -1049,7 +1043,7 @@ msgstr "Une erreur est survenue durant la suppression de l’utilisateur"
 

	
 
#: kallithea/controllers/admin/users.py:236
 
msgid "The default user cannot be edited"
 
msgstr ""
 
msgstr "L'utilisateur par défaut ne peut pas être modifié"
 

	
 
#: kallithea/controllers/admin/users.py:463
 
#, python-format
 
@@ -1070,9 +1064,8 @@ msgid "IP %s not allowed"
 
msgstr "IP %s non autorisée"
 

	
 
#: kallithea/lib/auth.py:756
 
#, fuzzy
 
msgid "Invalid API key"
 
msgstr "Nouvelle clé d'API"
 
msgstr "Clé d'API invalide"
 

	
 
#: kallithea/lib/auth.py:812
 
msgid "You need to be a registered user to perform this action"
 
@@ -1084,7 +1077,7 @@ msgstr "Vous devez être connecté pour visualiser cette page"
 

	
 
#: kallithea/lib/base.py:490
 
msgid "Repository not found in the filesystem"
 
msgstr ""
 
msgstr "Dépôt non trouvé sur le système de fichiers"
 

	
 
#: kallithea/lib/base.py:516 kallithea/lib/helpers.py:622
 
msgid "Changeset not found"
 
@@ -1120,9 +1113,8 @@ msgid "Show all combined changesets %s->
 
msgstr "Afficher les changements combinés %s->%s"
 

	
 
#: kallithea/lib/helpers.py:677
 
#, fuzzy
 
msgid "Compare view"
 
msgstr "vue de comparaison"
 
msgstr "Vue de comparaison"
 

	
 
#: kallithea/lib/helpers.py:696
 
msgid "and"
 
@@ -1138,14 +1130,14 @@ msgid "revisions"
 
msgstr "révisions"
 

	
 
#: kallithea/lib/helpers.py:722
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Fork name %s"
 
msgstr "nom du fork %s"
 
msgstr "Nom du fork %s"
 

	
 
#: kallithea/lib/helpers.py:742
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Pull request %s"
 
msgstr "Requête de pull #%s"
 
msgstr "Requête de pull %s"
 

	
 
#: kallithea/lib/helpers.py:752
 
msgid "[deleted] repository"
 
@@ -1236,7 +1228,7 @@ msgstr " et %s de plus"
 
#: kallithea/templates/compare/compare_diff.html:65
 
#: kallithea/templates/pullrequests/pullrequest_show.html:326
 
msgid "No files"
 
msgstr ""
 
msgstr "Aucun fichier"
 

	
 
#: kallithea/lib/helpers.py:1194
 
msgid "new file"
 
@@ -1781,111 +1773,113 @@ msgstr "[Mention]"
 

	
 
#: kallithea/model/db.py:1667
 
msgid "Default user has no access to new repositories"
 
msgstr ""
 
msgstr "L'utilisateur par défaut n'a pas accès aux nouveaux dépôts"
 

	
 
#: kallithea/model/db.py:1668
 
#, fuzzy
 
msgid "Default user has read access to new repositories"
 
msgstr "Accès interdit à cette ressource"
 
msgstr "L'utilisateur par défaut a un accès en lecture aux nouveaux dépôts"
 

	
 
#: kallithea/model/db.py:1669
 
#, fuzzy
 
msgid "Default user has write access to new repositories"
 
msgstr "Accès interdit à cette ressource"
 
msgstr "L'utilisateur par défaut a un accès en écriture aux nouveaux dépôts"
 

	
 
#: kallithea/model/db.py:1670
 
msgid "Default user has admin access to new repositories"
 
msgstr ""
 
msgstr "L'utilisateur par défaut a un accès administrateur aux nouveaux dépôts"
 

	
 
#: kallithea/model/db.py:1672
 
msgid "Default user has no access to new repository groups"
 
msgstr ""
 
msgstr "L'utilisateur par défaut n'a pas accès aux nouveaux groupes de dépôts"
 

	
 
#: kallithea/model/db.py:1673
 
msgid "Default user has read access to new repository groups"
 
msgstr ""
 
"L'utilisateur par défaut a accès en lecture seule aux nouveaux groupes de "
 
"dépôts"
 

	
 
#: kallithea/model/db.py:1674
 
msgid "Default user has write access to new repository groups"
 
msgstr ""
 
"L'utilisateur par défaut a accès en écriture aux nouveaux groupes de dépôts"
 

	
 
#: kallithea/model/db.py:1675
 
msgid "Default user has admin access to new repository groups"
 
msgstr ""
 
"L'utilisateur par défaut a accès administrateur aux nouveaux groupes de "
 
"dépôts"
 

	
 
#: kallithea/model/db.py:1677
 
msgid "Default user has no access to new user groups"
 
msgstr ""
 
"L'utilisateur par défaut n'a pas accès aux nouveaux groupes d'utilisateurs"
 

	
 
#: kallithea/model/db.py:1678
 
msgid "Default user has read access to new user groups"
 
msgstr ""
 
"L'utilisateur par défaut a accès en lecture seule aux nouveaux groupes "
 
"d'utilisateurs"
 

	
 
#: kallithea/model/db.py:1679
 
msgid "Default user has write access to new user groups"
 
msgstr ""
 
"L'utilisateur par défaut a accès en écriture aux nouveaux groupes "
 
"d'utilisateurs"
 

	
 
#: kallithea/model/db.py:1680
 
msgid "Default user has admin access to new user groups"
 
msgstr ""
 
"L'utilisateur par défaut a un accès administrateur aux nouveaux groupes "
 
"d'utilisateurs"
 

	
 
#: kallithea/model/db.py:1682
 
#, fuzzy
 
msgid "Only admins can create repository groups"
 
msgstr "Groupe de dépôts %s créé"
 
msgstr "Seul un administrateur peut créer un groupe de dépôts"
 

	
 
#: kallithea/model/db.py:1683
 
#, fuzzy
 
msgid "Non-admins can create repository groups"
 
msgstr "Groupe de dépôts %s créé"
 
msgstr ""
 
"Les utilisateurs non-administrateurs peuvent créer des groupes de dépôts"
 

	
 
#: kallithea/model/db.py:1685
 
#, fuzzy
 
msgid "Only admins can create user groups"
 
msgstr "[créé] groupe d'utilisateurs"
 
msgstr "Seul un administrateur peut créer des groupes d'utilisateurs"
 

	
 
#: kallithea/model/db.py:1686
 
#, fuzzy
 
msgid "Non-admins can create user groups"
 
msgstr "[créé] groupe d'utilisateurs"
 
msgstr ""
 
"Les utilisateurs non-administrateurs peuvent créer des groupes d'utilisateurs"
 

	
 
#: kallithea/model/db.py:1688
 
#, fuzzy
 
msgid "Only admins can create top level repositories"
 
msgstr "Dépôts de niveau supérieur"
 
msgstr "Seul un administrateur peut créer des dépôts de niveau supérieur"
 

	
 
#: kallithea/model/db.py:1689
 
#, fuzzy
 
msgid "Non-admins can create top level repositories"
 
msgstr "Dépôts de niveau supérieur"
 
msgstr ""
 
"Les utilisateurs non-administrateurs peuvent créer des dépôts de niveau "
 
"supérieur"
 

	
 
#: kallithea/model/db.py:1694
 
#, fuzzy
 
msgid "Only admins can fork repositories"
 
msgstr "Dépôts totaux"
 
msgstr "Seul un administrateur peut faire un fork de dépôt"
 

	
 
#: kallithea/model/db.py:1695
 
#, fuzzy
 
msgid "Non-admins can can fork repositories"
 
msgstr "Invalider le cache pour tous les dépôts"
 
msgstr "Les utilisateurs non-administrateurs peuvent faire un fork de dépôt"
 

	
 
#: kallithea/model/db.py:1698
 
#, fuzzy
 
msgid "User registration with manual account activation"
 
msgstr "Enregistrement des utilisateurs avec activation de compte manuelle"
 

	
 
#: kallithea/model/db.py:1699
 
#, fuzzy
 
msgid "User registration with automatic account activation"
 
msgstr "Enregistrement des utilisateurs avec activation de compte automatique"
 

	
 
#: kallithea/model/db.py:2228
 
#, fuzzy
 
msgid "Not reviewed"
 
msgstr "Pas encore relue"
 

	
 
#: kallithea/model/db.py:2231
 
#, fuzzy
 
msgid "Under review"
 
msgstr "En cours de relecture"
 

	
 
@@ -1912,34 +1906,34 @@ msgid "Name must not contain only digits
 
msgstr "Le nom ne doit pas contenir seulement des chiffres"
 

	
 
#: kallithea/model/notification.py:254
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%(user)s commented on changeset %(age)s"
 
msgstr "%(user)s a commenté sur le changeset à %(when)s"
 
msgstr "%(user)s a commenté sur le changeset %(age)s"
 

	
 
#: kallithea/model/notification.py:255
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%(user)s sent message %(age)s"
 
msgstr "%(user)s a envoyé un message à %(when)s"
 
msgstr "%(user)s a envoyé un message %(age)s"
 

	
 
#: kallithea/model/notification.py:256
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%(user)s mentioned you %(age)s"
 
msgstr "%(user)s vous a mentionné à %(when)s"
 
msgstr "%(user)s vous a mentionné %(age)s"
 

	
 
#: kallithea/model/notification.py:257
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%(user)s registered in Kallithea %(age)s"
 
msgstr "%(user)s s'est enregistré sur Kallithea à %(when)s"
 
msgstr "%(user)s s'est enregistré sur Kallithea %(age)s"
 

	
 
#: kallithea/model/notification.py:258
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%(user)s opened new pull request %(age)s"
 
msgstr "%(user)s a ouvert une nouvelle demande de pull à %(when)s"
 
msgstr "%(user)s a ouvert une nouvelle demande de pull %(age)s"
 

	
 
#: kallithea/model/notification.py:259
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%(user)s commented on pull request %(age)s"
 
msgstr "%(user)s a commenté la demande de pull à %(when)s"
 
msgstr "%(user)s a commenté la demande de pull %(age)s"
 

	
 
#: kallithea/model/notification.py:266
 
#, python-format
 
@@ -1974,7 +1968,7 @@ msgstr "%(user)s a commenté la demande de pull à %(when)s"
 
#: kallithea/model/notification.py:302
 
#, python-format
 
msgid "[Comment] %(repo_name)s changeset %(short_id)s on %(branch)s"
 
msgstr ""
 
msgstr "[Commentaire] Changeset %(short_id)s de %(repo_name)s dans %(branch)s"
 

	
 
#: kallithea/model/notification.py:305
 
#, python-format
 
@@ -1982,29 +1976,30 @@ msgid "New user %(new_username)s registe
 
msgstr "Nouvel utilisateur %(new_username)s enregistré"
 

	
 
#: kallithea/model/notification.py:307
 
#, fuzzy, python-format
 
#| msgid "%(user)s wants you to review pull request %(pr_nice_id)s:
 
#| %(pr_title)s"
 
#, python-format
 
#| msgid "%(user)s wants you to review pull request %(pr_nice_id)s:"
 
msgid "[Added] %(repo_name)s pull request %(pr_nice_id)s from %(ref)s"
 
msgstr ""
 
"%(user)s veut que vous regardiez la demande de pull #%(pr_id)s : "
 
"%(pr_title)s"
 
"[Ajouté] Demande de pull %(pr_nice_id)s à partir de %(ref)s pour "
 
"%(repo_name)s"
 

	
 
#: kallithea/model/notification.py:308
 
#, fuzzy, python-format
 
#, python-format
 
#| msgid "[commented] on pull request for"
 
msgid "[Comment] %(repo_name)s pull request %(pr_nice_id)s from %(ref)s"
 
msgstr "[a commenté] la requête de pull pour"
 
msgstr ""
 
"[Commentaire] Demande de pull %(pr_nice_id)s à partir de %(ref)s pour "
 
"%(repo_name)s"
 

	
 
#: kallithea/model/notification.py:321
 
msgid "Closing"
 
msgstr "Fermeture"
 

	
 
#: kallithea/model/pull_request.py:137
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%(user)s wants you to review pull request %(pr_nice_id)s: %(pr_title)s"
 
msgstr ""
 
"%(user)s veut que vous regardiez la demande de pull #%(pr_id)s: "
 
"%(user)s veut que vous regardiez la demande de pull %(pr_nice_id)s : "
 
"%(pr_title)s"
 

	
 
#: kallithea/model/scm.py:812
 
@@ -2016,11 +2011,10 @@ msgid "New user registration"
 
msgstr "Nouveau enregistrement d'utilisateur"
 

	
 
#: kallithea/model/user.py:256
 
#, fuzzy
 
msgid "You can't remove this user since it is crucial for the entire application"
 
msgstr ""
 
"Vous ne pouvez pas supprimer cet utilisateur ; il est nécessaire pour le "
 
"bon fonctionnement de l’application"
 
"Vous ne pouvez pas supprimer cet utilisateur ; il est nécessaire pour le bon "
 
"fonctionnement de l’application"
 

	
 
#: kallithea/model/user.py:261
 
#, python-format
 
@@ -2041,23 +2035,23 @@ msgstr ""
 
"supprimé. Changez les propriétaires ou supprimez ces dépôts : %s"
 

	
 
#: kallithea/model/user.py:273
 
#, fuzzy, python-format
 
#, python-format
 
msgid ""
 
"User \"%s\" still owns %s user groups and cannot be removed. Switch "
 
"owners or remove those user groups: %s"
 
msgstr ""
 
"L’utilisateur « %s » possède %s dépôts et ne peut être supprimé. Changez "
 
"les propriétaires de ces dépôts. %s"
 
"L’utilisateur « %s » possède %s groupes d'utilisateurs et ne peut pas être "
 
"supprimé. Changez les propriétaires de ces groupes d'utilisateurs ou "
 
"supprimez-les : %s"
 

	
 
#: kallithea/model/user.py:360
 
msgid "Password reset link"
 
msgstr "Lien de remise à zéro du mot de passe"
 

	
 
#: kallithea/model/user.py:408
 
#, fuzzy
 
#| msgid "Password reset link"
 
msgid "Password reset notification"
 
msgstr "Lien de remise à zéro du mot de passe"
 
msgstr "Notification de réinitialisation du mot de passe"
 

	
 
#: kallithea/model/user.py:409
 
#, python-format
 
@@ -2065,6 +2059,8 @@ msgid ""
 
"The password to your account %s has been changed using password reset "
 
"form."
 
msgstr ""
 
"Le mot de passe de votre compte %s a été changé via le formulaire de "
 
"réinitialisation du mot de passe."
 

	
 
#: kallithea/model/validators.py:77 kallithea/model/validators.py:78
 
msgid "Value cannot be an empty list"
 
@@ -2076,22 +2072,18 @@ msgid "Username \"%(username)s\" already
 
msgstr "Le nom d’utilisateur « %(username)s » existe déjà"
 

	
 
#: kallithea/model/validators.py:97
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Username \"%(username)s\" cannot be used"
 
msgstr "Le nom d’utilisateur « %(username)s » n’est pas valide"
 

	
 
#: kallithea/model/validators.py:99
 
#, fuzzy
 
#| msgid "" "Username may only contain alphanumeric characters underscores,
 
#| periods or" " dashes and must begin with alphanumeric character or
 
#| underscore"
 
msgid ""
 
"Username may only contain alphanumeric characters underscores, periods or"
 
" dashes and must begin with an alphanumeric character or underscore"
 
msgstr ""
 
"Le pseudonyme ne peut contenir que des caractères alphanumériques, des "
 
"tirets, points, traits d'union et doit commencer avec un caractère "
 
"alphanumérique ou un trait d'union"
 
"Le nom d'utilisateur ne peut contenir que des caractères alphanumériques, "
 
"des underscores (_), points, traits d'union et doit commencer avec un "
 
"caractère alphanumérique ou un underscore"
 

	
 
#: kallithea/model/validators.py:126
 
msgid "The input is not valid"
 
@@ -2147,16 +2139,15 @@ msgid "Passwords do not match"
 
msgstr "Les mots de passe ne correspondent pas"
 

	
 
#: kallithea/model/validators.py:300
 
#, fuzzy
 
msgid "Invalid username or password"
 
msgstr "mot de passe invalide"
 
msgstr "Nom d'utilisateur ou mot de passe invalide"
 

	
 
#: kallithea/model/validators.py:331
 
msgid "Token mismatch"
 
msgstr "Jeton d’authentification incorrect"
 

	
 
#: kallithea/model/validators.py:345
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Repository name %(repo)s is not allowed"
 
msgstr "Le nom de dépôt « %(repo)s » n’est pas autorisé"
 

	
 
@@ -2176,15 +2167,16 @@ msgid "Repository group with name \"%(re
 
msgstr "Un groupe de dépôts avec le nom « %(repo)s » existe déjà"
 

	
 
#: kallithea/model/validators.py:465
 
#, fuzzy
 
msgid "Invalid repository URL"
 
msgstr "Dépôt privé"
 
msgstr "URL de dépôt invalide"
 

	
 
#: kallithea/model/validators.py:466
 
msgid ""
 
"Invalid repository URL. It must be a valid http, https, ssh, svn+http or "
 
"svn+https URL"
 
msgstr ""
 
"URL de dépôt invalide. Ce doit être une URL valide de type http, https, ssh, "
 
"svn+http ou svn+https"
 

	
 
#: kallithea/model/validators.py:489
 
msgid "Fork has to be the same type as parent"
 
@@ -2211,14 +2203,13 @@ msgid "This is not a valid path"
 
msgstr "Ceci n’est pas un chemin valide"
 

	
 
#: kallithea/model/validators.py:705
 
#, fuzzy
 
msgid "This email address is already in use"
 
msgstr "Cette adresse e-mail est déjà enregistrée"
 

	
 
#: kallithea/model/validators.py:725
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Email address \"%(email)s\" not found"
 
msgstr "L’adresse e-mail « %(email)s » n’existe pas."
 
msgstr "L’adresse e-mail « %(email)s » n’existe pas"
 

	
 
#: kallithea/model/validators.py:762
 
msgid ""
 
@@ -2507,46 +2498,45 @@ msgid "Send Password Reset Email"
 
msgstr "Envoyer l'E-mail de réinitialisation du mot de passe"
 

	
 
#: kallithea/templates/password_reset.html:47
 
#, fuzzy
 
#| msgid "" "Password reset link will be sent to the email address matching
 
#| your " "username."
 
#| msgid "" "
 
msgid ""
 
"A password reset link will be sent to the specified email address if it "
 
"is registered in the system."
 
msgstr ""
 
"Le lien de réinitialisation du mot de passe sera envoyé à l'adresse "
 
"e-mail correspondant à votre nom d'utilisateur."
 
"Un lien de réinitialisation du mot de passe sera envoyé à l'adresse e-mail "
 
"indiquée si elle est enregistrée dans le système."
 

	
 
#: kallithea/templates/password_reset_confirmation.html:19
 
#, python-format
 
msgid "You are about to set a new password for the email address %s."
 
msgstr ""
 
"Vous êtes sur le point de changer le mot de passe pour l'adresse e-mail %s."
 

	
 
#: kallithea/templates/password_reset_confirmation.html:20
 
msgid ""
 
"Note that you must use the same browser session for this as the one used "
 
"to request the password reset."
 
msgstr ""
 
"Vous devez utiliser la même session de navigateur pour cette opération que "
 
"celle utilisée pour la demande de réinitialisation de mot de passe."
 

	
 
#: kallithea/templates/password_reset_confirmation.html:30
 
msgid "Code you received in the email"
 
msgstr ""
 
msgstr "Le code que vous avez reçu dans l'e-mail"
 

	
 
#: kallithea/templates/password_reset_confirmation.html:39
 
#, fuzzy
 
#| msgid "New password"
 
msgid "New Password"
 
msgstr "Nouveau mot de passe"
 

	
 
#: kallithea/templates/password_reset_confirmation.html:48
 
#, fuzzy
 
#| msgid "Confirm new password"
 
msgid "Confirm New Password"
 
msgstr "Confirmer le nouveau mot de passe"
 

	
 
#: kallithea/templates/password_reset_confirmation.html:56
 
msgid "Confirm"
 
msgstr ""
 
msgstr "Confirmation"
 

	
 
#: kallithea/templates/register.html:5 kallithea/templates/register.html:14
 
#: kallithea/templates/register.html:90
 
@@ -2589,10 +2579,12 @@ msgstr "E-mail"
 
#: kallithea/templates/register.html:92
 
msgid "Registered accounts are ready to use and need no further action."
 
msgstr ""
 
"Les comptes enregistrés sont prêts à être utilisés, et ne nécessitent aucune "
 
"autre action."
 

	
 
#: kallithea/templates/register.html:94
 
msgid "Please wait for an administrator to activate your account."
 
msgstr ""
 
msgstr "Merci d'attendre qu'un administrateur active votre compte."
 

	
 
#: kallithea/templates/switch_to_list.html:10
 
#: kallithea/templates/branches/branches_data.html:69
 
@@ -2690,16 +2682,12 @@ msgid "Enabled Plugins"
 
msgstr "Greffons activés"
 

	
 
#: kallithea/templates/admin/auth/auth_settings.html:33
 
#, fuzzy
 
#| msgid "" "Comma separated list of plugins. Order of plugins is also order in
 
#| which " "Kallithea will try to authenticate user"
 
msgid ""
 
"Comma-separated list of plugins; Kallithea will try user authentication "
 
"in plugin order"
 
msgstr ""
 
"Une liste séparée avec des virgules des greffons. L'ordre des greffons "
 
"est aussi celui dans lequel Kallithea va essayer d'authentifier un "
 
"utilisateur"
 
"Une liste séparée avec des virgules des greffons. L'ordre des greffons est "
 
"aussi celui dans lequel Kallithea va essayer d'authentifier un utilisateur"
 

	
 
#: kallithea/templates/admin/auth/auth_settings.html:34
 
msgid "Available built-in plugins"
 
@@ -2836,9 +2824,8 @@ msgstr "Expire le"
 
#: kallithea/templates/admin/my_account/my_account_api_keys.html:27
 
#: kallithea/templates/admin/users/user_edit_api_keys.html:8
 
#: kallithea/templates/admin/users/user_edit_api_keys.html:27
 
#, fuzzy
 
msgid "Never"
 
msgstr "jamais"
 
msgstr "Jamais"
 

	
 
#: kallithea/templates/admin/gists/edit.html:145
 
msgid "Update Gist"
 
@@ -3020,9 +3007,8 @@ msgid "Profile"
 
msgstr "Profil"
 

	
 
#: kallithea/templates/admin/my_account/my_account.html:36
 
#, fuzzy
 
msgid "Email Addresses"
 
msgstr "Nouvelle adrese"
 
msgstr "Adresses e-mail"
 

	
 
#: kallithea/templates/admin/my_account/my_account.html:38
 
#: kallithea/templates/admin/users/user_edit.html:31
 
@@ -3030,23 +3016,20 @@ msgid "API Keys"
 
msgstr "Clés de l'API"
 

	
 
#: kallithea/templates/admin/my_account/my_account.html:39
 
#, fuzzy
 
msgid "Owned Repositories"
 
msgstr "Dépôts"
 
msgstr "Dépôts possédés"
 

	
 
#: kallithea/templates/admin/my_account/my_account.html:40
 
#: kallithea/templates/journal/journal.html:53
 
#, fuzzy
 
msgid "Watched Repositories"
 
msgstr "Création de dépôts"
 
msgstr "Dépôts surveillés"
 

	
 
#: kallithea/templates/admin/my_account/my_account.html:41
 
#: kallithea/templates/admin/permissions/permissions.html:30
 
#: kallithea/templates/admin/user_groups/user_group_edit.html:32
 
#: kallithea/templates/admin/users/user_edit.html:34
 
#, fuzzy
 
msgid "Show Permissions"
 
msgstr "Copier les permissions"
 
msgstr "Afficher les permissions"
 

	
 
#: kallithea/templates/admin/my_account/my_account_api_keys.html:6
 
#: kallithea/templates/admin/users/user_edit_api_keys.html:6
 
@@ -3055,37 +3038,33 @@ msgstr "Inclus"
 

	
 
#: kallithea/templates/admin/my_account/my_account_api_keys.html:14
 
#: kallithea/templates/admin/users/user_edit_api_keys.html:14
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Confirm to reset this API key: %s"
 
msgstr "Confirmer la remise à zéro de cette clé d'API : %s"
 

	
 
#: kallithea/templates/admin/my_account/my_account_api_keys.html:30
 
#: kallithea/templates/admin/users/user_edit_api_keys.html:30
 
#, fuzzy
 
msgid "Expired"
 
msgstr "a expiré"
 

	
 
#: kallithea/templates/admin/my_account/my_account_api_keys.html:40
 
#: kallithea/templates/admin/users/user_edit_api_keys.html:40
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Confirm to remove this API key: %s"
 
msgstr "Confirmer la suppression de cette clé d'API : %s"
 

	
 
#: kallithea/templates/admin/my_account/my_account_api_keys.html:42
 
#: kallithea/templates/admin/users/user_edit_api_keys.html:42
 
#, fuzzy
 
msgid "Remove"
 
msgstr "supprimer"
 
msgstr "Supprimer"
 

	
 
#: kallithea/templates/admin/my_account/my_account_api_keys.html:49
 
#: kallithea/templates/admin/users/user_edit_api_keys.html:49
 
#, fuzzy
 
msgid "No additional API keys specified"
 
msgstr "Pas de clés d'API supplémentaires spécifiées"
 

	
 
#: kallithea/templates/admin/my_account/my_account_api_keys.html:61
 
#: kallithea/templates/admin/users/user_edit_api_keys.html:61
 
#, fuzzy
 
msgid "New API key"
 
msgstr "Nouvelle clé d'API"
 

	
 
@@ -3142,6 +3121,7 @@ msgstr "Confirmer le nouveau mot de pass
 
#, python-format
 
msgid "This account is managed with %s and the password cannot be changed here"
 
msgstr ""
 
"Ce compte est géré avec %s et le mot de passe ne peut pas être changé ici"
 

	
 
#: kallithea/templates/admin/my_account/my_account_profile.html:11
 
msgid "Change your avatar at"
 
@@ -3163,9 +3143,8 @@ msgstr "Adresse courriel manquante, veuillez mettre à jour votre adresse courriel."
 

	
 
#: kallithea/templates/admin/my_account/my_account_profile.html:16
 
#: kallithea/templates/admin/users/user_edit_profile.html:15
 
#, fuzzy
 
msgid "Current IP"
 
msgstr "adresse IP actuelle"
 
msgstr "Adresse IP actuelle"
 

	
 
#: kallithea/templates/admin/my_account/my_account_repos.html:1
 
msgid "Repositories You Own"
 
@@ -3225,7 +3204,6 @@ msgstr "Notifications"
 
#: kallithea/templates/admin/permissions/permissions.html:5
 
#: kallithea/templates/admin/permissions/permissions.html:11
 
#: kallithea/templates/base/base.html:64
 
#, fuzzy
 
msgid "Default Permissions"
 
msgstr "Permissions par défaut"
 

	
 
@@ -3244,13 +3222,13 @@ msgid "Anonymous access"
 
msgstr "Accès anonyme"
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:13
 
#, fuzzy, python-format
 
#, python-format
 
msgid ""
 
"Allow access to Kallithea without needing to log in. Anonymous users use "
 
"%s user permissions."
 
msgstr ""
 
"Autoriser l'accès à Kallithea sans le besoin de se connecter. Les "
 
"utilisateurs anonymes ont les permissions de %s"
 
"utilisateurs anonymes ont les permissions de l'utilisateur %s."
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:25
 
msgid ""
 
@@ -3258,15 +3236,17 @@ msgid ""
 
"permission, note that all custom default permission on repositories will "
 
"be lost"
 
msgstr ""
 
"Toutes les permissions par défaut de chaque dépôt vont être réinitialisées "
 
"aux valeurs choisies. Notez que toutes les permissions par défaut "
 
"personnalisées sur les dépôts seront perdues"
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:26
 
#, fuzzy
 
msgid "Apply to all existing repositories"
 
msgstr "Importer un dépôt existant?"
 
msgstr "Appliquer à tous les dépôts existants"
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:27
 
msgid "Permissions for the Default user on new repositories."
 
msgstr ""
 
msgstr "Permissions pour l'utilisateur par défaut sur les nouveaux dépôts."
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:32
 
#: kallithea/templates/admin/repos/repo_add_base.html:37
 
@@ -3282,15 +3262,18 @@ msgid ""
 
"permission, note that all custom default permission on repository groups "
 
"will be lost"
 
msgstr ""
 
"Toutes les permissions par défaut de chaque groupe de dépôts vont être "
 
"réinitialisées aux valeurs choisies. Notez que toutes les permissions par "
 
"défaut personnalisées sur les groupes de dépôts seront perdues"
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:40
 
#, fuzzy
 
msgid "Apply to all existing repository groups"
 
msgstr "Importer un dépôt existant?"
 
msgstr "Appliquer à tous les groupes de dépôts existants"
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:41
 
msgid "Permissions for the Default user on new repository groups."
 
msgstr ""
 
"Permissions pour l'utilisateur par défaut sur les nouveaux groupes de dépôts."
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:46
 
#: kallithea/templates/data_table/_dt_elements.html:209
 
@@ -3303,29 +3286,38 @@ msgid ""
 
"permission, note that all custom default permission on user groups will "
 
"be lost"
 
msgstr ""
 
"Toutes les permissions par défaut de chaque groupe d'utilisateurs vont être "
 
"réinitialisées aux valeurs choisies. Notez que toutes les permissions par "
 
"défaut personnalisées sur les groupes d'utilisateurs seront perdues"
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:54
 
msgid "Apply to all existing user groups"
 
msgstr ""
 
msgstr "Appliquer à tous les groupes d'utilisateurs existants"
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:55
 
msgid "Permissions for the Default user on new user groups."
 
msgstr ""
 
"Permissions pour l'utilisateur par défaut sur les nouveaux groupes "
 
"d'utilisateurs."
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:60
 
#, fuzzy
 
msgid "Top level repository creation"
 
msgstr "Création de dépôt"
 
msgstr "Création de dépôt de niveau supérieur"
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:64
 
msgid "Enable this to allow non-admins to create repositories at the top level."
 
msgstr ""
 
"Activer pour autoriser les non-administrateurs à créer des dépôts au niveau "
 
"supérieur."
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:65
 
msgid ""
 
"Note: This will also give all users API access to create repositories "
 
"everywhere. That might change in future versions."
 
msgstr ""
 
"Note : Cela autorisera également tous les utilisateurs à utiliser l'API pour "
 
"créer des dépôts partout. Ce comportement peut changer dans des versions "
 
"futures."
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:70
 
msgid "Repository creation with group write access"
 
@@ -3337,6 +3329,9 @@ msgid ""
 
"repositories inside that group. Without this, group write permissions "
 
"mean nothing."
 
msgstr ""
 
"Avec ceci, le droit d'écriture dans un groupe de dépôt donne le droit de "
 
"créer des dépôts dans ce groupe. Sans ceci, le droit d'écriture pour les "
 
"groupes n'a pas d'impact."
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:79
 
msgid "User group creation"
 
@@ -3345,6 +3340,8 @@ msgstr "Création de groupes d'utilisateurs"
 
#: kallithea/templates/admin/permissions/permissions_globals.html:83
 
msgid "Enable this to allow non-admins to create user groups."
 
msgstr ""
 
"Activer pour autoriser les non-administrateurs à créer des groupes "
 
"d'utilisateurs."
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:88
 
msgid "Repository forking"
 
@@ -3353,6 +3350,7 @@ msgstr "Fork de dépôt"
 
#: kallithea/templates/admin/permissions/permissions_globals.html:92
 
msgid "Enable this to allow non-admins to fork repositories."
 
msgstr ""
 
"Activer pour autoriser les non-administrateurs à faire des fork de dépôt."
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:97
 
msgid "Registration"
 
@@ -3360,19 +3358,18 @@ msgstr "Enregistrement"
 

	
 
#: kallithea/templates/admin/permissions/permissions_globals.html:105
 
msgid "External auth account activation"
 
msgstr ""
 
msgstr "Activation de l'authentification externe"
 

	
 
#: kallithea/templates/admin/permissions/permissions_ips.html:13
 
#: kallithea/templates/admin/users/user_edit_ips.html:23
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Confirm to delete this IP address: %s"
 
msgstr "Confirmer la suppression de cette adresse IP : %s"
 

	
 
#: kallithea/templates/admin/permissions/permissions_ips.html:19
 
#: kallithea/templates/admin/users/user_edit_ips.html:30
 
#, fuzzy
 
msgid "All IP addresses are allowed."
 
msgstr "Toutes les adresses IP sont autorisées"
 
msgstr "Toutes les adresses IP sont autorisées."
 

	
 
#: kallithea/templates/admin/permissions/permissions_ips.html:30
 
#: kallithea/templates/admin/users/user_edit_ips.html:42
 
@@ -3407,12 +3404,12 @@ msgstr "Copier les permissions du groupe
 
#: kallithea/templates/admin/repo_groups/repo_group_add.html:64
 
#: kallithea/templates/admin/repos/repo_add_base.html:50
 
msgid "Copy permission set from parent repository group."
 
msgstr ""
 
msgstr "Copier les permissions à partir du groupe de dépôts parent."
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit.html:5
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%s Repository Group Settings"
 
msgstr "Réglages du groupe de dépôts %s"
 
msgstr "Options du groupe de dépôts %s"
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit.html:21
 
msgid "Add Child Group"
 
@@ -3481,9 +3478,8 @@ msgstr "Supprimer ce groupe de dépôts"
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:11
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:12
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:11
 
#, fuzzy
 
msgid "User/User Group"
 
msgstr "utilisateur/groupe d'utilisateurs"
 
msgstr "Utilisateur/groupe d'utilisateurs"
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:28
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:45
 
@@ -3491,9 +3487,8 @@ msgstr "utilisateur/groupe d'utilisateur
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:37
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:28
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:45
 
#, fuzzy
 
msgid "Default"
 
msgstr "[Par défaut]"
 
msgstr "Par défaut"
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:34
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:71
 
@@ -3501,7 +3496,6 @@ msgstr "[Par défaut]"
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:68
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:34
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:71
 
#, fuzzy
 
msgid "Revoke"
 
msgstr "Révoquer"
 

	
 
@@ -3512,7 +3506,6 @@ msgid "Add new"
 
msgstr "Ajouter un nouveau"
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:103
 
#, fuzzy
 
msgid "Apply to children"
 
msgstr "Appliquer aux enfants"
 

	
 
@@ -3525,6 +3518,8 @@ msgid ""
 
"Set or revoke permission to all children of that group, including non-"
 
"private repositories and other groups if selected."
 
msgstr ""
 
"Ajouter ou révoquer la permission pour tous les enfants de ce groupe, y "
 
"compris les dépôts non-privés et les autres groupes si sélectionné."
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_settings.html:38
 
msgid ""
 
@@ -3536,12 +3531,11 @@ msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_settings.html:53
 
msgid "Remove this group"
 
msgstr ""
 
msgstr "Supprimer ce groupe"
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_settings.html:53
 
#, fuzzy
 
msgid "Confirm to delete this group"
 
msgstr "Confirmer la suppression de cette adresse IP : %s"
 
msgstr "Confirmer la suppression de ce groupe"
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_show.html:4
 
#, python-format
 
@@ -3557,25 +3551,24 @@ msgid "with"
 
msgstr "comprenant"
 

	
 
#: kallithea/templates/admin/repo_groups/repo_groups.html:5
 
#, fuzzy
 
msgid "Repository Groups Administration"
 
msgstr "Administration des groupes de dépôts"
 

	
 
#: kallithea/templates/admin/repo_groups/repo_groups.html:48
 
#, fuzzy
 
msgid "Number of Top-level Repositories"
 
msgstr "Nombre de sous-dépôts"
 
msgstr "Nombre de dépôts de niveau supérieur"
 

	
 
#: kallithea/templates/admin/repos/repo_add_base.html:17
 
#, fuzzy
 
msgid "Clone remote repository"
 
msgstr "[a créé] le dépôt"
 
msgstr "Cloner le dépôt distant"
 

	
 
#: kallithea/templates/admin/repos/repo_add_base.html:22
 
msgid ""
 
"Optional: URL of a remote repository. If set, the repository will be "
 
"created as a clone from this URL."
 
msgstr ""
 
"Optionnel : URL d'un dépôt distant. Si renseigné, le dépôt sera créé comme "
 
"un clone à partir de cette URL."
 

	
 
#: kallithea/templates/admin/repos/repo_add_base.html:32
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:69
 
@@ -3606,11 +3599,14 @@ msgid ""
 
"Default revision for files page, downloads, full text search index and "
 
"readme generation"
 
msgstr ""
 
"Révision par défaut pour les pages de fichiers, de téléchargement, de "
 
"l'index de recherche dans le texte complet, et de génération de "
 
"documentation (readme)"
 

	
 
#: kallithea/templates/admin/repos/repo_creating.html:9
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%s Creating Repository"
 
msgstr "%s Création du dépôt"
 
msgstr "Création du dépôt %s"
 

	
 
#: kallithea/templates/admin/repos/repo_creating.html:13
 
msgid "Creating repository"
 
@@ -3622,25 +3618,29 @@ msgid ""
 
"Repository \"%(repo_name)s\" is being created, you will be redirected "
 
"when this process is finished.repo_name"
 
msgstr ""
 
"Le dépôt « %(repo_name)s » est en cours de création, vous allez être "
 
"redirigé quand cette opération sera terminée."
 

	
 
#: kallithea/templates/admin/repos/repo_creating.html:39
 
msgid ""
 
"We're sorry but error occurred during this operation. Please check your "
 
"Kallithea server logs, or contact administrator."
 
msgstr ""
 
"Désolé, une erreur est survenue pendant l'opération. Vérifiez les journaux "
 
"du serveur Kallithea, ou contactez votre administrateur."
 

	
 
#: kallithea/templates/admin/repos/repo_edit.html:8
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%s Repository Settings"
 
msgstr "Réglages du groupe de dépôts %s"
 
msgstr "Réglages du dépôt %s"
 

	
 
#: kallithea/templates/admin/repos/repo_edit.html:49
 
msgid "Extra Fields"
 
msgstr ""
 
msgstr "Champs supplémentaires"
 

	
 
#: kallithea/templates/admin/repos/repo_edit.html:52
 
msgid "Caches"
 
msgstr ""
 
msgstr "Caches"
 

	
 
#: kallithea/templates/admin/repos/repo_edit.html:55
 
msgid "Remote"
 
@@ -3654,68 +3654,58 @@ msgid "Statistics"
 
msgstr "Statistiques"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:1
 
#, fuzzy
 
msgid "Parent"
 
msgstr "Parent du groupe"
 
msgstr "Parent"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:5
 
#: kallithea/templates/admin/repos/repo_edit_fork.html:5
 
msgid "Set"
 
msgstr ""
 
msgstr "Appliquer"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:8
 
#: kallithea/templates/admin/repos/repo_edit_fork.html:9
 
#, fuzzy
 
msgid "Manually set this repository as a fork of another from the list."
 
msgstr "Marquer ce dépôt comme fork d’un autre dépôt de la liste"
 
msgstr "Marquer manuellement ce dépôt comme fork d’un autre dépôt de la liste."
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:22
 
#, fuzzy
 
msgid "Public Journal Visibility"
 
msgstr "Journal public"
 
msgstr "Visibilité du journal public"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:29
 
msgid "Remove from public journal"
 
msgstr "Supprimer du journal public"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:34
 
#, fuzzy
 
msgid "Add to Public Journal"
 
msgstr "Journal public"
 
msgstr "Ajouter au journal public"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:40
 
#, fuzzy
 
msgid ""
 
"All actions done in this repository will be visible to everyone in the "
 
"public journal."
 
msgstr ""
 
"Le descriptif des actions réalisées sur ce dépôt sera visible à tous "
 
"depuis le journal public"
 
"Les actions réalisées sur ce dépôt seront visibles à tous depuis le journal "
 
"public."
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:46
 
#, fuzzy
 
msgid "Change Locking"
 
msgstr "Activer le verrouillage"
 
msgstr "Changer le verrouillage"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:52
 
#, fuzzy
 
msgid "Confirm to unlock repository."
 
msgstr "Veuillez confirmer le déverrouillage de ce dépôt"
 
msgstr "Veuillez confirmer le déverrouillage de ce dépôt."
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:54
 
#, fuzzy
 
msgid "Unlock Repository"
 
msgstr "Dépôt non verrouillé"
 
msgstr "Déverrouiller le dépôt"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:60
 
#, fuzzy
 
msgid "Confirm to lock repository."
 
msgstr "Veuillez confirmer le verrouillage de ce dépôt"
 
msgstr "Veuillez confirmer le verrouillage de ce dépôt."
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:62
 
#, fuzzy
 
msgid "Lock Repository"
 
msgstr "Dépôt non verrouillé"
 
msgstr "Verrouiller le dépôt"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:64
 
msgid "Repository is not locked"
 
@@ -3728,6 +3718,10 @@ msgid ""
 
"pulling locks the repository; only the user who pulled and locked it can "
 
"unlock it by doing a push."
 
msgstr ""
 
"Forcer le verrouillage du dépôt. Ne fonctionne que lorsque l'accès anonyme "
 
"est désactivé. Déclencher un pull verrouille le dépôt. L'utilisateur qui "
 
"fait le pull verrouille le dépôt ; seul l'utilisateur qui a fait le pull et "
 
"a verrouillé peut déverrouiller en faisant un push."
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:79
 
#: kallithea/templates/data_table/_dt_elements.html:130
 
@@ -3736,24 +3730,23 @@ msgid "Confirm to delete this repository
 
msgstr "Voulez-vous vraiment supprimer le dépôt %s ?"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:81
 
#, fuzzy
 
msgid "Delete this Repository"
 
msgstr "Supprimer ce groupe de dépôts"
 
msgstr "Supprimer ce dépôt"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:84
 
#, fuzzy, python-format
 
#, python-format
 
msgid "This repository has %s fork"
 
msgid_plural "This repository has %s forks"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[0] "Ce dépôt a %s fork"
 
msgstr[1] "Ce dépôt a %s forks"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:85
 
msgid "Detach forks"
 
msgstr ""
 
msgstr "Détacher les forks"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:86
 
msgid "Delete forks"
 
msgstr ""
 
msgstr "Supprimer les forks"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:90
 
msgid ""
 
@@ -3761,39 +3754,38 @@ msgid ""
 
"administrator expires it. The administrator can both permanently delete "
 
"it or restore it."
 
msgstr ""
 
"Le dépôt supprimé sera mis de côté et caché jusqu'à ce que l'administrateur "
 
"le fasse expirer. L'administrateur peut soit le supprimer définitivement, "
 
"soit le restaurer."
 

	
 
#: kallithea/templates/admin/repos/repo_edit_caches.html:4
 
#, fuzzy
 
msgid "Invalidate Repository Cache"
 
msgstr "Invalider le cache du dépôt"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_caches.html:4
 
#, fuzzy
 
msgid "Confirm to invalidate repository cache."
 
msgstr "Voulez-vous vraiment invalider le cache du dépôt ?"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_caches.html:7
 
#, fuzzy
 
msgid ""
 
"Manually invalidate cache for this repository. On first access, the "
 
"repository will be cached again."
 
msgstr ""
 
"Invalide manuellement le cache de ce dépôt. Au prochain accès sur ce "
 
"dépôt, il sera à nouveau mis en cache"
 
"Invalider manuellement le cache de ce dépôt. Au prochain accès sur ce dépôt, "
 
"il sera à nouveau mis en cache."
 

	
 
#: kallithea/templates/admin/repos/repo_edit_caches.html:12
 
#, fuzzy
 
msgid "List of Cached Values"
 
msgstr "Liste des valeurs en cache"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_caches.html:15
 
msgid "Prefix"
 
msgstr ""
 
msgstr "Préfixe"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_caches.html:16
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:6
 
msgid "Key"
 
msgstr ""
 
msgstr "Clé"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_caches.html:17
 
#: kallithea/templates/admin/user_groups/user_group_add.html:49
 
@@ -3807,74 +3799,69 @@ msgstr "Actif"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:5
 
msgid "Label"
 
msgstr ""
 
msgstr "Libellé"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:19
 
#, python-format
 
msgid "Confirm to delete this field: %s"
 
msgstr ""
 
msgstr "Voulez-vous vraiment supprimer ce champ : %s ?"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:33
 
msgid "New field key"
 
msgstr ""
 
msgstr "Clé du nouveau champ"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:41
 
msgid "New field label"
 
msgstr ""
 
msgstr "Libellé du nouveau champ"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:44
 
msgid "Enter short label"
 
msgstr ""
 
msgstr "Saisir un libellé court"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:50
 
msgid "New field description"
 
msgstr ""
 
msgstr "Description du nouveau champ"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:53
 
msgid "Enter description of a field"
 
msgstr ""
 
msgstr "Saisir la description du champ"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:66
 
#, fuzzy
 
msgid "Extra fields are disabled."
 
msgstr "Les avatars sont désactivés"
 
msgstr "Les champs supplémentaires sont désactivés."
 

	
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:21
 
#, fuzzy
 
msgid "Private Repository"
 
msgstr "Dépôt privé"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_remote.html:3
 
#, fuzzy
 
msgid "Remote repository URL"
 
msgstr "Dépôt %s créé"
 
msgstr "URL du dépôt distant"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_remote.html:9
 
#, fuzzy
 
msgid "Pull Changes from Remote Repository"
 
msgstr "[a pullé depuis un site distant] dans le dépôt"
 
msgstr "Récupérer les modifications depuis le dépôt distant"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_remote.html:11
 
#, fuzzy
 
msgid "Confirm to pull changes from remote repository."
 
msgstr "Voulez-vous vraiment récupérer les changements depuis le site distant ?"
 
msgstr ""
 
"Voulez-vous vraiment récupérer les changements depuis le dépôt distant ?"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_remote.html:17
 
msgid "This repository does not have a remote repository URL."
 
msgstr ""
 
msgstr "Ce dépôt n'a pas d'URL de dépôt distant."
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:11
 
#, fuzzy
 
msgid "Permanent Repository ID"
 
msgstr "Dépôt privé"
 
msgstr "ID permanent du dépôt"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:11
 
msgid "What is that?"
 
msgstr ""
 
msgstr "Qu'est-ce que c'est ?"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:13
 
msgid "URL by id"
 
msgstr ""
 
msgstr "URL par id"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:14
 
msgid ""
 
@@ -3885,22 +3872,29 @@ msgid ""
 
"                               This is useful for CI systems, or any "
 
"other cases that you need to hardcode the URL into a 3rd party service."
 
msgstr ""
 
"Si ce dépôt est renommé ou déplacé dans un autre groupe, l'URL du dépôt "
 
"change.\n"
 
"                               L'utilisation de l'URL permanente ci-dessus "
 
"garantit que ce dépôt sera toujours accessible via cette URL.\n"
 
"                               Cela peut être utile pour les systèmes "
 
"d'intégration continue, ou dans tous les cas où vous devez saisir l'URL « en "
 
"dur » dans un service tiers."
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:21
 
#, fuzzy
 
msgid "Remote repository"
 
msgstr "[a créé] le dépôt"
 
msgstr "Dépôt distant"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:25
 
#, fuzzy
 
msgid "Repository URL"
 
msgstr "Dépôt"
 
msgstr "URL du dépôt"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:29
 
msgid ""
 
"Optional: URL of a remote repository. If set, the repository can be "
 
"pulled from this URL."
 
msgstr ""
 
"Optionel : URL d'un dépôt distant. Si renseigné, le dépôt sera pullé à "
 
"partir de cette URL."
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:48
 
msgid "Default revision for files page, downloads, whoosh and readme"
 
@@ -3914,24 +3908,21 @@ msgstr "Changer le propriétaire de ce dépôt."
 

	
 
#: kallithea/templates/admin/repos/repo_edit_statistics.html:6
 
msgid "Processed commits"
 
msgstr ""
 
msgstr "Commits traités"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_statistics.html:7
 
msgid "Processed progress"
 
msgstr ""
 
msgstr "Avancement"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_statistics.html:10
 
#, fuzzy
 
msgid "Reset Statistics"
 
msgstr "Remettre les statistiques à zéro"
 

	
 
#: kallithea/templates/admin/repos/repo_edit_statistics.html:10
 
#, fuzzy
 
msgid "Confirm to remove current statistics."
 
msgstr "Souhaitez-vous vraiment réinitialiser les statistiques de ce dépôt ?"
 

	
 
#: kallithea/templates/admin/repos/repos.html:5
 
#, fuzzy
 
msgid "Repositories Administration"
 
msgstr "Administration des dépôts"
 

	
 
@@ -3940,9 +3931,8 @@ msgid "State"
 
msgstr "État"
 

	
 
#: kallithea/templates/admin/settings/settings.html:5
 
#, fuzzy
 
msgid "Settings Administration"
 
msgstr "Administration générale"
 
msgstr "Administration des options"
 

	
 
#: kallithea/templates/admin/settings/settings.html:27
 
msgid "VCS"
 
@@ -3950,7 +3940,7 @@ msgstr "VCS"
 

	
 
#: kallithea/templates/admin/settings/settings.html:28
 
msgid "Remap and Rescan"
 
msgstr ""
 
msgstr "Mapper et scanner"
 

	
 
#: kallithea/templates/admin/settings/settings.html:30
 
msgid "Visual"
 
@@ -3962,7 +3952,6 @@ msgid "Hooks"
 
msgstr "Hooks"
 

	
 
#: kallithea/templates/admin/settings/settings.html:33
 
#, fuzzy
 
msgid "Full Text Search"
 
msgstr "Recherche dans le texte complet"
 

	
 
@@ -3980,7 +3969,7 @@ msgstr "Envoyer"
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:8
 
msgid "Site branding"
 
msgstr ""
 
msgstr "Nom du site"
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:12
 
msgid "Set a custom title for your Kallithea Service."
 
@@ -3988,17 +3977,19 @@ msgstr "Mettez un title personnalisé pour votre service Kallithea."
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:18
 
msgid "HTTP authentication realm"
 
msgstr ""
 
msgstr "Domaine d'authentification HTTP (realm)"
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:27
 
msgid "Analytics HTML block"
 
msgstr ""
 
msgstr "Bloc HTML pour l'analytique"
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:31
 
msgid ""
 
"HTML with JavaScript for web analytics systems like Google Analytics or "
 
"Piwik. This will be added at the bottom of every page."
 
msgstr ""
 
"HTML avec du JavaScript pour les systèmes d'analyse Web comme Google "
 
"Analytics ou Piwik. Ceci sera ajouté en bas de chaque page."
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:37
 
msgid "ReCaptcha public key"
 
@@ -4013,33 +4004,33 @@ msgid "ReCaptcha private key"
 
msgstr "Clé privée ReCaptcha"
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:51
 
#, fuzzy
 
msgid ""
 
"Private key for reCaptcha system. Setting this value will enable captcha "
 
"on registration."
 
msgstr ""
 
"Clé privée pour le système reCaptcha. Définir cette valeur activera le "
 
"captcha d'enregistrement"
 
"captcha à l'enregistrement."
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:56
 
#: kallithea/templates/admin/settings/settings_vcs.html:80
 
#: kallithea/templates/admin/settings/settings_visual.html:116
 
#, fuzzy
 
msgid "Save Settings"
 
msgstr "Enregister les options"
 
msgstr "Enregistrer les options"
 

	
 
#: kallithea/templates/admin/settings/settings_hooks.html:1
 
msgid "Built-in Mercurial Hooks (Read-Only)"
 
msgstr ""
 
msgstr "Hooks Mercurial intégrés (lecture seule)"
 

	
 
#: kallithea/templates/admin/settings/settings_hooks.html:15
 
msgid ""
 
"Hooks can be used to trigger actions on certain events such as push / "
 
"pull. They can trigger Python functions or external applications."
 
msgstr ""
 
"Les hooks peuvent être utilisés pour déclencher des actions lors de certains "
 
"évènements comme le push et le pull. Ils peuvent déclencher des fonctions "
 
"Python ou des applications externes."
 

	
 
#: kallithea/templates/admin/settings/settings_hooks.html:19
 
#, fuzzy
 
msgid "Custom Hooks"
 
msgstr "Hooks personnalisés"
 

	
 
@@ -4049,40 +4040,45 @@ msgstr "Erreur lors de la suppression du
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:6
 
msgid "Rescan option"
 
msgstr ""
 
msgstr "Option de scan"
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:11
 
msgid "Delete records of missing repositories"
 
msgstr ""
 
msgstr "Supprimer les enregistrements de dépôts manquants"
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:13
 
msgid ""
 
"Check this option to remove all comments, pull requests and other records"
 
" related to repositories that no longer exist in the filesystem."
 
msgstr ""
 
"Cocher cette option pour supprimer tous les commentaires, les requêtes de "
 
"pull et d'autres informations liées aux dépôts qui n'existent plus sur le "
 
"système de fichiers."
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:17
 
msgid "Invalidate cache for all repositories"
 
msgstr "Invalider le cache pour tous les dépôts"
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:19
 
#, fuzzy
 
msgid "Check this to reload data and clear cache keys for all repositories."
 
msgstr "Invalider le cache pour tous les dépôts"
 
msgstr ""
 
"Cocher pour recharger les données et vider le cache pour tous les dépôts."
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:23
 
msgid "Install Git hooks"
 
msgstr ""
 
msgstr "Installer des hooks Git"
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:25
 
msgid ""
 
"Verify if Kallithea's Git hooks are installed for each repository. "
 
"Current hooks will be updated to the latest version."
 
msgstr ""
 
"Vérifier si les hooks Git de Kallithea sont installés pour chaque dépôt. Les "
 
"hooks actuels seront mis à jour vers la dernière version."
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:28
 
msgid "Overwrite existing Git hooks"
 
msgstr ""
 
msgstr "Écraser les hooks Git existants"
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:30
 
msgid ""
 
@@ -4090,14 +4086,17 @@ msgid ""
 
"not seem to come from Kallithea. WARNING: This operation will destroy any"
 
" custom git hooks you may have deployed by hand!"
 
msgstr ""
 
"Lors de l'installation des hooks Git, écraser tous les hooks existants, même "
 
"s'ils ne semblent pas provenir de Kallithea. ATTENTION : cette opération "
 
"détruira tous les hooks Git que vous avez déployés à la main !"
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:35
 
msgid "Rescan Repositories"
 
msgstr ""
 
msgstr "Relancer le scan des dépôts"
 

	
 
#: kallithea/templates/admin/settings/settings_search.html:7
 
msgid "Index build option"
 
msgstr ""
 
msgstr "Option de construction de l'index"
 

	
 
#: kallithea/templates/admin/settings/settings_search.html:12
 
msgid "Build from scratch"
 
@@ -4108,6 +4107,8 @@ msgid ""
 
"This option completely reindexeses all of the repositories for proper "
 
"fulltext search capabilities."
 
msgstr ""
 
"Cette option ré-indexe complètement tous les dépôts pour pouvoir faire des "
 
"recherches dans le texte complet."
 

	
 
#: kallithea/templates/admin/settings/settings_search.html:21
 
msgid "Reindex"
 
@@ -4118,13 +4119,12 @@ msgid "Kallithea version"
 
msgstr "Version de Kallithea"
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:4
 
#, fuzzy
 
msgid "Check for updates"
 
msgstr "vérifier les mises à jour"
 
msgstr "Vérifier les mises à jour"
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:5
 
msgid "Kallithea configuration file"
 
msgstr ""
 
msgstr "Fichier de configuration de Kallithea"
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:6
 
msgid "Python version"
 
@@ -4135,21 +4135,18 @@ msgid "Platform"
 
msgstr "Plateforme"
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:8
 
#, fuzzy
 
msgid "Git version"
 
msgstr "Version de Git"
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:9
 
#, fuzzy
 
msgid "Git path"
 
msgstr "Chemin de Git"
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:10
 
msgid "Upgrade info endpoint"
 
msgstr ""
 
msgstr "Point d'accès aux informations de mise à jour"
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:10
 
#, fuzzy
 
msgid "Note: please make sure this server can access this URL"
 
msgstr "Note : vérifiez que le serveur peut accéder cette URL"
 

	
 
@@ -4158,7 +4155,6 @@ msgid "Checking for updates..."
 
msgstr "Vérification des mises à jour…"
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:23
 
#, fuzzy
 
msgid "Python Packages"
 
msgstr "Paquets Python"
 

	
 
@@ -4171,14 +4167,13 @@ msgid "Require SSL for vcs operations"
 
msgstr "Nécessiter SSL pour les opérations de VCS"
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:13
 
#, fuzzy
 
msgid ""
 
"Activate to require SSL both pushing and pulling. If SSL certificate is "
 
"missing, it will return an HTTP Error 406: Not Acceptable."
 
msgstr ""
 
"Activez pour faire en sorte que Kallithea force l'utilisation de SSL pour"
 
" pousser ou tirer. Si le certificate SSL est manquant, une erreur HTTP "
 
"406 Not Acceptable sera retournée."
 
"Activez pour faire en sorte que Kallithea force l'utilisation de SSL pour "
 
"pousser ou tirer. Si le certificat SSL est manquant, une erreur « HTTP 406: "
 
"Not Acceptable » sera renvoyée."
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:24
 
msgid "Show repository size after push"
 
@@ -4197,31 +4192,28 @@ msgid "Update repository after push (hg 
 
msgstr "Mettre à jour les dépôts après un push (hg update)"
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:42
 
#, fuzzy
 
msgid "Mercurial extensions"
 
msgstr "Extensions Mercurial"
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:47
 
msgid "Enable largefiles extension"
 
msgstr ""
 
msgstr "Activer l'extension largefiles"
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:51
 
msgid "Enable hgsubversion extension"
 
msgstr "Activer l'extension hgsubversion"
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:53
 
#, fuzzy
 
msgid ""
 
"Requires hgsubversion library to be installed. Enables cloning of remote "
 
"Subversion repositories while converting them to Mercurial."
 
msgstr ""
 
"La bibliothèque hgsubversion doit être installée. Elle permet de cloner "
 
"des dépôts SVN distants et de les migrer vers Mercurial."
 
"La bibliothèque hgsubversion doit être installée. Elle permet de cloner des "
 
"dépôts SVN distants et de les migrer vers Mercurial."
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:64
 
#, fuzzy
 
msgid "Location of repositories"
 
msgstr "Dépôts totaux"
 
msgstr "Emplacement des dépôts"
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:69
 
msgid ""
 
@@ -4236,30 +4228,34 @@ msgid ""
 
"Filesystem location where repositories are stored. After changing this "
 
"value, a restart and rescan of the repository folder are both required."
 
msgstr ""
 
"Emplacement où les dépôts sont stockés sur le système de fichiers. La "
 
"modification de cette valeur nécessite un re-démarrage et un nouveau scan."
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:8
 
msgid "General"
 
msgstr ""
 
msgstr "Général"
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:13
 
msgid "Use repository extra fields"
 
msgstr ""
 
msgstr "Activer les champs supplémentaires sur les dépôts"
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:15
 
msgid "Allows storing additional customized fields per repository."
 
msgstr ""
 
"Permet d'enregistrer des champs personnalisés additionnels pour chaque dépôt."
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:18
 
msgid "Show Kallithea version"
 
msgstr ""
 
msgstr "Afficher la version de Kallithea"
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:20
 
msgid "Shows or hides a version number of Kallithea displayed in the footer."
 
msgstr ""
 
"Afficher ou cacher le numéro de version de Kallithea dans le pied de page."
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:24
 
msgid "Use Gravatars in Kallithea"
 
msgstr ""
 
msgstr "Utiliser Gravatar sur Kallithea"
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:30
 
msgid ""
 
@@ -4277,6 +4273,20 @@ msgid ""
 
"                                                        {netloc}    "
 
"network location/server host of running Kallithea server"
 
msgstr ""
 
"L'URL de Gravatar vous permet d'utiliser un autre serveur d'avatars.\n"
 
"                                                        Les variables "
 
"suivantes dans l'URL seront remplacées comme suit :\n"
 
"                                                        {scheme}    'http' "
 
"ou 'https' envoyé à partir du serveur Kallithea en cours d'utilisation,\n"
 
"                                                        {email}     adresse "
 
"e-mail de l'utilisateur,\n"
 
"                                                        {md5email}  "
 
"empreinte md5 (hash) de l'adresse e-mail de l'utilisateur (comme sur "
 
"gravatar.com),\n"
 
"                                                        {size}      taille "
 
"de l'image demandée au serveur,\n"
 
"                                                        {netloc}    "
 
"emplacement réseau/hôte du serveur Kallithea en cours d'utilisation."
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:42
 
msgid ""
 
@@ -4295,26 +4305,44 @@ msgid ""
 
"                                                        {repoid} ID of "
 
"repository, can be used to contruct clone-by-id"
 
msgstr ""
 
"Modèle de construction d'URL de clone. Par exemple : "
 
"'{scheme}://{user}@{netloc}/{repo}'.\n"
 
"                                                       Les variables "
 
"suivantes sont disponibles :\n"
 
"                                                        {scheme}    'http' "
 
"ou 'https' envoyé à partir du serveur Kallithea en cours d'utilisation,\n"
 
"                                                        {user}     nom de "
 
"l'utilisateur courant,\n"
 
"                                                        {netloc}    "
 
"emplacement réseau/hôte du serveur Kallithea en cours d'utilisation,\n"
 
"                                                        {repo}    nom "
 
"complet du dépôt,\n"
 
"                                                        {repoid}    ID du "
 
"dépôt, peut être utilisé pour cloner par ID."
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:55
 
msgid "Dashboard items"
 
msgstr ""
 
msgstr "Élements du tableau de bord"
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:59
 
msgid ""
 
"Number of items displayed in the main page dashboard before pagination is"
 
" shown."
 
msgstr ""
 
"Nombre d'éléments affichés dans la page principale du tableau de bord avant "
 
"d'afficher la pagination."
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:65
 
msgid "Admin pages items"
 
msgstr ""
 
msgstr "Élements des pages admin"
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:69
 
msgid ""
 
"Number of items displayed in the admin pages grids before pagination is "
 
"shown."
 
msgstr ""
 
"Nombre d'éléments affichés dans les grilles des pages admin avant d'afficher "
 
"la pagination."
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:75
 
msgid "Icons"
 
@@ -4329,60 +4357,59 @@ msgid "Show private repository icon on r
 
msgstr "Afficher l’icône de dépôt privé sur les dépôts"
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:86
 
#, fuzzy
 
msgid "Show public/private icons next to repository names."
 
msgstr "Afficher l’icône de dépôt public sur les dépôts"
 
msgstr "Afficher l’icône « public/privé » à côté du nom des dépôts."
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:92
 
#, fuzzy
 
msgid "Meta Tagging"
 
msgstr "Meta-tagging"
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:97
 
msgid "Stylify recognised meta tags:"
 
msgstr ""
 
msgstr "Styliser les méta-tags reconnus :"
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:111
 
msgid ""
 
"Parses meta tags from the repository description field and turns them "
 
"into colored tags."
 
msgstr ""
 
"Analyser les méta-tags dans le champ de description du dépôt et les "
 
"transformer en tags colorés."
 

	
 
#: kallithea/templates/admin/user_groups/user_group_add.html:5
 
msgid "Add user group"
 
msgstr ""
 
msgstr "Ajouter un groupe d'utilisateurs"
 

	
 
#: kallithea/templates/admin/user_groups/user_group_add.html:10
 
#: kallithea/templates/admin/user_groups/user_group_edit.html:11
 
#: kallithea/templates/admin/user_groups/user_groups.html:10
 
#: kallithea/templates/base/base.html:63 kallithea/templates/base/base.html:83
 
msgid "User Groups"
 
msgstr ""
 
msgstr "Groupes d'utilisateurs"
 

	
 
#: kallithea/templates/admin/user_groups/user_group_add.html:12
 
#: kallithea/templates/admin/user_groups/user_groups.html:25
 
msgid "Add User Group"
 
msgstr ""
 
msgstr "Ajouter un groupe d'utilisateurs"
 

	
 
#: kallithea/templates/admin/user_groups/user_group_add.html:44
 
#: kallithea/templates/admin/user_groups/user_group_edit_settings.html:19
 
msgid "Short, optional description for this user group."
 
msgstr ""
 
msgstr "Description courte pour ce groupe d'utilisateur (optionnel)."
 

	
 
#: kallithea/templates/admin/user_groups/user_group_edit.html:5
 
#, python-format
 
msgid "%s user group settings"
 
msgstr ""
 
msgstr "Réglages du groupe d'utilisateurs %s"
 

	
 
#: kallithea/templates/admin/user_groups/user_group_edit.html:33
 
#, fuzzy
 
msgid "Show Members"
 
msgstr "Membres"
 
msgstr "Afficher les membres"
 

	
 
#: kallithea/templates/admin/user_groups/user_group_edit_advanced.html:1
 
#, python-format
 
msgid "User Group: %s"
 
msgstr ""
 
msgstr "Groupe d'utilisateurs : %s"
 

	
 
#: kallithea/templates/admin/user_groups/user_group_edit_advanced.html:6
 
#: kallithea/templates/admin/user_groups/user_group_edit_settings.html:32
 
@@ -4394,28 +4421,27 @@ msgstr "Membres"
 
#: kallithea/templates/data_table/_dt_elements.html:174
 
#, python-format
 
msgid "Confirm to delete this user group: %s"
 
msgstr ""
 
msgstr "Voulez-vous vraiment supprimer ce groupe utilisateur : %s ?"
 

	
 
#: kallithea/templates/admin/user_groups/user_group_edit_advanced.html:21
 
msgid "Delete this user group"
 
msgstr ""
 
msgstr "Supprimer ce groupe d'utilisateurs"
 

	
 
#: kallithea/templates/admin/user_groups/user_group_edit_members.html:17
 
msgid "No members yet"
 
msgstr ""
 
msgstr "Aucun membre pour l'instant"
 

	
 
#: kallithea/templates/admin/user_groups/user_group_edit_settings.html:40
 
msgid "Chosen group members"
 
msgstr ""
 
msgstr "Membres de groupe sélectionnés"
 

	
 
#: kallithea/templates/admin/user_groups/user_group_edit_settings.html:49
 
msgid "Available members"
 
msgstr "Membres disponibles"
 

	
 
#: kallithea/templates/admin/user_groups/user_groups.html:5
 
#, fuzzy
 
msgid "User Groups Administration"
 
msgstr "Administration des groupes de dépôts"
 
msgstr "Administration des groupes d'utilisateurs"
 

	
 
#: kallithea/templates/admin/users/user_add.html:5
 
msgid "Add user"
 
@@ -4431,7 +4457,7 @@ msgstr "Utilisateurs"
 
#: kallithea/templates/admin/users/user_add.html:12
 
#: kallithea/templates/admin/users/users.html:24
 
msgid "Add User"
 
msgstr ""
 
msgstr "Ajouter un utilisateur"
 

	
 
#: kallithea/templates/admin/users/user_add.html:50
 
msgid "Password confirmation"
 
@@ -4440,30 +4466,30 @@ msgstr "Confirmation"
 
#: kallithea/templates/admin/users/user_edit.html:5
 
#, python-format
 
msgid "%s user settings"
 
msgstr ""
 
msgstr "Réglages de l'utilisateur %s"
 

	
 
#: kallithea/templates/admin/users/user_edit.html:30
 
msgid "Emails"
 
msgstr ""
 
msgstr "E-mails"
 

	
 
#: kallithea/templates/admin/users/user_edit_advanced.html:1
 
#, python-format
 
msgid "User: %s"
 
msgstr ""
 
msgstr "Utilisateur : %s"
 

	
 
#: kallithea/templates/admin/users/user_edit_advanced.html:7
 
#: kallithea/templates/admin/users/user_edit_profile.html:42
 
msgid "Source of Record"
 
msgstr ""
 
msgstr "Source de l'enregistrement"
 

	
 
#: kallithea/templates/admin/users/user_edit_advanced.html:9
 
#: kallithea/templates/admin/users/users.html:53
 
msgid "Last Login"
 
msgstr ""
 
msgstr "Dernière connexion"
 

	
 
#: kallithea/templates/admin/users/user_edit_advanced.html:10
 
msgid "Member of User Groups"
 
msgstr ""
 
msgstr "Membre des groupes d'utilisateurs"
 

	
 
#: kallithea/templates/admin/users/user_edit_advanced.html:21
 
#: kallithea/templates/data_table/_dt_elements.html:158
 
@@ -4473,46 +4499,46 @@ msgstr "Voulez-vous vraiment supprimer l’utilisateur « %s » ?"
 

	
 
#: kallithea/templates/admin/users/user_edit_advanced.html:23
 
msgid "Delete this user"
 
msgstr ""
 
msgstr "Supprimer cet utilisateur"
 

	
 
#: kallithea/templates/admin/users/user_edit_ips.html:8
 
#, python-format
 
msgid "Inherited from %s"
 
msgstr ""
 
msgstr "Hérité de %s"
 

	
 
#: kallithea/templates/admin/users/user_edit_profile.html:8
 
msgid "Change avatar at"
 
msgstr ""
 
msgstr "Changer l'avatar sur"
 

	
 
#: kallithea/templates/admin/users/user_edit_profile.html:12
 
msgid "Missing email, please update this user email address."
 
msgstr ""
 
"E-mail manquant, veuillez mettre à jour l'adresse e-mail de cet utilisateur."
 

	
 
#: kallithea/templates/admin/users/user_edit_profile.html:51
 
msgid "Name in Source of Record"
 
msgstr ""
 
msgstr "Nom dans la source de l'enregistrement"
 

	
 
#: kallithea/templates/admin/users/user_edit_profile.html:69
 
msgid "New password confirmation"
 
msgstr "Confirmation du nouveau mot de passe"
 

	
 
#: kallithea/templates/admin/users/users.html:5
 
#, fuzzy
 
msgid "Users Administration"
 
msgstr "Administration des utilisateurs"
 

	
 
#: kallithea/templates/admin/users/users.html:56
 
msgid "Auth Type"
 
msgstr ""
 
msgstr "Type d'authentification"
 

	
 
#: kallithea/templates/base/base.html:18
 
#, python-format
 
msgid "Server instance: %s"
 
msgstr ""
 
msgstr "Instance de serveur : %s"
 

	
 
#: kallithea/templates/base/base.html:30
 
msgid "Support"
 
msgstr ""
 
msgstr "Support"
 

	
 
#: kallithea/templates/base/base.html:90
 
msgid "Mercurial repository"
 
@@ -4523,9 +4549,8 @@ msgid "Git repository"
 
msgstr "Dépôt Git"
 

	
 
#: kallithea/templates/base/base.html:119
 
#, fuzzy
 
msgid "Create Fork"
 
msgstr "créé"
 
msgstr "Créer un fork"
 

	
 
#: kallithea/templates/base/base.html:130
 
#: kallithea/templates/data_table/_dt_elements.html:13
 
@@ -4551,7 +4576,7 @@ msgstr "Fichiers"
 

	
 
#: kallithea/templates/base/base.html:138
 
msgid "Switch To"
 
msgstr ""
 
msgstr "Basculer vers"
 

	
 
#: kallithea/templates/base/base.html:145
 
#: kallithea/templates/base/base.html:147
 
@@ -4560,7 +4585,6 @@ msgstr "Options"
 

	
 
#: kallithea/templates/base/base.html:155
 
#: kallithea/templates/forks/forks_data.html:21
 
#, fuzzy
 
msgid "Compare Fork"
 
msgstr "Comparer le fork"
 

	
 
@@ -4583,19 +4607,19 @@ msgstr "Rechercher"
 

	
 
#: kallithea/templates/base/base.html:163
 
msgid "Unlock"
 
msgstr ""
 
msgstr "Déverrouiller"
 

	
 
#: kallithea/templates/base/base.html:165
 
msgid "Lock"
 
msgstr ""
 
msgstr "Verrouiller"
 

	
 
#: kallithea/templates/base/base.html:173
 
msgid "Follow"
 
msgstr ""
 
msgstr "Suivre"
 

	
 
#: kallithea/templates/base/base.html:174
 
msgid "Unfollow"
 
msgstr ""
 
msgstr "Arrêter de suivre"
 

	
 
#: kallithea/templates/base/base.html:177
 
#: kallithea/templates/data_table/_dt_elements.html:37
 
@@ -4607,16 +4631,16 @@ msgstr "Fork"
 
#: kallithea/templates/base/base.html:178
 
#: kallithea/templates/pullrequests/pullrequest.html:88
 
msgid "Create Pull Request"
 
msgstr ""
 
msgstr "Créer une requête de pull"
 

	
 
#: kallithea/templates/base/base.html:183
 
#, python-format
 
msgid "Show Pull Requests for %s"
 
msgstr ""
 
msgstr "Afficher les requêtes de pull pour %s"
 

	
 
#: kallithea/templates/base/base.html:221
 
msgid "Show recent activity"
 
msgstr ""
 
msgstr "Afficher l'activité récente"
 

	
 
#: kallithea/templates/base/base.html:227
 
#: kallithea/templates/base/base.html:228
 
@@ -4625,45 +4649,40 @@ msgstr "Journal public"
 

	
 
#: kallithea/templates/base/base.html:233
 
msgid "Show public gists"
 
msgstr ""
 
msgstr "Afficher les gists publics"
 

	
 
#: kallithea/templates/base/base.html:234
 
msgid "Gists"
 
msgstr ""
 
msgstr "Gists"
 

	
 
#: kallithea/templates/base/base.html:238
 
#, fuzzy
 
msgid "All Public Gists"
 
msgstr "Gists publics"
 
msgstr "Tous les Gists publics"
 

	
 
#: kallithea/templates/base/base.html:240
 
#, fuzzy
 
msgid "My Public Gists"
 
msgstr "Gists publics"
 
msgstr "Mes Gists publics"
 

	
 
#: kallithea/templates/base/base.html:241
 
#, fuzzy
 
msgid "My Private Gists"
 
msgstr "Gist privé"
 
msgstr "Mes Gist privés"
 

	
 
#: kallithea/templates/base/base.html:246
 
msgid "Search in repositories"
 
msgstr ""
 
msgstr "Recherche dans les dépôts"
 

	
 
#: kallithea/templates/base/base.html:269
 
#: kallithea/templates/base/base.html:270
 
#: kallithea/templates/pullrequests/pullrequest_show_my.html:6
 
#: kallithea/templates/pullrequests/pullrequest_show_my.html:10
 
#, fuzzy
 
msgid "My Pull Requests"
 
msgstr "Requêtes de pull"
 
msgstr "Mes requêtes de pull"
 

	
 
#: kallithea/templates/base/base.html:289
 
msgid "Not Logged In"
 
msgstr ""
 
msgstr "Non connecté"
 

	
 
#: kallithea/templates/base/base.html:296
 
#, fuzzy
 
msgid "Login to Your Account"
 
msgstr "Connexion à votre compte"
 

	
 
@@ -4677,20 +4696,19 @@ msgstr "Se déconnecter"
 

	
 
#: kallithea/templates/base/base.html:395
 
msgid "No matches found"
 
msgstr ""
 
msgstr "Aucune correspondance trouvée"
 

	
 
#: kallithea/templates/base/base.html:524
 
msgid "Keyboard shortcuts"
 
msgstr ""
 
msgstr "Raccourcis clavier"
 

	
 
#: kallithea/templates/base/base.html:533
 
msgid "Site-wide shortcuts"
 
msgstr ""
 
msgstr "Raccourcis globaux"
 

	
 
#: kallithea/templates/base/default_perms_box.html:14
 
#, fuzzy
 
msgid "Inherit defaults"
 
msgstr "Réglages par défaut du dépôt"
 
msgstr "Hériter des réglages par défaut"
 

	
 
#: kallithea/templates/base/default_perms_box.html:19
 
#, python-format
 
@@ -4698,6 +4716,8 @@ msgid ""
 
"Select to inherit global settings, IP whitelist and permissions from the "
 
"%s."
 
msgstr ""
 
"Sélectionner pour hériter des réglages généraux, de la liste blanche d'IP et "
 
"des permissions depuis les %s."
 

	
 
#: kallithea/templates/base/default_perms_box.html:28
 
msgid "Create repositories"
 
@@ -4706,14 +4726,17 @@ msgstr "Création de dépôts"
 
#: kallithea/templates/base/default_perms_box.html:33
 
msgid "Select this option to allow repository creation for this user"
 
msgstr ""
 
"Sélectionner cette option pour autoriser cet utilisateur à créer des dépôts"
 

	
 
#: kallithea/templates/base/default_perms_box.html:40
 
msgid "Create user groups"
 
msgstr ""
 
msgstr "Créer des groupes d'utilisateurs"
 

	
 
#: kallithea/templates/base/default_perms_box.html:45
 
msgid "Select this option to allow user group creation for this user"
 
msgstr ""
 
"Sélectionner cette option pour autoriser cet utilisateur à créer des groupes "
 
"d'utilisateurs"
 

	
 
#: kallithea/templates/base/default_perms_box.html:52
 
msgid "Fork repositories"
 
@@ -4722,6 +4745,7 @@ msgstr "Forker les dépôts"
 
#: kallithea/templates/base/default_perms_box.html:57
 
msgid "Select this option to allow repository forking for this user"
 
msgstr ""
 
"Sélectionner cette option pour autoriser cet utilisateur à forker des dépôts"
 

	
 
#: kallithea/templates/base/perms_summary.html:13
 
#: kallithea/templates/changelog/changelog.html:42
 
@@ -4730,7 +4754,7 @@ msgstr "Afficher"
 

	
 
#: kallithea/templates/base/perms_summary.html:22
 
msgid "No permissions defined yet"
 
msgstr ""
 
msgstr "Aucune permission définie pour l'instant"
 

	
 
#: kallithea/templates/base/perms_summary.html:30
 
#: kallithea/templates/base/perms_summary.html:54
 
@@ -4744,12 +4768,11 @@ msgstr "Éditer"
 

	
 
#: kallithea/templates/base/perms_summary.html:90
 
msgid "No permission defined"
 
msgstr ""
 
msgstr "Aucune permission définie"
 

	
 
#: kallithea/templates/base/root.html:22
 
#, fuzzy
 
msgid "Add Another Comment"
 
msgstr "%d commentaire"
 
msgstr "Ajouter un autre commentaire"
 

	
 
#: kallithea/templates/base/root.html:23
 
#: kallithea/templates/data_table/_dt_elements.html:214
 
@@ -4770,38 +4793,35 @@ msgstr "Membres"
 

	
 
#: kallithea/templates/base/root.html:27
 
msgid "Loading ..."
 
msgstr ""
 
msgstr "Chargement..."
 

	
 
#: kallithea/templates/base/root.html:28
 
msgid "loading ..."
 
msgstr ""
 
msgstr "chargement..."
 

	
 
#: kallithea/templates/base/root.html:29
 
msgid "Search truncated"
 
msgstr ""
 
msgstr "Recherche tronquée"
 

	
 
#: kallithea/templates/base/root.html:30
 
msgid "No matching files"
 
msgstr ""
 
msgstr "Aucun fichier correspondant"
 

	
 
#: kallithea/templates/base/root.html:31
 
#, fuzzy
 
#| msgid "on pull request"
 
msgid "Open New Pull Request from {0}"
 
msgstr "[a commenté] la requête de pull pour"
 
msgstr "Ouvrir une nouvelle requête de pull à partir de {0}"
 

	
 
#: kallithea/templates/base/root.html:32
 
msgid "Open New Pull Request for {0} &rarr; {1}"
 
msgstr ""
 
msgstr "Ouvrir une nouvelle requête de pull pour {0} &rarr; {1}"
 

	
 
#: kallithea/templates/base/root.html:33
 
#, fuzzy
 
#| msgid "Show Selected Changeset __S"
 
msgid "Show Selected Changesets {0} &rarr; {1}"
 
msgstr "Sélectionner le changeset"
 
msgstr "Afficher les changesets sélectionnés {0} &rarr; {1}"
 

	
 
#: kallithea/templates/base/root.html:34
 
#, fuzzy
 
msgid "Selection Link"
 
msgstr "Lien vers la sélection"
 

	
 
@@ -4816,12 +4836,11 @@ msgstr "Déplier le Diff"
 

	
 
#: kallithea/templates/base/root.html:37
 
msgid "Failed to revoke permission"
 
msgstr ""
 
msgstr "Échec de la révocation de permission"
 

	
 
#: kallithea/templates/base/root.html:38
 
#, fuzzy
 
msgid "Confirm to revoke permission for {0}: {1} ?"
 
msgstr "Impossible de révoquer votre permission d'administrateur"
 
msgstr "Voulez-vous vraiment révoquer la permission pour {0} : {1} ?"
 

	
 
#: kallithea/templates/base/root.html:39
 
msgid "enabled"
 
@@ -4832,7 +4851,6 @@ msgid "disabled"
 
msgstr "désactivé"
 

	
 
#: kallithea/templates/base/root.html:42
 
#, fuzzy
 
msgid "Specify changeset"
 
msgstr "Sélectionner le changeset"
 

	
 
@@ -4843,7 +4861,7 @@ msgstr "Signets de %s"
 

	
 
#: kallithea/templates/bookmarks/bookmarks.html:26
 
msgid "Compare Bookmarks"
 
msgstr ""
 
msgstr "Comparer les marque-pages"
 

	
 
#: kallithea/templates/bookmarks/bookmarks.html:53
 
#: kallithea/templates/bookmarks/bookmarks_data.html:10
 
@@ -4875,7 +4893,7 @@ msgstr "Branches de %s"
 

	
 
#: kallithea/templates/branches/branches.html:26
 
msgid "Compare Branches"
 
msgstr ""
 
msgstr "Comparer les branches"
 

	
 
#: kallithea/templates/changelog/changelog.html:6
 
#, python-format
 
@@ -4891,29 +4909,27 @@ msgstr[1] "Affichage de %d révisions sur %d"
 

	
 
#: kallithea/templates/changelog/changelog.html:49
 
msgid "Clear selection"
 
msgstr ""
 
msgstr "Vider la sélection"
 

	
 
#: kallithea/templates/changelog/changelog.html:55
 
#, fuzzy
 
msgid "Go to tip of repository"
 
msgstr "Veuillez confirmer le verrouillage de ce dépôt"
 
msgstr "Aller au sommet (tip) du dépôt"
 

	
 
#: kallithea/templates/changelog/changelog.html:60
 
#: kallithea/templates/forks/forks_data.html:19
 
#, python-format
 
msgid "Compare fork with %s"
 
msgstr ""
 
msgstr "Comparer le fork avec %s"
 

	
 
#: kallithea/templates/changelog/changelog.html:62
 
#, python-format
 
msgid "Compare fork with parent repository (%s)"
 
msgstr ""
 
msgstr "Comparer le fork avec le dépôt parent (%s)"
 

	
 
#: kallithea/templates/changelog/changelog.html:66
 
#: kallithea/templates/files/files.html:29
 
#, fuzzy
 
msgid "Branch filter:"
 
msgstr "filtre"
 
msgstr "Filtre de branche :"
 

	
 
#: kallithea/templates/changelog/changelog.html:92
 
#: kallithea/templates/changelog/changelog_summary_data.html:20
 
@@ -4922,22 +4938,24 @@ msgid ""
 
"Changeset status: %s\n"
 
"Click to open associated pull request %s"
 
msgstr ""
 
"Statut du changeset : %s\n"
 
"Cliquer pour ouvrir la requête de pull %s associée"
 

	
 
#: kallithea/templates/changelog/changelog.html:96
 
#: kallithea/templates/compare/compare_cs.html:24
 
#, python-format
 
msgid "Changeset status: %s"
 
msgstr ""
 
msgstr "Statut de changeset : %s"
 

	
 
#: kallithea/templates/changelog/changelog.html:115
 
#: kallithea/templates/compare/compare_cs.html:63
 
msgid "Expand commit message"
 
msgstr ""
 
msgstr "Développer le message de commit"
 

	
 
#: kallithea/templates/changelog/changelog.html:124
 
#: kallithea/templates/compare/compare_cs.html:30
 
msgid "Changeset has comments"
 
msgstr ""
 
msgstr "Le changeset a des commentaires"
 

	
 
#: kallithea/templates/changelog/changelog.html:134
 
#: kallithea/templates/changelog/changelog_summary_data.html:54
 
@@ -4945,7 +4963,7 @@ msgstr ""
 
#: kallithea/templates/changeset/changeset_range.html:92
 
#, python-format
 
msgid "Bookmark %s"
 
msgstr ""
 
msgstr "Marque-page %s"
 

	
 
#: kallithea/templates/changelog/changelog.html:140
 
#: kallithea/templates/changelog/changelog_summary_data.html:60
 
@@ -4953,7 +4971,7 @@ msgstr ""
 
#: kallithea/templates/changeset/changeset_range.html:98
 
#, python-format
 
msgid "Tag %s"
 
msgstr ""
 
msgstr "Tag %s"
 

	
 
#: kallithea/templates/changelog/changelog.html:145
 
#: kallithea/templates/changelog/changelog_summary_data.html:65
 
@@ -4961,7 +4979,7 @@ msgstr ""
 
#: kallithea/templates/changeset/changeset_range.html:102
 
#, python-format
 
msgid "Branch %s"
 
msgstr ""
 
msgstr "Branche %s"
 

	
 
#: kallithea/templates/changelog/changelog.html:310
 
msgid "There are no changes yet"
 
@@ -4970,18 +4988,18 @@ msgstr "Il n’y a aucun changement pour le moment"
 
#: kallithea/templates/changelog/changelog_details.html:4
 
#: kallithea/templates/changeset/changeset.html:77
 
msgid "Removed"
 
msgstr ""
 
msgstr "Supprimé"
 

	
 
#: kallithea/templates/changelog/changelog_details.html:5
 
#: kallithea/templates/changeset/changeset.html:78
 
msgid "Changed"
 
msgstr ""
 
msgstr "Modifié"
 

	
 
#: kallithea/templates/changelog/changelog_details.html:6
 
#: kallithea/templates/changeset/changeset.html:79
 
#: kallithea/templates/changeset/diff_block.html:79
 
msgid "Added"
 
msgstr ""
 
msgstr "Ajouté"
 

	
 
#: kallithea/templates/changelog/changelog_details.html:8
 
#: kallithea/templates/changelog/changelog_details.html:9
 
@@ -4991,23 +5009,23 @@ msgstr ""
 
#: kallithea/templates/changeset/changeset.html:83
 
#, python-format
 
msgid "Affected %s files"
 
msgstr ""
 
msgstr "%s fichiers affectés"
 

	
 
#: kallithea/templates/changelog/changelog_summary_data.html:8
 
#: kallithea/templates/files/files_add.html:60
 
#: kallithea/templates/files/files_delete.html:39
 
#: kallithea/templates/files/files_edit.html:63
 
msgid "Commit Message"
 
msgstr ""
 
msgstr "Message de commit"
 

	
 
#: kallithea/templates/changelog/changelog_summary_data.html:9
 
#: kallithea/templates/pullrequests/pullrequest_data.html:17
 
msgid "Age"
 
msgstr ""
 
msgstr "Âge"
 

	
 
#: kallithea/templates/changelog/changelog_summary_data.html:11
 
msgid "Refs"
 
msgstr ""
 
msgstr "Refs"
 

	
 
#: kallithea/templates/changelog/changelog_summary_data.html:81
 
msgid "Add or upload files directly via Kallithea"
 
@@ -5017,10 +5035,9 @@ msgstr "Ajouter ou téléverser des fichiers directement via Kallithea"
 
#: kallithea/templates/files/files_add.html:21
 
#: kallithea/templates/files/files_ypjax.html:9
 
msgid "Add New File"
 
msgstr ""
 
msgstr "Ajouter un nouveau fichier"
 

	
 
#: kallithea/templates/changelog/changelog_summary_data.html:90
 
#, fuzzy
 
msgid "Push new repository"
 
msgstr "Pusher le nouveau dépôt"
 

	
 
@@ -5035,11 +5052,11 @@ msgstr "Changeset de %s"
 

	
 
#: kallithea/templates/changeset/changeset.html:36
 
msgid "Parent rev."
 
msgstr ""
 
msgstr "Révision parente"
 

	
 
#: kallithea/templates/changeset/changeset.html:42
 
msgid "Child rev."
 
msgstr ""
 
msgstr "Révision fille"
 

	
 
#: kallithea/templates/changeset/changeset.html:50
 
#: kallithea/templates/changeset/changeset_file_comment.html:37
 
@@ -5051,42 +5068,38 @@ msgstr "Statut du changeset"
 
#: kallithea/templates/changeset/diff_block.html:27
 
#: kallithea/templates/files/diff_2way.html:49
 
msgid "Raw diff"
 
msgstr ""
 
msgstr "Diff brut"
 

	
 
#: kallithea/templates/changeset/changeset.html:57
 
msgid "Patch diff"
 
msgstr ""
 
msgstr "Diff patch"
 

	
 
#: kallithea/templates/changeset/changeset.html:60
 
#: kallithea/templates/changeset/diff_block.html:30
 
#: kallithea/templates/files/diff_2way.html:52
 
msgid "Download diff"
 
msgstr ""
 
msgstr "Télécharger le diff"
 

	
 
#: kallithea/templates/changeset/changeset.html:89
 
#: kallithea/templates/changeset/changeset_range.html:88
 
#, fuzzy
 
msgid "Merge"
 
msgstr "Fusion"
 

	
 
#: kallithea/templates/changeset/changeset.html:123
 
#, fuzzy
 
msgid "Grafted from:"
 
msgstr "Créé le"
 
msgstr "Grafté depuis :"
 

	
 
#: kallithea/templates/changeset/changeset.html:129
 
msgid "Transplanted from:"
 
msgstr ""
 
msgstr "Transplanté depuis :"
 

	
 
#: kallithea/templates/changeset/changeset.html:135
 
#, fuzzy
 
msgid "Replaced by:"
 
msgstr "créé"
 
msgstr "Remplacé par :"
 

	
 
#: kallithea/templates/changeset/changeset.html:149
 
#, fuzzy
 
msgid "Preceded by:"
 
msgstr "créé"
 
msgstr "Précédé par :"
 

	
 
#: kallithea/templates/changeset/changeset.html:166
 
#: kallithea/templates/compare/compare_diff.html:54
 
@@ -5094,8 +5107,8 @@ msgstr "créé"
 
#, python-format
 
msgid "%s file changed"
 
msgid_plural "%s files changed"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[0] "%s fichier changé"
 
msgstr[1] "%s fichiers changés"
 

	
 
#: kallithea/templates/changeset/changeset.html:168
 
#: kallithea/templates/compare/compare_diff.html:56
 
@@ -5103,46 +5116,40 @@ msgstr[1] ""
 
#, python-format
 
msgid "%s file changed with %s insertions and %s deletions"
 
msgid_plural "%s files changed with %s insertions and %s deletions"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[0] "%s fichier changé avec %s insertions et %s suppressions"
 
msgstr[1] "%s fichiers changés avec %s insertions et %s suppressions"
 

	
 
#: kallithea/templates/changeset/changeset.html:182
 
#: kallithea/templates/changeset/changeset.html:195
 
#: kallithea/templates/pullrequests/pullrequest_show.html:339
 
#: kallithea/templates/pullrequests/pullrequest_show.html:363
 
msgid "Show full diff anyway"
 
msgstr ""
 
msgstr "Afficher le diff complet quand même"
 

	
 
#: kallithea/templates/changeset/changeset.html:247
 
#: kallithea/templates/changeset/changeset.html:284
 
#, fuzzy
 
msgid "No revisions"
 
msgstr "révisions"
 
msgstr "Aucune révision"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:21
 
#, fuzzy
 
msgid "on pull request"
 
msgstr "[a commenté] la requête de pull pour"
 
msgstr "sur la requête de pull"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:22
 
#, fuzzy
 
msgid "No title"
 
msgstr "nouveau fichier"
 
msgstr "Aucun titre"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:24
 
#, fuzzy
 
msgid "on this changeset"
 
msgstr "Aucun changeset"
 
msgstr "sur ce changeset"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:30
 
#, fuzzy
 
msgid "Delete comment?"
 
msgstr "%d commentaire"
 
msgstr "Supprimer le commentaire ?"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:37
 
#, fuzzy
 
msgid "Status change"
 
msgstr "fichiers modifiés"
 
msgstr "Changement de statut"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:59
 
msgid "Commenting on line {1}."
 
@@ -5157,19 +5164,17 @@ msgstr ""
 
"commande %s."
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:62
 
#, fuzzy
 
msgid "Use @username inside this text to notify another user"
 
msgstr ""
 
"Utilisez @nomutilisateur dans ce texte pour envoyer une notification à "
 
"l’utilisateur Kallithea en question"
 
"Utilisez @nomutilisateur dans ce texte pour envoyer une notification à un "
 
"autre utilisateur"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:72
 
#: kallithea/templates/changeset/changeset_file_comment.html:184
 
msgid "Comment preview"
 
msgstr ""
 
msgstr "Aperçu du commentaire"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:77
 
#, fuzzy
 
msgid "Submitting ..."
 
msgstr "Envoi…"
 

	
 
@@ -5181,7 +5186,7 @@ msgstr "Commentaire"
 
#: kallithea/templates/changeset/changeset_file_comment.html:82
 
#: kallithea/templates/changeset/changeset_file_comment.html:191
 
msgid "Preview"
 
msgstr ""
 
msgstr "Aperçu"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:90
 
msgid "You need to be logged in to comment."
 
@@ -5203,44 +5208,40 @@ msgstr[0] "%d commentaire"
 
msgstr[1] "%d commentaires"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:107
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%d inline"
 
msgid_plural "%d inline"
 
msgstr[0] "(et %d en ligne)"
 
msgstr[1] "(et %d en ligne)"
 
msgstr[0] "%d de ligne"
 
msgstr[1] "%d de ligne"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:108
 
#, python-format
 
msgid "%d general"
 
msgid_plural "%d general"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[0] "%d général"
 
msgstr[1] "%d généraux"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:150
 
#, fuzzy
 
msgid "Use @username inside this text to notify another user."
 
msgstr ""
 
"Utilisez @nomutilisateur dans ce texte pour envoyer une notification à "
 
"l’utilisateur Kallithea en question"
 
"Utilisez @nomutilisateur dans ce texte pour envoyer une notification à un "
 
"autre utilisateur."
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:157
 
msgid "Vote for pull request status"
 
msgstr ""
 
msgstr "Voter pour le statut de la requête de pull"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:159
 
#, fuzzy
 
msgid "Set changeset status"
 
msgstr "Statut du changeset"
 
msgstr "Modifier le statut du changeset"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:163
 
#, fuzzy
 
msgid "No change"
 
msgstr "Aucun changement"
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:176
 
#, fuzzy
 
msgid "Close"
 
msgstr "(fermé)"
 
msgstr "Fermer"
 

	
 
#: kallithea/templates/changeset/changeset_range.html:5
 
#, python-format
 
@@ -5254,27 +5255,25 @@ msgstr "Fichiers affectés"
 
#: kallithea/templates/changeset/diff_block.html:21
 
#: kallithea/templates/files/diff_2way.html:43
 
msgid "Show full diff for this file"
 
msgstr ""
 
msgstr "Afficher le diff complet pour ce fichier"
 

	
 
#: kallithea/templates/changeset/diff_block.html:24
 
#: kallithea/templates/changeset/diff_block.html:98
 
#: kallithea/templates/files/diff_2way.html:46
 
msgid "Show full side-by-side diff for this file"
 
msgstr ""
 
msgstr "Afficher le diff complet côte-à-côte pour ce fichier"
 

	
 
#: kallithea/templates/changeset/diff_block.html:38
 
msgid "Show inline comments"
 
msgstr ""
 
msgstr "Afficher les commentaires de ligne"
 

	
 
#: kallithea/templates/changeset/diff_block.html:86
 
#, fuzzy
 
msgid "Deleted"
 
msgstr "Supprimer"
 
msgstr "Supprimé"
 

	
 
#: kallithea/templates/changeset/diff_block.html:89
 
#, fuzzy
 
msgid "Renamed"
 
msgstr "renommer"
 
msgstr "Renommé"
 

	
 
#: kallithea/templates/compare/compare_cs.html:4
 
msgid "No changesets"
 
@@ -5286,19 +5285,19 @@ msgstr "Ancêtre"
 

	
 
#: kallithea/templates/compare/compare_cs.html:44
 
msgid "First (oldest) changeset in this list"
 
msgstr ""
 
msgstr "Premier changeset dans cette liste (le plus vieux)"
 

	
 
#: kallithea/templates/compare/compare_cs.html:46
 
msgid "Last (most recent) changeset in this list"
 
msgstr ""
 
msgstr "Dernier changeset dans cette liste (le plus récent)"
 

	
 
#: kallithea/templates/compare/compare_cs.html:48
 
msgid "Position in this list of changesets"
 
msgstr ""
 
msgstr "Position dans cette liste de changesets"
 

	
 
#: kallithea/templates/compare/compare_cs.html:76
 
msgid "Show merge diff"
 
msgstr ""
 
msgstr "Afficher le diff de fusion"
 

	
 
#: kallithea/templates/compare/compare_cs.html:86
 
#: kallithea/templates/pullrequests/pullrequest_show.html:310
 
@@ -5310,51 +5309,49 @@ msgid "No common ancestor found - reposi
 
msgstr "Aucun ancêtre commun trouvé - les dépôts n'ont aucun lien entre eux"
 

	
 
#: kallithea/templates/compare/compare_cs.html:98
 
#, fuzzy
 
msgid "is"
 
msgstr "Gist"
 
msgstr "est"
 

	
 
#: kallithea/templates/compare/compare_cs.html:99
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%s changesets"
 
msgstr "Changesets de %s"
 

	
 
#: kallithea/templates/compare/compare_cs.html:100
 
#, fuzzy
 
msgid "behind"
 
msgstr "Mettre à jour l’index"
 
msgstr "derrière"
 

	
 
#: kallithea/templates/compare/compare_diff.html:6
 
#: kallithea/templates/compare/compare_diff.html:8
 
#, python-format
 
msgid "%s Compare"
 
msgstr ""
 
msgstr "Comparaison de %s"
 

	
 
#: kallithea/templates/compare/compare_diff.html:13
 
#: kallithea/templates/compare/compare_diff.html:35
 
msgid "Compare Revisions"
 
msgstr ""
 
msgstr "Comparer les révisions"
 

	
 
#: kallithea/templates/compare/compare_diff.html:33
 
msgid "Swap"
 
msgstr ""
 
msgstr "Échanger"
 

	
 
#: kallithea/templates/compare/compare_diff.html:42
 
msgid "Compare revisions, branches, bookmarks, or tags."
 
msgstr ""
 
msgstr "Comparer les révisions, les branches, les marque-pages ou les tags."
 

	
 
#: kallithea/templates/compare/compare_diff.html:47
 
#: kallithea/templates/pullrequests/pullrequest_show.html:305
 
#, python-format
 
msgid "Showing %s commit"
 
msgid_plural "Showing %s commits"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[0] "Affichage de %s commit"
 
msgstr[1] "Affichage de %s commits"
 

	
 
#: kallithea/templates/compare/compare_diff.html:78
 
#: kallithea/templates/compare/compare_diff.html:89
 
msgid "Show full diff"
 
msgstr ""
 
msgstr "Afficher le diff complet"
 

	
 
#: kallithea/templates/data_table/_dt_elements.html:74
 
msgid "Public repository"
 
@@ -5362,7 +5359,7 @@ msgstr "Dépôt public"
 

	
 
#: kallithea/templates/data_table/_dt_elements.html:84
 
msgid "Repository creation in progress..."
 
msgstr ""
 
msgstr "Création du dépôt en cours..."
 

	
 
#: kallithea/templates/data_table/_dt_elements.html:98
 
msgid "No changesets yet"
 
@@ -5382,83 +5379,88 @@ msgstr "S’abonner au flux ATOM de %s"
 

	
 
#: kallithea/templates/data_table/_dt_elements.html:139
 
msgid "Creating"
 
msgstr ""
 
msgstr "En cours de création"
 

	
 
#: kallithea/templates/email_templates/changeset_comment.html:5
 
#, python-format
 
msgid "Comment from %s on %s changeset %s mentioned you"
 
msgstr ""
 
msgstr "Le commentaire de %s sur le changeset de %s (%s) mentionne votre nom"
 

	
 
#: kallithea/templates/email_templates/changeset_comment.html:7
 
#, python-format
 
msgid "Comment from %s on %s changeset %s"
 
msgstr ""
 
msgstr "Commentaire de %s sur le changeset de %s (%s)"
 

	
 
#: kallithea/templates/email_templates/changeset_comment.html:12
 
msgid "The changeset status was changed to"
 
msgstr ""
 
msgstr "Le statut du changeset a été changé en"
 

	
 
#: kallithea/templates/email_templates/main.html:6
 
msgid "This is an automatic notification. Don't reply to this mail."
 
msgstr ""
 
msgstr "Ceci est une notification automatique. Ne pas répondre à cet e-mail."
 

	
 
#: kallithea/templates/email_templates/password_reset.html:4
 
#, python-format
 
msgid "Hello %s"
 
msgstr ""
 
msgstr "Bonjour %s"
 

	
 
#: kallithea/templates/email_templates/password_reset.html:6
 
msgid "We have received a request to reset the password for your account."
 
msgstr ""
 
"Nous avons reçu une demande de réinitialisation du mot de passe de votre "
 
"compte."
 

	
 
#: kallithea/templates/email_templates/password_reset.html:7
 
msgid "To set a new password, click the following link"
 
msgstr ""
 
msgstr "Pour choisir un nouveau mot de passe, cliquez sur le lien suivant"
 

	
 
#: kallithea/templates/email_templates/password_reset.html:10
 
msgid ""
 
"Should you not be able to use the link above, please type the following "
 
"code into the password reset form"
 
msgstr ""
 
"Si vous ne pouvez pas utiliser le lien ci-dessus, merci de saisir le code "
 
"suivant dans le formulaire de réinitialisation de mot de passe"
 

	
 
#: kallithea/templates/email_templates/password_reset.html:12
 
msgid ""
 
"If it weren't you who requested the password reset, just disregard this "
 
"message."
 
msgstr ""
 
"Si vous n'avez pas demandé la réinitialisation de votre mot de passe, ne "
 
"tenez pas compte de ce message."
 

	
 
#: kallithea/templates/email_templates/pull_request.html:5
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%s mentioned you on %s pull request \"%s\""
 
msgstr ""
 
msgstr "%s a mentionné votre nom dans la requête de pull %s « %s »"
 

	
 
#: kallithea/templates/email_templates/pull_request.html:7
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%s requested your review of %s pull request \"%s\""
 
msgstr ""
 
msgstr "%s vous demande de vérifier la requête de pull %s « %s »"
 

	
 
#: kallithea/templates/email_templates/pull_request_comment.html:4
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Comment from %s on %s pull request \"%s\""
 
msgstr ""
 
msgstr "Commentaire de %s sur la requête de pull %s « %s »"
 

	
 
#: kallithea/templates/email_templates/pull_request_comment.html:9
 
#, fuzzy
 
msgid "The comment closed the pull request with status"
 
msgstr "Montrer les demandes de pull fermées"
 
msgstr "Le commentaire a fermé la requête de pull avec le statut"
 

	
 
#: kallithea/templates/email_templates/pull_request_comment.html:11
 
msgid "The comment was made with status"
 
msgstr ""
 
msgstr "Le commentaire a été fait avec le statut"
 

	
 
#: kallithea/templates/email_templates/registration.html:6
 
msgid "View this user here"
 
msgstr ""
 
msgstr "Visualiser cet utilisateur ici"
 

	
 
#: kallithea/templates/files/diff_2way.html:15
 
#, python-format
 
msgid "%s File side-by-side diff"
 
msgstr ""
 
msgstr "Diff côte-à-côte de fichier pour %s"
 

	
 
#: kallithea/templates/files/diff_2way.html:19
 
#: kallithea/templates/files/file_diff.html:8
 
@@ -5468,7 +5470,7 @@ msgstr "Diff de fichier"
 
#: kallithea/templates/files/file_diff.html:4
 
#, python-format
 
msgid "%s File Diff"
 
msgstr ""
 
msgstr "Diff de fichier pour %s"
 

	
 
#: kallithea/templates/files/files.html:4
 
#: kallithea/templates/files/files.html:80
 
@@ -5479,7 +5481,7 @@ msgstr "Fichiers de %s"
 
#: kallithea/templates/files/files_add.html:4
 
#, python-format
 
msgid "%s Files Add"
 
msgstr ""
 
msgstr "Ajout de fichiers pour %s"
 

	
 
#: kallithea/templates/files/files_add.html:40
 
#: kallithea/templates/files/files_edit.html:38
 
@@ -5489,7 +5491,7 @@ msgstr "Emplacement"
 

	
 
#: kallithea/templates/files/files_add.html:42
 
msgid "Enter filename..."
 
msgstr ""
 
msgstr "Saisir le nom du fichier..."
 

	
 
#: kallithea/templates/files/files_add.html:44
 
#: kallithea/templates/files/files_add.html:48
 
@@ -5498,38 +5500,37 @@ msgstr "ou"
 

	
 
#: kallithea/templates/files/files_add.html:44
 
msgid "Upload File"
 
msgstr ""
 
msgstr "Uploader un fichier"
 

	
 
#: kallithea/templates/files/files_add.html:48
 
msgid "Create New File"
 
msgstr ""
 
msgstr "Créer un nouveau fichier"
 

	
 
#: kallithea/templates/files/files_add.html:53
 
msgid "New file mode"
 
msgstr ""
 
msgstr "Mode du nouveau fichier"
 

	
 
#: kallithea/templates/files/files_add.html:64
 
#: kallithea/templates/files/files_delete.html:43
 
#: kallithea/templates/files/files_edit.html:67
 
#, fuzzy
 
msgid "Commit Changes"
 
msgstr "Commiter les changements"
 

	
 
#: kallithea/templates/files/files_browser.html:33
 
msgid "Previous revision"
 
msgstr ""
 
msgstr "Révision précédente"
 

	
 
#: kallithea/templates/files/files_browser.html:35
 
msgid "Next revision"
 
msgstr ""
 
msgstr "Révision suivante"
 

	
 
#: kallithea/templates/files/files_browser.html:41
 
msgid "Follow current branch"
 
msgstr ""
 
msgstr "Suivre la branche courante"
 

	
 
#: kallithea/templates/files/files_browser.html:44
 
msgid "Search File List"
 
msgstr ""
 
msgstr "Rechercher dans la liste des fichiers"
 

	
 
#: kallithea/templates/files/files_browser.html:48
 
msgid "Loading file list..."
 
@@ -5544,47 +5545,45 @@ msgid "Last Revision"
 
msgstr "Dernière révision"
 

	
 
#: kallithea/templates/files/files_browser.html:63
 
#, fuzzy
 
msgid "Last Modified"
 
msgstr "Dernière modification"
 

	
 
#: kallithea/templates/files/files_browser.html:64
 
#, fuzzy
 
msgid "Last Committer"
 
msgstr "Dernier commiteur"
 

	
 
#: kallithea/templates/files/files_delete.html:4
 
#, python-format
 
msgid "%s Files Delete"
 
msgstr ""
 
msgstr "Suppression de fichiers pour %s"
 

	
 
#: kallithea/templates/files/files_delete.html:12
 
#: kallithea/templates/files/files_delete.html:31
 
msgid "Delete file"
 
msgstr ""
 
msgstr "Supprimer le fichier"
 

	
 
#: kallithea/templates/files/files_edit.html:4
 
#, python-format
 
msgid "%s File Edit"
 
msgstr ""
 
msgstr "Édition de fichier pour %s"
 

	
 
#: kallithea/templates/files/files_edit.html:21
 
msgid "Edit file"
 
msgstr ""
 
msgstr "Éditer le fichier"
 

	
 
#: kallithea/templates/files/files_edit.html:48
 
#: kallithea/templates/files/files_source.html:32
 
msgid "Show Annotation"
 
msgstr ""
 
msgstr "Afficher l'annotation"
 

	
 
#: kallithea/templates/files/files_edit.html:50
 
#: kallithea/templates/files/files_source.html:35
 
msgid "Download as Raw"
 
msgstr ""
 
msgstr "Télécharger au format brut"
 

	
 
#: kallithea/templates/files/files_edit.html:53
 
msgid "Source"
 
msgstr ""
 
msgstr "Source"
 

	
 
#: kallithea/templates/files/files_edit.html:58
 
msgid "Editing file"
 
@@ -5599,40 +5598,44 @@ msgstr[1] "%s auteurs"
 

	
 
#: kallithea/templates/files/files_source.html:7
 
msgid "Diff to Revision"
 
msgstr ""
 
msgstr "Diff par rapport à une révision"
 

	
 
#: kallithea/templates/files/files_source.html:8
 
msgid "Show at Revision"
 
msgstr ""
 
msgstr "Afficher à une révision"
 

	
 
#: kallithea/templates/files/files_source.html:10
 
msgid "Show Full History"
 
msgstr ""
 
msgstr "Afficher l'historique complet"
 

	
 
#: kallithea/templates/files/files_source.html:11
 
msgid "Show Authors"
 
msgstr ""
 
msgstr "Afficher les auteurs"
 

	
 
#: kallithea/templates/files/files_source.html:30
 
msgid "Show Source"
 
msgstr ""
 
msgstr "Afficher la source"
 

	
 
#: kallithea/templates/files/files_source.html:38
 
#, python-format
 
msgid "Edit on Branch:%s"
 
msgstr ""
 
msgstr "Éditer sur la branche : %s"
 

	
 
#: kallithea/templates/files/files_source.html:41
 
msgid "Editing binary files not allowed"
 
msgstr ""
 
msgstr "Édition de fichiers binaires interdite"
 

	
 
#: kallithea/templates/files/files_source.html:44
 
msgid "Editing files allowed only when on branch head revision"
 
msgstr ""
 
"Édition de fichiers autorisée uniquement sur la révision de tête (head) de "
 
"la branche"
 

	
 
#: kallithea/templates/files/files_source.html:45
 
msgid "Deleting files allowed only when on branch head revision"
 
msgstr ""
 
"Suppression de fichiers autorisée uniquement sur la révision de tête (head) "
 
"de la branche"
 

	
 
#: kallithea/templates/files/files_source.html:63
 
#, python-format
 
@@ -5649,7 +5652,7 @@ msgstr "annotation"
 

	
 
#: kallithea/templates/files/files_ypjax.html:23
 
msgid "Go Back"
 
msgstr ""
 
msgstr "Retour"
 

	
 
#: kallithea/templates/files/files_ypjax.html:24
 
msgid "No files at given path"
 
@@ -5673,18 +5676,17 @@ msgstr "A commencé à suivre le dépôt :"
 
#: kallithea/templates/forks/fork.html:5
 
#, python-format
 
msgid "Fork repository %s"
 
msgstr ""
 
msgstr "Forker le dépôt %s"
 

	
 
#: kallithea/templates/forks/fork.html:27
 
msgid "Fork name"
 
msgstr "Nom du fork"
 

	
 
#: kallithea/templates/forks/fork.html:62
 
#, fuzzy
 
msgid "Default revision for files page, downloads, whoosh, and readme."
 
msgstr ""
 
"Révision par défaut pour les pages de fichiers, de téléchargements, de "
 
"recherche et de documentation"
 
"recherche et de documentation."
 

	
 
#: kallithea/templates/forks/fork.html:68
 
msgid "Private"
 
@@ -5708,7 +5710,7 @@ msgstr "Mettre à jour depuis la source après clonage"
 

	
 
#: kallithea/templates/forks/fork.html:96
 
msgid "Fork this Repository"
 
msgstr ""
 
msgstr "Forker ce dépôt"
 

	
 
#: kallithea/templates/forks/forks.html:5
 
#, python-format
 
@@ -5723,7 +5725,7 @@ msgstr "Forks"
 

	
 
#: kallithea/templates/forks/forks_data.html:17
 
msgid "Forked"
 
msgstr ""
 
msgstr "Forké"
 

	
 
#: kallithea/templates/forks/forks_data.html:30
 
msgid "There are no forks yet"
 
@@ -5755,7 +5757,6 @@ msgstr "Flux RSS du journal public"
 

	
 
#: kallithea/templates/pullrequests/pullrequest.html:4
 
#: kallithea/templates/pullrequests/pullrequest.html:8
 
#, fuzzy
 
msgid "New Pull Request"
 
msgstr "Nouvelle requête de pull"
 

	
 
@@ -5768,55 +5769,53 @@ msgstr "Titre"
 

	
 
#: kallithea/templates/pullrequests/pullrequest.html:34
 
msgid "Summarize the changes - or leave empty"
 
msgstr ""
 
msgstr "Résumer les modifications - ou laisser vide"
 

	
 
#: kallithea/templates/pullrequests/pullrequest.html:43
 
#: kallithea/templates/pullrequests/pullrequest_show.html:66
 
msgid "Write a short description on this pull request"
 
msgstr ""
 
msgstr "Saisir une courte description de cette requête de pull"
 

	
 
#: kallithea/templates/pullrequests/pullrequest.html:49
 
msgid "Changeset flow"
 
msgstr ""
 
msgstr "Flux des changesets"
 

	
 
#: kallithea/templates/pullrequests/pullrequest.html:56
 
msgid "Origin repository"
 
msgstr ""
 
msgstr "Dépôt d'origine"
 

	
 
#: kallithea/templates/pullrequests/pullrequest.html:72
 
msgid "Destination repository"
 
msgstr ""
 
msgstr "Dépôt de destination"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_data.html:6
 
#, fuzzy
 
msgid "No entries"
 
msgstr "Aucune entrée pour le moment"
 
msgstr "Aucune entrée"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_data.html:14
 
#, fuzzy
 
msgid "Vote"
 
msgstr "Révoquer"
 
msgstr "Voter"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_data.html:18
 
msgid "From"
 
msgstr ""
 
msgstr "Depuis"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_data.html:19
 
msgid "To"
 
msgstr ""
 
msgstr "Vers"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_data.html:28
 
#, python-format
 
msgid "You voted: %s"
 
msgstr ""
 
msgstr "Vous avez voté : %s"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_data.html:30
 
msgid "You didn't vote"
 
msgstr ""
 
msgstr "Vous n'avez pas voté"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_data.html:35
 
msgid "(no title)"
 
msgstr ""
 
msgstr "(sans titre)"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_data.html:37
 
#: kallithea/templates/pullrequests/pullrequest_show.html:31
 
@@ -5825,42 +5824,42 @@ msgid "Closed"
 
msgstr "Fermée"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_data.html:67
 
#, fuzzy
 
msgid "Delete Pull Request"
 
msgstr "Nouvelle requête de pull"
 
msgstr "Supprimer la requête de pull"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_data.html:68
 
msgid "Confirm to delete this pull request"
 
msgstr "Veuillez confirmer la suppression de cette requête de pull"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_data.html:70
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Confirm again to delete this pull request with %s comments"
 
msgstr "Veuillez confirmer la suppression de cette requête de pull"
 
msgstr ""
 
"Veuillez confirmer la suppression de cette requête de pull avec %s "
 
"commentaires"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:6
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%s Pull Request %s"
 
msgstr "Requête de pull #%s"
 
msgstr "%s Requête de pull %s"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:10
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Pull request %s from %s#%s"
 
msgstr "Requête de pull #%s"
 
msgstr "Requête de pull %s depuis %s#%s"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:57
 
#, fuzzy
 
msgid "Summarize the changes"
 
msgstr "Commiter les changements"
 
msgstr "Résumer les changements"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:74
 
msgid "Reviewer voting result"
 
msgstr ""
 
msgstr "Résultat du vote des relecteurs"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:80
 
#: kallithea/templates/pullrequests/pullrequest_show.html:81
 
msgid "Pull request status calculated from votes"
 
msgstr ""
 
msgstr "Statut de la requête de pull calculé à partir des votes"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:93
 
msgid "Still not reviewed by"
 
@@ -5875,145 +5874,137 @@ msgstr[1] "%d relecteurs"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:99
 
msgid "Pull request was reviewed by all reviewers"
 
msgstr ""
 
msgstr "La requête de pull a été relue par tous les relecteurs"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:101
 
#, fuzzy
 
msgid "There are no reviewers"
 
msgstr "Aucune branche na été créée pour le moment"
 
msgstr "Il n'y a aucun relecteur"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:107
 
msgid "Origin"
 
msgstr ""
 
msgstr "Origine"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:113
 
#, fuzzy
 
msgid "on"
 
msgstr "Aucune"
 
msgstr "sur"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:120
 
msgid "Target"
 
msgstr ""
 
msgstr "Cible"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:124
 
msgid ""
 
"This is just a range of changesets and doesn't have a target or a real "
 
"merge ancestor."
 
msgstr ""
 
"Ceci est juste une série de changesets, et n'a pas de cible ou de véritable "
 
"ancêtre de fusion."
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:133
 
msgid "Pull changes"
 
msgstr ""
 
msgstr "Puller les modifications"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:173
 
#, fuzzy
 
msgid "Update"
 
msgstr "[a mis à jour] l’utilisateur"
 
msgstr "Mettre à jour"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:191
 
msgid "Current revision - no change"
 
msgstr ""
 
msgstr "Révision courante - aucun changement"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:213
 
#, fuzzy
 
msgid "Pull Request Reviewers"
 
msgstr "Relecteurs de la requête de pull"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:238
 
#, fuzzy
 
msgid "Remove reviewer"
 
msgstr "%d relecteur"
 
msgstr "Supprimer le relecteur"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:250
 
msgid "Type name of reviewer to add"
 
msgstr ""
 
msgstr "Saisir le nom du relecteur à ajouter"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:258
 
#, fuzzy
 
msgid "Potential Reviewers"
 
msgstr "%d relecteur"
 
msgstr "Relecteurs potentiels"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:261
 
msgid "Click to add the repository owner as reviewer:"
 
msgstr ""
 
msgstr "Cliquer pour ajouter le propriétaire du dépôt comme relecteur :"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:284
 
msgid "Save Changes"
 
msgstr ""
 
msgstr "Enregistrer les changements"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:285
 
#, fuzzy
 
msgid "Save as New Pull Request"
 
msgstr "Nouvelle requête de pull"
 
msgstr "Sauvegarder en tant que nouvelle requête de pull"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:286
 
#, fuzzy
 
msgid "Cancel Changes"
 
msgstr "Sélectionner le changeset"
 
msgstr "Annuler les modifications"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show.html:296
 
#, fuzzy
 
msgid "Pull Request Content"
 
msgstr "Requêtes de pull"
 
msgstr "Contenu de la requête de pull"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show_all.html:6
 
#, python-format
 
msgid "%s Pull Requests"
 
msgstr ""
 
msgstr "Requêtes de pull pour %s"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show_all.html:11
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Pull Requests from %s'"
 
msgstr "Requête de pull #%s"
 
msgstr "Requête de pull depuis %s'"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show_all.html:13
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Pull Requests to '%s'"
 
msgstr "Requête de pull #%s"
 
msgstr "Requête de pull vers '%s'"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show_all.html:32
 
#, fuzzy
 
msgid "Open New Pull Request"
 
msgstr "Nouvelle requête de pull"
 
msgstr "Ouvrir une nouvelle requête de pull"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show_all.html:37
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Show Pull Requests to %s"
 
msgstr "Requête de pull #%s"
 
msgstr "Afficher les requêtes de pull vers %s"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show_all.html:39
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Show Pull Requests from '%s'"
 
msgstr ""
 
msgstr "Afficher les requêtes de pull depuis '%s'"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show_all.html:49
 
#: kallithea/templates/pullrequests/pullrequest_show_my.html:28
 
msgid "Hide closed pull requests (only show open pull requests)"
 
msgstr ""
 
"Cacher les requêtes de pull fermées (afficher uniquement les requêtes de "
 
"pull ouvertes)"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show_all.html:51
 
#: kallithea/templates/pullrequests/pullrequest_show_my.html:30
 
msgid "Show closed pull requests (in addition to open pull requests)"
 
msgstr ""
 
"Afficher les requêtes de pull fermées (en plus des requêtes de pull ouvertes)"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show_my.html:35
 
#, fuzzy
 
msgid "Pull Requests Created by Me"
 
msgstr "Relecteurs de la requête de pull"
 
msgstr "Requêtes de pull créées par moi"
 

	
 
#: kallithea/templates/pullrequests/pullrequest_show_my.html:38
 
#, fuzzy
 
msgid "Pull Requests I Participate In"
 
msgstr "Je participe à"
 
msgstr "Requêtes de pull auxquelles je participe"
 

	
 
#: kallithea/templates/search/search.html:6
 
#, python-format
 
msgid "%s Search"
 
msgstr ""
 
msgstr "Recherche pour %s"
 

	
 
#: kallithea/templates/search/search.html:8
 
#: kallithea/templates/search/search.html:16
 
#, fuzzy
 
msgid "Search in All Repositories"
 
msgstr "Rechercher dans tous les dépôts"
 

	
 
@@ -6046,25 +6037,25 @@ msgstr "Permission refusée"
 
#: kallithea/templates/summary/statistics.html:4
 
#, python-format
 
msgid "%s Statistics"
 
msgstr ""
 
msgstr "Statistiques pour %s"
 

	
 
#: kallithea/templates/summary/statistics.html:16
 
#: kallithea/templates/summary/summary.html:39
 
#, python-format
 
msgid "%s ATOM feed"
 
msgstr ""
 
msgstr "Flux ATOM pour %s"
 

	
 
#: kallithea/templates/summary/statistics.html:17
 
#: kallithea/templates/summary/summary.html:40
 
#, python-format
 
msgid "%s RSS feed"
 
msgstr ""
 
msgstr "Flux RSS pour %s"
 

	
 
#: kallithea/templates/summary/statistics.html:36
 
#: kallithea/templates/summary/summary.html:100
 
#: kallithea/templates/summary/summary.html:116
 
msgid "Enable"
 
msgstr ""
 
msgstr "Activer"
 

	
 
#: kallithea/templates/summary/statistics.html:39
 
msgid "Stats gathered: "
 
@@ -6078,7 +6069,7 @@ msgstr "Fichiers"
 
#: kallithea/templates/summary/statistics.html:113
 
#: kallithea/templates/summary/summary.html:373
 
msgid "Show more"
 
msgstr ""
 
msgstr "Afficher plus"
 

	
 
#: kallithea/templates/summary/statistics.html:390
 
msgid "commits"
 
@@ -6120,11 +6111,11 @@ msgstr "Résumé de %s"
 
#: kallithea/templates/summary/summary.html:13
 
#, python-format
 
msgid "Repository locked by %s"
 
msgstr ""
 
msgstr "Dépôt verrouillé par %s"
 

	
 
#: kallithea/templates/summary/summary.html:15
 
msgid "Repository unlocked"
 
msgstr ""
 
msgstr "Dépôt déverrouillé"
 

	
 
#: kallithea/templates/summary/summary.html:22
 
msgid "Fork of"
 
@@ -6171,9 +6162,8 @@ msgid "Check this to download archive wi
 
msgstr "Télécharger une archive contenant également les sous-dépôts éventuels"
 

	
 
#: kallithea/templates/summary/summary.html:125
 
#, fuzzy
 
msgid "With subrepos"
 
msgstr "avec les sous-dépôts"
 
msgstr "Avec les sous-dépôts"
 

	
 
#: kallithea/templates/summary/summary.html:156
 
msgid "Repository Size"
 
@@ -6242,6 +6232,8 @@ msgstr "Comparer les tags"
 
#~ msgstr "Aucun fichier"
 

	
 
#~ msgid ""
 
#~ "_: \n"
 
#~ ""
 
#~ msgstr ""
 

	
 
#~ msgid "Username \"%(username)s\" is forbidden"
kallithea/i18n/how_to
Show inline comments
 
@@ -50,11 +50,11 @@ Manual creation of a new language transl
 
In the prepared development environment, run the following to ensure
 
all translation strings are extracted and up-to-date::
 

	
 
    python setup.py extract_messages
 
    python2 setup.py extract_messages
 

	
 
Create new language by executing following command::
 

	
 
    python setup.py init_catalog -l <new_language_code>
 
    python2 setup.py init_catalog -l <new_language_code>
 

	
 
This creates a new translation under directory `kallithea/i18n/<new_language_code>`
 
based on the translation template file, `kallithea/i18n/kallithea.pot`.
 
@@ -67,7 +67,7 @@ translation file for errors by executing
 

	
 
Finally, compile the translations::
 

	
 
    python setup.py compile_catalog -l <new_language_code>
 
    python2 setup.py compile_catalog -l <new_language_code>
 

	
 

	
 
Updating translations
 
@@ -75,11 +75,11 @@ Updating translations
 

	
 
Extract the latest versions of strings for translation by running::
 

	
 
    python setup.py extract_messages
 
    python2 setup.py extract_messages
 

	
 
Update the PO file by doing::
 

	
 
    python setup.py update_catalog -l <new_language_code>
 
    python2 setup.py update_catalog -l <new_language_code>
 

	
 
Edit the new updated translation file. Repeat all steps after `init_catalog` step from
 
new translation instructions
kallithea/i18n/ru/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -1904,34 +1904,34 @@ msgid "Name must not contain only digits
 
msgstr ""
 

	
 
#: kallithea/model/notification.py:254
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%(user)s commented on changeset %(age)s"
 
msgstr "%(user)s оставил комментарий к набору изменений %(when)s"
 
msgstr "%(user)s оставил комментарий к набору изменений %(age)s"
 

	
 
#: kallithea/model/notification.py:255
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%(user)s sent message %(age)s"
 
msgstr "%(user)s отправил сообщение %(when)s"
 
msgstr "%(user)s отправил сообщение %(age)s"
 

	
 
#: kallithea/model/notification.py:256
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%(user)s mentioned you %(age)s"
 
msgstr "%(user)s упомянул вас %(when)s"
 
msgstr "%(user)s упомянул вас %(age)s"
 

	
 
#: kallithea/model/notification.py:257
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%(user)s registered in Kallithea %(age)s"
 
msgstr "%(user)s зарегистрировался в Kallithea %(when)s"
 
msgstr "%(user)s зарегистрировался в Kallithea %(age)s"
 

	
 
#: kallithea/model/notification.py:258
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%(user)s opened new pull request %(age)s"
 
msgstr "%(user)s открыл новый pull-запрос %(when)s"
 
msgstr "%(user)s открыл новый pull-запрос %(age)s"
 

	
 
#: kallithea/model/notification.py:259
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%(user)s commented on pull request %(age)s"
 
msgstr "%(user)s оставил комментарий к pull-запросу %(when)s"
 
msgstr "%(user)s оставил комментарий к pull-запросу %(age)s"
 

	
 
#: kallithea/model/notification.py:266
 
#, python-format
kallithea/lib/auth.py
Show inline comments
 
@@ -34,7 +34,7 @@ import collections
 

	
 
from decorator import decorator
 

	
 
from pylons import url, request
 
from pylons import url, request, session
 
from pylons.controllers.util import abort, redirect
 
from pylons.i18n.translation import _
 
from webhelpers.pylonslib import secure_form
 
@@ -712,11 +712,12 @@ def set_available_permissions(config):
 

	
 
def redirect_to_login(message=None):
 
    from kallithea.lib import helpers as h
 
    p = url.current()
 
    p = request.path_qs
 
    if message:
 
        h.flash(h.literal(message), category='warning')
 
    log.debug('Redirecting to login page, origin: %s', p)
 
    return redirect(url('login_home', came_from=p, **request.GET))
 
    return redirect(url('login_home', came_from=p))
 

	
 

	
 
class LoginRequired(object):
 
    """
 
@@ -765,6 +766,15 @@ class LoginRequired(object):
 
        if request.method not in ['GET', 'HEAD', 'POST', 'PUT']:
 
            return abort(405)
 

	
 
        # Make sure CSRF token never appears in the URL. If so, invalidate it.
 
        if secure_form.token_key in request.GET:
 
            log.error('CSRF key leak detected')
 
            session.pop(secure_form.token_key, None)
 
            session.save()
 
            from kallithea.lib import helpers as h
 
            h.flash(_("CSRF token leak has been detected - all form tokens have been expired"),
 
                    category='error')
 

	
 
        # CSRF protection: Whenever a request has ambient authority (whether
 
        # through a session cookie or its origin IP address), it must include
 
        # the correct token, unless the HTTP method is GET or HEAD (and thus
kallithea/lib/helpers.py
Show inline comments
 
@@ -36,12 +36,13 @@ from webhelpers.html.builder import make
 
from webhelpers.html.tags import auto_discovery_link, checkbox, css_classes, \
 
    end_form, file, hidden, image, javascript_link, link_to, \
 
    link_to_if, link_to_unless, ol, required_legend, select, stylesheet_link, \
 
    submit, text, password, textarea, title, ul, xml_declaration, radio
 
    submit, text, password, textarea, title, ul, xml_declaration, radio, \
 
    form as insecure_form
 
from webhelpers.html.tools import auto_link, button_to, highlight, \
 
    js_obfuscate, mail_to, strip_links, strip_tags, tag_re
 
from webhelpers.number import format_byte_size, format_bit_size
 
from webhelpers.pylonslib import Flash as _Flash
 
from webhelpers.pylonslib.secure_form import secure_form as form, authentication_token
 
from webhelpers.pylonslib.secure_form import secure_form, authentication_token
 
from webhelpers.text import chop_at, collapse, convert_accented_entities, \
 
    convert_misc_entities, lchop, plural, rchop, remove_formatting, \
 
    replace_whitespace, urlify, truncate, wrap_paragraphs
 
@@ -1451,3 +1452,13 @@ def ip_range(ip_addr):
 
    from kallithea.model.db import UserIpMap
 
    s, e = UserIpMap._get_ip_range(ip_addr)
 
    return '%s - %s' % (s, e)
 

	
 

	
 
def form(url, method="post", **attrs):
 
    """Like webhelpers.html.tags.form but automatically using secure_form with
 
    authentication_token for POST. authentication_token is thus never leaked
 
    in the URL."""
 
    if method.lower() == 'get':
 
        return insecure_form(url, method=method, **attrs)
 
    # webhelpers will turn everything but GET into POST
 
    return secure_form(url, method=method, **attrs)
kallithea/lib/rcmail/response.py
Show inline comments
 
@@ -138,7 +138,7 @@ class MailResponse(object):
 
    as __init__ parameters, or by setting those attributes.
 

	
 
    You can initially set the From, To, and Subject, but they are headers so
 
    use the dict notation to change them: msg['From'] = 'joe@test.com'.
 
    use the dict notation to change them: msg['From'] = 'joe@example.com'.
 

	
 
    The message is not fully crafted until right when you convert it with
 
    MailResponse.to_message.  This lets you change it and work with it, then
kallithea/lib/vcs/backends/git/repository.py
Show inline comments
 
@@ -675,10 +675,10 @@ class GitRepository(BaseRepository):
 
        try:
 
            update_server_info(self._repo)
 
        except OSError as e:
 
            if e.errno != errno.ENOENT:
 
            if e.errno not in [errno.ENOENT, errno.EROFS]:
 
                raise
 
            # Workaround for dulwich crashing on for example its own dulwich/tests/data/repos/simple_merge.git/info/refs.lock
 
            log.error('Ignoring error running update-server-info: %s', e)
 
            log.error('Ignoring %s running update-server-info: %s', type(e).__name__, e)
 

	
 
    @LazyProperty
 
    def workdir(self):
kallithea/model/comment.py
Show inline comments
 
@@ -100,7 +100,7 @@ class ChangesetCommentsModel(BaseModel):
 
            recipients += [cs_author]
 
            email_kwargs = {
 
                'status_change': status_change,
 
                'cs_comment_user': h.person(user, 'full_name_and_username'),
 
                'cs_comment_user': user.full_name_and_username,
 
                'cs_target_repo': h.canonical_url('summary_home', repo_name=repo.repo_name),
 
                'cs_comment_url': comment_url,
 
                'raw_id': revision,
 
@@ -148,7 +148,7 @@ class ChangesetCommentsModel(BaseModel):
 
                'status_change': status_change,
 
                'closing_pr': closing_pr,
 
                'pr_comment_url': comment_url,
 
                'pr_comment_user': h.person(user, 'full_name_and_username'),
 
                'pr_comment_user': user.full_name_and_username,
 
                'pr_target_repo': h.canonical_url('summary_home',
 
                                   repo_name=pull_request.other_repo.repo_name),
 
                'repo_name': pull_request.other_repo.repo_name,
kallithea/model/pull_request.py
Show inline comments
 
@@ -111,11 +111,11 @@ class PullRequestModel(BaseModel):
 

	
 
        mention_recipients = set(User.get_by_username(username, case_insensitive=True)
 
                                 for username in extract_mentioned_users(new.description))
 
        self.__add_reviewers(new, reviewers, mention_recipients)
 
        self.__add_reviewers(created_by_user, new, reviewers, mention_recipients)
 

	
 
        return new
 

	
 
    def __add_reviewers(self, pr, reviewers, mention_recipients=None):
 
    def __add_reviewers(self, user, pr, reviewers, mention_recipients=None):
 
        #members
 
        for member in set(reviewers):
 
            _usr = self._get_user(member)
 
@@ -135,7 +135,7 @@ class PullRequestModel(BaseModel):
 
        subject = safe_unicode(
 
            h.link_to(
 
              _('%(user)s wants you to review pull request %(pr_nice_id)s: %(pr_title)s') % \
 
                {'user': pr.owner.username,
 
                {'user': user.username,
 
                 'pr_title': pr.title,
 
                 'pr_nice_id': pr.nice_id()},
 
                pr_url)
 
@@ -144,19 +144,19 @@ class PullRequestModel(BaseModel):
 
        _org_ref_type, org_ref_name, _org_rev = pr.org_ref.split(':')
 
        email_kwargs = {
 
            'pr_title': pr.title,
 
            'pr_user_created': h.person(pr.owner),
 
            'pr_user_created': user.full_name_and_username,
 
            'pr_repo_url': h.canonical_url('summary_home', repo_name=pr.other_repo.repo_name),
 
            'pr_url': pr_url,
 
            'pr_revisions': revision_data,
 
            'repo_name': pr.other_repo.repo_name,
 
            'pr_nice_id': pr.nice_id(),
 
            'ref': org_ref_name,
 
            'pr_username': pr.owner.username,
 
            'pr_username': user.username,
 
            'threading': threading,
 
            'is_mention': False,
 
            }
 
        if reviewers:
 
            NotificationModel().create(created_by=pr.owner, subject=subject, body=body,
 
            NotificationModel().create(created_by=user, subject=subject, body=body,
 
                                       recipients=reviewers,
 
                                       type_=Notification.TYPE_PULL_REQUEST,
 
                                       email_kwargs=email_kwargs)
 
@@ -167,21 +167,21 @@ class PullRequestModel(BaseModel):
 
        if mention_recipients:
 
            email_kwargs['is_mention'] = True
 
            subject = _('[Mention]') + ' ' + subject
 
            NotificationModel().create(created_by=pr.owner, subject=subject, body=body,
 
            NotificationModel().create(created_by=user, subject=subject, body=body,
 
                                       recipients=mention_recipients,
 
                                       type_=Notification.TYPE_PULL_REQUEST,
 
                                       email_kwargs=email_kwargs)
 

	
 
    def mention_from_description(self, pr, old_description=''):
 
    def mention_from_description(self, user, pr, old_description=''):
 
        mention_recipients = set(User.get_by_username(username, case_insensitive=True)
 
                                 for username in extract_mentioned_users(pr.description))
 
        mention_recipients.difference_update(User.get_by_username(username, case_insensitive=True)
 
                                             for username in extract_mentioned_users(old_description))
 

	
 
        log.debug("Mentioning %s", mention_recipients)
 
        self.__add_reviewers(pr, [], mention_recipients)
 
        self.__add_reviewers(user, pr, [], mention_recipients)
 

	
 
    def update_reviewers(self, pull_request, reviewers_ids):
 
    def update_reviewers(self, user, pull_request, reviewers_ids):
 
        reviewers_ids = set(reviewers_ids)
 
        pull_request = self.__get_pull_request(pull_request)
 
        current_reviewers = PullRequestReviewers.query()\
 
@@ -194,7 +194,7 @@ class PullRequestModel(BaseModel):
 
        to_remove = current_reviewers_ids.difference(reviewers_ids)
 

	
 
        log.debug("Adding %s reviewers", to_add)
 
        self.__add_reviewers(pull_request, to_add)
 
        self.__add_reviewers(user, pull_request, to_add)
 

	
 
        log.debug("Removing %s reviewers", to_remove)
 
        for uid in to_remove:
kallithea/public/css/style.css
Show inline comments
 
@@ -4309,7 +4309,7 @@ form.comment-inline-form {
 
    background-color: #FAFAFA;
 
}
 

	
 
.inline-comments .add-comment {
 
.inline-comments .add-button-row {
 
    padding: 2px 4px 8px 5px;
 
}
 

	
 
@@ -4826,6 +4826,7 @@ div.comment:target:before {
 

	
 
div.comment:target>.comment-wrapp {
 
    border: solid 2px #ee0 !important;
 
    margin: 2px 2px 4px 4px;
 
}
 

	
 
.lineno:target a {
kallithea/public/js/base.js
Show inline comments
 
@@ -655,7 +655,7 @@ function _get_add_comment_div(target_id)
 
// set $comment_div state - showing or not showing form and Add button
 
function comment_div_state($comment_div, f_path, line_no, show_form) {
 
    var $forms = $comment_div.children('.comment-inline-form');
 
    var $buttons = $comment_div.children('.add-comment');
 
    var $buttonrow = $comment_div.children('.add-button-row');
 
    var $comments = $comment_div.children('.comment');
 
    if (show_form) {
 
        if (!$forms.length) {
 
@@ -664,7 +664,7 @@ function comment_div_state($comment_div,
 
    } else {
 
        $forms.remove();
 
    }
 
    $buttons.remove();
 
    $buttonrow.remove();
 
    if ($comments.length && !show_form) {
 
        _comment_div_append_add($comment_div, f_path, line_no);
 
    }
 
@@ -673,9 +673,9 @@ function comment_div_state($comment_div,
 
// append an Add button to $comment_div and hook it up to show form
 
function _comment_div_append_add($comment_div, f_path, line_no) {
 
    var addlabel = TRANSLATION_MAP['Add Another Comment'];
 
    var $add = $('<div class="add-comment"><span class="btn btn-mini">{0}</span></div>'.format(addlabel));
 
    var $add = $('<div class="add-button-row"><span class="btn btn-mini add-button">{0}</span></div>'.format(addlabel));
 
    $comment_div.append($add);
 
    $add.click(function(e) {
 
    $add.children('.add-button').click(function(e) {
 
        comment_div_state($comment_div, f_path, line_no, true);
 
    });
 
}
 
@@ -896,14 +896,14 @@ var fileBrowserListeners = function(curr
 
};
 

	
 

	
 
var initCodeMirror = function(textarea_id, resetUrl){
 
var initCodeMirror = function(textarea_id, baseUrl, resetUrl){
 
    var myCodeMirror = CodeMirror.fromTextArea($('#' + textarea_id)[0], {
 
            mode: "null",
 
            lineNumbers: true,
 
            indentUnit: 4,
 
            autofocus: true
 
        });
 
    CodeMirror.modeURL = "/codemirror/mode/%N/%N.js";
 
    CodeMirror.modeURL = baseUrl + "/codemirror/mode/%N/%N.js";
 

	
 
    $('#reset').click(function(e){
 
            window.location=resetUrl;
 
@@ -951,7 +951,7 @@ var _getIdentNode = function(n){
 
var getSelectionLink = function(e) {
 
    //get selection from start/to nodes
 
    if (typeof window.getSelection != "undefined") {
 
        s = window.getSelection();
 
        var s = window.getSelection();
 

	
 
        var from = _getIdentNode(s.anchorNode);
 
        var till = _getIdentNode(s.focusNode);
kallithea/public/js/codemirror_loadmode.js
Show inline comments
 
(function() {
 
  // FIXME: if this default value ever is used, it will probably be wrong
 
  if (!CodeMirror.modeURL) CodeMirror.modeURL = "../mode/%N/%N.js";
 

	
 
  var loading = {};
 
  function splitCallback(cont, n) {
 
    var countDown = n;
kallithea/templates/about.html
Show inline comments
 
@@ -62,6 +62,7 @@
 
  <li>Copyright &copy; 2015, Niemand Jedermann</li>
 
  <li>Copyright &copy; 2015, Peter Vitt</li>
 
  <li>Copyright &copy; 2015, Robert Martinez</li>
 
  <li>Copyright &copy; 2015, Robert Rauch</li>
 
  <li>Copyright &copy; 2015, Ronny Pfannschmidt</li>
 
  <li>Copyright &copy; 2015, Sam Jaques</li>
 
  <li>Copyright &copy; 2015, Søren Løvborg</li>
kallithea/templates/admin/gists/edit.html
Show inline comments
 
@@ -81,7 +81,7 @@
 

	
 
                ## dynamic edit box.
 
                <script type="text/javascript">
 
                var myCodeMirror = initCodeMirror("editor_${h.FID('f',file.path)}", '');
 
                var myCodeMirror = initCodeMirror("editor_${h.FID('f',file.path)}", "${request.script_name}", '');
 

	
 
                //inject new modes
 
                var $modes_select = $('#mimetype_${h.FID('f',file.path)}');
kallithea/templates/admin/gists/new.html
Show inline comments
 
@@ -59,7 +59,7 @@
 
            </div>
 
          ${h.end_form()}
 
          <script type="text/javascript">
 
            var myCodeMirror = initCodeMirror('editor', '');
 
            var myCodeMirror = initCodeMirror('editor', "${request.script_name}", '');
 

	
 
            //inject new modes
 
            var $modes_select = $('#mimetype');
kallithea/templates/admin/notifications/notifications_data.html
Show inline comments
 
@@ -32,7 +32,7 @@ unread = lambda n:{False:'unread'}.get(n
 

	
 
<div class="notification-paginator">
 
  <div class="pagination-wh pagination-left">
 
  ${c.notifications.pager('$link_previous ~2~ $link_next',**request.GET.mixed())}
 
  ${c.notifications.pager('$link_previous ~2~ $link_next',controller='admin/notifications',**request.GET.mixed())}
 
  </div>
 
</div>
 

	
kallithea/templates/base/base.html
Show inline comments
 
@@ -294,7 +294,7 @@
 
        <div id="quick_login">
 
          %if c.authuser.username == 'default' or c.authuser.user_id is None:
 
            <h4>${_('Login to Your Account')}</h4>
 
            ${h.form(h.url('login_home',came_from=h.url.current()))}
 
            ${h.form(h.url('login_home', came_from=request.path_qs))}
 
            <div class="form">
 
                <div class="fields">
 
                    <div class="field">
kallithea/templates/changelog/changelog.html
Show inline comments
 
@@ -110,7 +110,7 @@ ${self.repo_context_bar('changelog', c.f
 
                            </a>
 
                        </td>
 
                        <td class="date">
 
                            <div class="date">${h.age(cs.date,True)}</div>
 
                            <div class="date tooltip" title="${h.fmt_date(cs.date)}">${h.age(cs.date,True)}</div>
 
                        </td>
 
                        <td class="expand_commit" commit_id="${cs.raw_id}" title="${_('Expand commit message')}">
 
                            <i class="icon-align-left" style="color:#999"></i>
kallithea/templates/changeset/changeset_file_comment.html
Show inline comments
 
@@ -87,7 +87,7 @@
 
      ${h.form('')}
 
      <div class="clearfix">
 
          <div class="comment-help">
 
            ${_('You need to be logged in to comment.')} <a href="${h.url('login_home',came_from=h.url.current())}">${_('Login now')}</a>
 
            ${_('You need to be logged in to comment.')} <a href="${h.url('login_home', came_from=request.path_qs)}">${_('Login now')}</a>
 
          </div>
 
      </div>
 
      <div class="comment-button">
kallithea/templates/files/files_add.html
Show inline comments
 
@@ -67,7 +67,7 @@ ${self.repo_context_bar('files')}
 
            ${h.end_form()}
 
            <script type="text/javascript">
 
            var reset_url = "${h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path)}";
 
            var myCodeMirror = initCodeMirror('editor',reset_url);
 
            var myCodeMirror = initCodeMirror('editor', "${request.script_name}", reset_url);
 

	
 
            //inject new modes, based on codeMirrors modeInfo object
 
            $('#set_mode').each(function(){
kallithea/templates/files/files_edit.html
Show inline comments
 
@@ -75,7 +75,7 @@ ${self.repo_context_bar('files')}
 
<script type="text/javascript">
 
$(document).ready(function(){
 
    var reset_url = "${h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.file.path)}";
 
    var myCodeMirror = initCodeMirror('editor',reset_url);
 
    var myCodeMirror = initCodeMirror('editor', "${request.script_name}", reset_url);
 

	
 
   //inject new modes, based on codeMirrors modeInfo object
 
    $('#set_mode').each(function(){
kallithea/templates/login.html
Show inline comments
 
@@ -16,7 +16,7 @@
 
        %endif
 
    </div>
 
    <div class="panel-body inner">
 
        ${h.form(h.url.current(**request.GET))}
 
        ${h.form(url('login_home', came_from=c.came_from))}
 
        <div class="form">
 
            <i class="icon-lock"></i>
 
            <!-- fields -->
kallithea/tests/__init__.py
Show inline comments
 
@@ -90,15 +90,15 @@ environ = {}
 
TESTS_TMP_PATH = jn('/', 'tmp', 'rc_test_%s' % _RandomNameSequence().next())
 
TEST_USER_ADMIN_LOGIN = 'test_admin'
 
TEST_USER_ADMIN_PASS = 'test12'
 
TEST_USER_ADMIN_EMAIL = 'test_admin@mail.com'
 
TEST_USER_ADMIN_EMAIL = 'test_admin@example.com'
 

	
 
TEST_USER_REGULAR_LOGIN = 'test_regular'
 
TEST_USER_REGULAR_PASS = 'test12'
 
TEST_USER_REGULAR_EMAIL = 'test_regular@mail.com'
 
TEST_USER_REGULAR_EMAIL = 'test_regular@example.com'
 

	
 
TEST_USER_REGULAR2_LOGIN = 'test_regular2'
 
TEST_USER_REGULAR2_PASS = 'test12'
 
TEST_USER_REGULAR2_EMAIL = 'test_regular2@mail.com'
 
TEST_USER_REGULAR2_EMAIL = 'test_regular2@example.com'
 

	
 
HG_REPO = 'vcs_test_hg'
 
GIT_REPO = 'vcs_test_git'
kallithea/tests/api/api_base.py
Show inline comments
 
@@ -552,7 +552,7 @@ class _BaseTestApi(object):
 
    def test_api_create_existing_user(self):
 
        id_, params = _build_data(self.apikey, 'create_user',
 
                                  username=TEST_USER_ADMIN_LOGIN,
 
                                  email='test@foo.com',
 
                                  email='test@example.com',
 
                                  password='trololo')
 
        response = api_call(self, params)
 

	
 
@@ -571,7 +571,7 @@ class _BaseTestApi(object):
 

	
 
    def test_api_create_user(self):
 
        username = 'test_new_api_user'
 
        email = username + "@foo.com"
 
        email = username + "@example.com"
 

	
 
        id_, params = _build_data(self.apikey, 'create_user',
 
                                  username=username,
 
@@ -593,7 +593,7 @@ class _BaseTestApi(object):
 

	
 
    def test_api_create_user_without_password(self):
 
        username = 'test_new_api_user_passwordless'
 
        email = username + "@foo.com"
 
        email = username + "@example.com"
 

	
 
        id_, params = _build_data(self.apikey, 'create_user',
 
                                  username=username,
 
@@ -613,7 +613,7 @@ class _BaseTestApi(object):
 

	
 
    def test_api_create_user_with_extern_name(self):
 
        username = 'test_new_api_user_passwordless'
 
        email = username + "@foo.com"
 
        email = username + "@example.com"
 

	
 
        id_, params = _build_data(self.apikey, 'create_user',
 
                                  username=username,
 
@@ -635,7 +635,7 @@ class _BaseTestApi(object):
 
    def test_api_create_user_when_exception_happened(self):
 

	
 
        username = 'test_new_api_user'
 
        email = username + "@foo.com"
 
        email = username + "@example.com"
 

	
 
        id_, params = _build_data(self.apikey, 'create_user',
 
                                  username=username,
 
@@ -1138,7 +1138,7 @@ class _BaseTestApi(object):
 
        ('description', {'description': 'new description'}),
 
        ('active', {'active': True}),
 
        ('active', {'active': False}),
 
        ('clone_uri', {'clone_uri': 'http://foo.com/repo'}),
 
        ('clone_uri', {'clone_uri': 'http://example.com/repo'}),
 
        ('clone_uri', {'clone_uri': None}),
 
        ('landing_rev', {'landing_rev': 'branch:master'}),
 
        ('enable_statistics', {'enable_statistics': True}),
kallithea/tests/functional/test_admin_users.py
Show inline comments
 
@@ -47,7 +47,7 @@ class TestAdminUsersController(TestContr
 
        password_confirmation = password
 
        name = 'name'
 
        lastname = 'lastname'
 
        email = 'mail@mail.com'
 
        email = 'mail@example.com'
 

	
 
        response = self.app.post(url('users'),
 
            {'username': username,
 
@@ -83,7 +83,7 @@ class TestAdminUsersController(TestContr
 
        password = ''
 
        name = 'name'
 
        lastname = 'lastname'
 
        email = 'errmail.com'
 
        email = 'errmail.example.com'
 

	
 
        response = self.app.post(url('users'), {'username': username,
 
                                               'password': password,
 
@@ -119,7 +119,7 @@ class TestAdminUsersController(TestContr
 
         ('extern_name', {'extern_name': None}),
 
         ('active', {'active': False}),
 
         ('active', {'active': True}),
 
         ('email', {'email': 'some@email.com'}),
 
         ('email', {'email': 'someemail@example.com'}),
 
        # ('new_password', {'new_password': 'foobar123',
 
        #                   'password_confirmation': 'foobar123'})
 
        ])
kallithea/tests/functional/test_files.py
Show inline comments
 
@@ -97,7 +97,7 @@ class TestFilesController(TestController
 
                                    revision='8911406ad776fdd3d0b9932a2e89677e57405a48',
 
                                    f_path='vcs/nodes.py'))
 

	
 
        response.mustcontain("""<div class="commit">Partially implemented <a class="issue-tracker-link" href="https://myissueserver.com/vcs_test_hg/issue/16">#16</a>. filecontent/commit message/author/node name are safe_unicode now.
 
        response.mustcontain("""<div class="commit">Partially implemented <a class="issue-tracker-link" href="https://issues.example.com/vcs_test_hg/issue/16">#16</a>. filecontent/commit message/author/node name are safe_unicode now.
 
In addition some other __str__ are unicode as well
 
Added test for unicode
 
Improved test to clone into uniq repository.
kallithea/tests/functional/test_login.py
Show inline comments
 
# -*- coding: utf-8 -*-
 
import re
 
import time
 
import urlparse
 

	
 
import mock
 

	
 
@@ -103,20 +104,19 @@ class TestLoginController(TestController
 
          ('data:text/html,<script>window.alert("xss")</script>',),
 
          ('mailto:test@example.com',),
 
          ('file:///etc/passwd',),
 
          ('ftp://some.ftp.server',),
 
          ('http://other.domain/bl%C3%A5b%C3%A6rgr%C3%B8d',),
 
          ('ftp://ftp.example.com',),
 
          ('http://other.example.com/bl%C3%A5b%C3%A6rgr%C3%B8d',),
 
          ('//evil.example.com/',),
 
          ('/\r\nX-Header-Injection: boo',),
 
          ('/invälid_url_bytes',),
 
          ('non-absolute-path',),
 
    ])
 
    def test_login_bad_came_froms(self, url_came_from):
 
        response = self.app.post(url(controller='login', action='index',
 
                                     came_from=url_came_from),
 
                                 {'username': TEST_USER_ADMIN_LOGIN,
 
                                  'password': TEST_USER_ADMIN_PASS})
 
        self.assertEqual(response.status, '302 Found')
 
        self.assertEqual(response._environ['paste.testing_variables']
 
                         ['tmpl_context'].came_from, '/')
 
        response = response.follow()
 

	
 
        self.assertEqual(response.status, '200 OK')
 
                                  'password': TEST_USER_ADMIN_PASS},
 
                                 status=400)
 

	
 
    def test_login_short_password(self):
 
        response = self.app.post(url(controller='login', action='index'),
 
@@ -136,9 +136,9 @@ class TestLoginController(TestController
 
    # verify that get arguments are correctly passed along login redirection
 

	
 
    @parameterized.expand([
 
        ({'foo':'one', 'bar':'two'}, ('foo=one', 'bar=two')),
 
        ({'foo':'one', 'bar':'two'}, (('foo', 'one'), ('bar', 'two'))),
 
        ({'blue': u'blå'.encode('utf-8'), 'green':u'grøn'},
 
             ('blue=bl%C3%A5', 'green=gr%C3%B8n')),
 
             (('blue', u'blå'.encode('utf-8')), ('green', u'grøn'.encode('utf-8')))),
 
    ])
 
    def test_redirection_to_login_form_preserves_get_args(self, args, args_encoded):
 
        with fixture.anon_access(False):
 
@@ -146,30 +146,31 @@ class TestLoginController(TestController
 
                                        repo_name=HG_REPO,
 
                                        **args))
 
            self.assertEqual(response.status, '302 Found')
 
            came_from = urlparse.parse_qs(urlparse.urlparse(response.location).query)['came_from'][0]
 
            came_from_qs = urlparse.parse_qsl(urlparse.urlparse(came_from).query)
 
            for encoded in args_encoded:
 
                self.assertIn(encoded, response.location)
 
                self.assertIn(encoded, came_from_qs)
 

	
 
    @parameterized.expand([
 
        ({'foo':'one', 'bar':'two'}, ('foo=one', 'bar=two')),
 
        ({'blue': u'blå'.encode('utf-8'), 'green':u'grøn'},
 
        ({'blue': u'blå', 'green':u'grøn'},
 
             ('blue=bl%C3%A5', 'green=gr%C3%B8n')),
 
    ])
 
    def test_login_form_preserves_get_args(self, args, args_encoded):
 
        response = self.app.get(url(controller='login', action='index',
 
                                    came_from = '/_admin/users',
 
                                    **args))
 
                                    came_from=url('/_admin/users', **args)))
 
        came_from = urlparse.parse_qs(urlparse.urlparse(response.form.action).query)['came_from'][0]
 
        for encoded in args_encoded:
 
            self.assertIn(encoded, response.form.action)
 
            self.assertIn(encoded, came_from)
 

	
 
    @parameterized.expand([
 
        ({'foo':'one', 'bar':'two'}, ('foo=one', 'bar=two')),
 
        ({'blue': u'blå'.encode('utf-8'), 'green':u'grøn'},
 
        ({'blue': u'blå', 'green':u'grøn'},
 
             ('blue=bl%C3%A5', 'green=gr%C3%B8n')),
 
    ])
 
    def test_redirection_after_successful_login_preserves_get_args(self, args, args_encoded):
 
        response = self.app.post(url(controller='login', action='index',
 
                                     came_from = '/_admin/users',
 
                                     **args),
 
                                     came_from = url('/_admin/users', **args)),
 
                                 {'username': TEST_USER_ADMIN_LOGIN,
 
                                  'password': TEST_USER_ADMIN_PASS})
 
        self.assertEqual(response.status, '302 Found')
 
@@ -178,19 +179,19 @@ class TestLoginController(TestController
 

	
 
    @parameterized.expand([
 
        ({'foo':'one', 'bar':'two'}, ('foo=one', 'bar=two')),
 
        ({'blue': u'blå'.encode('utf-8'), 'green':u'grøn'},
 
        ({'blue': u'blå', 'green':u'grøn'},
 
             ('blue=bl%C3%A5', 'green=gr%C3%B8n')),
 
    ])
 
    def test_login_form_after_incorrect_login_preserves_get_args(self, args, args_encoded):
 
        response = self.app.post(url(controller='login', action='index',
 
                                     came_from = '/_admin/users',
 
                                     **args),
 
                                     came_from=url('/_admin/users', **args)),
 
                                 {'username': 'error',
 
                                  'password': 'test12'})
 

	
 
        response.mustcontain('Invalid username or password')
 
        came_from = urlparse.parse_qs(urlparse.urlparse(response.form.action).query)['came_from'][0]
 
        for encoded in args_encoded:
 
            self.assertIn(encoded, response.form.action)
 
            self.assertIn(encoded, came_from)
 

	
 
    #==========================================================================
 
    # REGISTRATIONS
 
@@ -205,7 +206,7 @@ class TestLoginController(TestController
 
                                            {'username': uname,
 
                                             'password': 'test12',
 
                                             'password_confirmation': 'test12',
 
                                             'email': 'goodmail@domain.com',
 
                                             'email': 'goodmail@example.com',
 
                                             'firstname': 'test',
 
                                             'lastname': 'test'})
 

	
 
@@ -304,7 +305,7 @@ class TestLoginController(TestController
 
    def test_register_ok(self):
 
        username = 'test_regular4'
 
        password = 'qweqwe'
 
        email = 'username@test.com'
 
        email = 'user4@example.com'
 
        name = 'testname'
 
        lastname = 'testlastname'
 

	
 
@@ -348,7 +349,7 @@ class TestLoginController(TestController
 

	
 
        username = 'test_password_reset_1'
 
        password = 'qweqwe'
 
        email = 'username@python-works.com'
 
        email = 'username@example.com'
 
        name = 'passwd'
 
        lastname = 'reset'
 
        timestamp = int(time.time())
kallithea/tests/functional/test_my_account.py
Show inline comments
 
@@ -67,16 +67,16 @@ class TestMyAccountController(TestContro
 
        response.mustcontain('No additional emails specified')
 

	
 
        response = self.app.post(url('my_account_emails'),
 
                                 {'new_email': 'foo@barz.com', '_authentication_token': self.authentication_token()})
 
                                 {'new_email': 'barz@example.com', '_authentication_token': self.authentication_token()})
 

	
 
        response = self.app.get(url('my_account_emails'))
 

	
 
        from kallithea.model.db import UserEmailMap
 
        email_id = UserEmailMap.query()\
 
            .filter(UserEmailMap.user == User.get_by_username(TEST_USER_ADMIN_LOGIN))\
 
            .filter(UserEmailMap.email == 'foo@barz.com').one().email_id
 
            .filter(UserEmailMap.email == 'barz@example.com').one().email_id
 

	
 
        response.mustcontain('foo@barz.com')
 
        response.mustcontain('barz@example.com')
 
        response.mustcontain('<input id="del_email_id" name="del_email_id" type="hidden" value="%s" />' % email_id)
 

	
 
        response = self.app.post(url('my_account_emails'),
 
@@ -97,7 +97,7 @@ class TestMyAccountController(TestContro
 
         #('extern_name', {'extern_name': None}),
 
         ('active', {'active': False}),
 
         ('active', {'active': True}),
 
         ('email', {'email': 'some@email.com'}),
 
         ('email', {'email': 'someemail@example.com'}),
 
        # ('new_password', {'new_password': 'foobar123',
 
        #                   'password_confirmation': 'foobar123'})
 
        ])
kallithea/tests/other/manual_test_vcs_operations.py
Show inline comments
 
@@ -112,13 +112,13 @@ def _add_files_and_push(vcs, DEST, **kwa
 
    for i in xrange(kwargs.get('files_no', 3)):
 
        cmd = """echo 'added_line%s' >> %s""" % (i, added_file)
 
        Command(cwd).execute(cmd)
 
        author_str = 'User ǝɯɐᴎ <me@email.com>'
 
        author_str = 'User ǝɯɐᴎ <me@example.com>'
 
        if vcs == 'hg':
 
            cmd = """hg commit -m 'commited new %s' -u '%s' %s """ % (
 
                i, author_str, added_file
 
            )
 
        elif vcs == 'git':
 
            cmd = """EMAIL="me@email.com" git commit -m 'commited new %s' --author '%s' %s """ % (
 
            cmd = """EMAIL="me@example.com" git commit -m 'commited new %s' --author '%s' %s """ % (
 
                i, author_str, added_file
 
            )
 
        Command(cwd).execute(cmd)
kallithea/tests/other/test_libs.py
Show inline comments
 
@@ -42,11 +42,11 @@ TEST_URLS = [
 
     '%s://127.0.0.1' % proto),
 
    ('%s://127.0.0.1:8080' % proto, ['%s://' % proto, '127.0.0.1', '8080'],
 
     '%s://127.0.0.1:8080' % proto),
 
    ('%s://domain.org' % proto, ['%s://' % proto, 'domain.org'],
 
     '%s://domain.org' % proto),
 
    ('%s://user:pass@domain.org:8080' % proto, ['%s://' % proto, 'domain.org',
 
    ('%s://example.com' % proto, ['%s://' % proto, 'example.com'],
 
     '%s://example.com' % proto),
 
    ('%s://user:pass@example.com:8080' % proto, ['%s://' % proto, 'example.com',
 
                                                '8080'],
 
     '%s://domain.org:8080' % proto),
 
     '%s://example.com:8080' % proto),
 
]
 

	
 
proto = 'https'
 
@@ -59,11 +59,11 @@ TEST_URLS += [
 
     '%s://127.0.0.1' % proto),
 
    ('%s://127.0.0.1:8080' % proto, ['%s://' % proto, '127.0.0.1', '8080'],
 
     '%s://127.0.0.1:8080' % proto),
 
    ('%s://domain.org' % proto, ['%s://' % proto, 'domain.org'],
 
     '%s://domain.org' % proto),
 
    ('%s://user:pass@domain.org:8080' % proto, ['%s://' % proto, 'domain.org',
 
    ('%s://example.com' % proto, ['%s://' % proto, 'example.com'],
 
     '%s://example.com' % proto),
 
    ('%s://user:pass@example.com:8080' % proto, ['%s://' % proto, 'example.com',
 
                                                '8080'],
 
     '%s://domain.org:8080' % proto),
 
     '%s://example.com:8080' % proto),
 
]
 

	
 

	
 
@@ -104,11 +104,11 @@ class TestLibs(BaseTestCase):
 
    def test_mention_extractor(self):
 
        from kallithea.lib.utils2 import extract_mentioned_users
 
        sample = (
 
            "@first hi there @world here's my email username@email.com "
 
            "@first hi there @world here's my email username@example.com "
 
            "@lukaszb check @one_more22 it pls @ ttwelve @D[] @one@two@three "
 
            "@UPPER    @cAmEL @2one_more22 @john please see this http://org.pl "
 
            "@marian.user just do it @marco-polo and next extract @marco_polo "
 
            "user.dot  hej ! not-needed maril@domain.org"
 
            "user.dot  hej ! not-needed maril@example.com"
 
        )
 

	
 
        s = sorted([
 
@@ -184,7 +184,7 @@ class TestLibs(BaseTestCase):
 
    def test_tag_exctrator(self):
 
        sample = (
 
            "hello pta[tag] gog [[]] [[] sda ero[or]d [me =>>< sa]"
 
            "[requires] [stale] [see<>=>] [see => http://url.com]"
 
            "[requires] [stale] [see<>=>] [see => http://example.com]"
 
            "[requires => url] [lang => python] [just a tag]"
 
            "[,d] [ => ULR ] [obsolete] [desc]]"
 
        )
 
@@ -205,7 +205,7 @@ class TestLibs(BaseTestCase):
 
        class fake_url(object):
 
            @classmethod
 
            def current(cls, *args, **kwargs):
 
                return 'https://server.com'
 
                return 'https://example.com'
 

	
 
        #mock pylons.tmpl_context
 
        def fake_tmpl_context(_url):
 
@@ -218,35 +218,35 @@ class TestLibs(BaseTestCase):
 

	
 

	
 
        with mock.patch('pylons.url', fake_url):
 
            fake = fake_tmpl_context(_url='http://test.com/{email}')
 
            fake = fake_tmpl_context(_url='http://example.com/{email}')
 
            with mock.patch('pylons.tmpl_context', fake):
 
                    from pylons import url
 
                    assert url.current() == 'https://server.com'
 
                    grav = gravatar_url(email_address='test@foo.com', size=24)
 
                    assert grav == 'http://test.com/test@foo.com'
 
                    assert url.current() == 'https://example.com'
 
                    grav = gravatar_url(email_address='test@example.com', size=24)
 
                    assert grav == 'http://example.com/test@example.com'
 

	
 
            fake = fake_tmpl_context(_url='http://test.com/{email}')
 
            fake = fake_tmpl_context(_url='http://example.com/{email}')
 
            with mock.patch('pylons.tmpl_context', fake):
 
                grav = gravatar_url(email_address='test@foo.com', size=24)
 
                assert grav == 'http://test.com/test@foo.com'
 
                grav = gravatar_url(email_address='test@example.com', size=24)
 
                assert grav == 'http://example.com/test@example.com'
 

	
 
            fake = fake_tmpl_context(_url='http://test.com/{md5email}')
 
            fake = fake_tmpl_context(_url='http://example.com/{md5email}')
 
            with mock.patch('pylons.tmpl_context', fake):
 
                em = 'test@foo.com'
 
                em = 'test@example.com'
 
                grav = gravatar_url(email_address=em, size=24)
 
                assert grav == 'http://test.com/%s' % (_md5(em))
 
                assert grav == 'http://example.com/%s' % (_md5(em))
 

	
 
            fake = fake_tmpl_context(_url='http://test.com/{md5email}/{size}')
 
            fake = fake_tmpl_context(_url='http://example.com/{md5email}/{size}')
 
            with mock.patch('pylons.tmpl_context', fake):
 
                em = 'test@foo.com'
 
                em = 'test@example.com'
 
                grav = gravatar_url(email_address=em, size=24)
 
                assert grav == 'http://test.com/%s/%s' % (_md5(em), 24)
 
                assert grav == 'http://example.com/%s/%s' % (_md5(em), 24)
 

	
 
            fake = fake_tmpl_context(_url='{scheme}://{netloc}/{md5email}/{size}')
 
            with mock.patch('pylons.tmpl_context', fake):
 
                em = 'test@foo.com'
 
                em = 'test@example.com'
 
                grav = gravatar_url(email_address=em, size=24)
 
                assert grav == 'https://server.com/%s/%s' % (_md5(em), 24)
 
                assert grav == 'https://example.com/%s/%s' % (_md5(em), 24)
 

	
 
    @parameterized.expand([
 
        (Repository.DEFAULT_CLONE_URI, 'group/repo1', {}, '', 'http://vps1:8000/group/repo1'),
 
@@ -260,9 +260,9 @@ class TestLibs(BaseTestCase):
 
        ('{scheme}://{user}@{netloc}/_{repoid}', 'group/repo1', {'user': 'username'}, '', 'http://username@vps1:8000/_23'),
 
        ('http://{user}@{netloc}/_{repoid}', 'group/repo1', {'user': 'username'}, '', 'http://username@vps1:8000/_23'),
 
        ('http://{netloc}/_{repoid}', 'group/repo1', {'user': 'username'}, '', 'http://vps1:8000/_23'),
 
        ('https://{user}@proxy1.server.com/{repo}', 'group/repo1', {'user': 'username'}, '', 'https://username@proxy1.server.com/group/repo1'),
 
        ('https://{user}@proxy1.server.com/{repo}', 'group/repo1', {}, '', 'https://proxy1.server.com/group/repo1'),
 
        ('https://proxy1.server.com/{user}/{repo}', 'group/repo1', {'user': 'username'}, '', 'https://proxy1.server.com/username/group/repo1'),
 
        ('https://{user}@proxy1.example.com/{repo}', 'group/repo1', {'user': 'username'}, '', 'https://username@proxy1.example.com/group/repo1'),
 
        ('https://{user}@proxy1.example.com/{repo}', 'group/repo1', {}, '', 'https://proxy1.example.com/group/repo1'),
 
        ('https://proxy1.example.com/{user}/{repo}', 'group/repo1', {'user': 'username'}, '', 'https://proxy1.example.com/username/group/repo1'),
 
    ])
 
    def test_clone_url_generator(self, tmpl, repo_name, overrides, prefix, expected):
 
        from kallithea.lib.utils2 import get_clone_url
 
@@ -337,12 +337,12 @@ class TestLibs(BaseTestCase):
 
       "from rev a also rev url[http://google.com]",
 
       "http://google.com"),
 
       ("""Multi line
 
       https://foo.bar.com
 
       https://foo.bar.example.com
 
       some text lalala""",
 
       """Multi line
 
       url[https://foo.bar.com]
 
       url[https://foo.bar.example.com]
 
       some text lalala""",
 
       "https://foo.bar.com")
 
       "https://foo.bar.example.com")
 
    ])
 
    def test_urlify_test(self, sample, expected, url_):
 
        from kallithea.lib.helpers import urlify_text
kallithea/tests/scripts/manual_test_concurrency.py
Show inline comments
 
@@ -107,7 +107,7 @@ def create_test_user(force=True):
 
        new_usr = User()
 
        new_usr.username = USER
 
        new_usr.password = get_crypt_password(PASS)
 
        new_usr.email = 'mail@mail.com'
 
        new_usr.email = 'mail@example.com'
 
        new_usr.name = 'test'
 
        new_usr.lastname = 'lasttestname'
 
        new_usr.active = True
kallithea/tests/test.ini
Show inline comments
 
@@ -56,7 +56,7 @@ pdebug = false
 
## SMTP server settings
 
## Only smtp_server is mandatory. All other settings take the specified default
 
## values.
 
#smtp_server = mail.server.com
 
#smtp_server = smtp.example.com
 
#smtp_username =
 
#smtp_password =
 
#smtp_port = 25
 
@@ -228,8 +228,8 @@ show_revision_number = true
 

	
 
## gist URL alias, used to create nicer urls for gist. This should be an
 
## url that does rewrites to _admin/gists/<gistid>.
 
## example: http://gist.kallithea.server/{gistid}. Empty means use the internal
 
## Kallithea url, ie. http[s]://your.kallithea.server/_admin/gists/<gistid>
 
## example: http://gist.example.com/{gistid}. Empty means use the internal
 
## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid>
 
gist_alias_url =
 

	
 
## white list of API enabled controllers. This allows to add list of
 
@@ -264,7 +264,7 @@ issue_pat = (?:\s*#)(\d+)
 
## fetched from the regex and {repo} is replaced with full repository name
 
## including groups {repo_name} is replaced with just name of repo
 

	
 
issue_server_link = https://myissueserver.com/{repo}/issue/{id}
 
issue_server_link = https://issues.example.com/{repo}/issue/{id}
 

	
 
## prefix to add to link to indicate it's an url
 
## #314 will be replaced by <issue_prefix><id>
 
@@ -274,10 +274,10 @@ issue_prefix = #
 
## issue_pat, issue_server_link, issue_prefix can have suffixes to specify
 
## multiple patterns, to other issues server, wiki or others
 
## below an example how to create a wiki pattern
 
# wiki-some-id -> https://mywiki.com/some-id
 
# wiki-some-id -> https://wiki.example.com/some-id
 

	
 
#issue_pat_wiki = (?:wiki-)(.+)
 
#issue_server_link_wiki = https://mywiki.com/{id}
 
#issue_server_link_wiki = https://wiki.example.com/{id}
 
#issue_prefix_wiki = WIKI-
 

	
 
## instance-id prefix
kallithea/tests/vcs/test_utils.py
Show inline comments
 
@@ -184,26 +184,26 @@ class TestParseDatetime(unittest.TestCas
 

	
 

	
 
class TestAuthorExtractors(unittest.TestCase):
 
    TEST_AUTHORS = [("Username Last'o'Name <username@python-works.com>",
 
                    ("Username Last'o'Name", "username@python-works.com")),
 
                  ("Username Last'o'Name Spaces < username@python-works.com >",
 
                    ("Username Last'o'Name Spaces", "username@python-works.com")),
 
                  ("Username Last'o'Name <username.lastname@python-works.com>",
 
                    ("Username Last'o'Name", "username.lastname@python-works.com")),
 
                  ('mrf RFC_SPEC <username+lastname@python-works.com>',
 
                    ('mrf RFC_SPEC', 'username+lastname@python-works.com')),
 
                  ('username <user@email.com>',
 
                    ('username', 'user@email.com')),
 
                  ('username <user@email.com',
 
                   ('username', 'user@email.com')),
 
                  ('broken missing@email.com',
 
                   ('broken', 'missing@email.com')),
 
                  ('<justemail@mail.com>',
 
                   ('', 'justemail@mail.com')),
 
    TEST_AUTHORS = [("Username Last'o'Name <username@example.com>",
 
                    ("Username Last'o'Name", "username@example.com")),
 
                  ("Username Last'o'Name Spaces < username@example.com >",
 
                    ("Username Last'o'Name Spaces", "username@example.com")),
 
                  ("Username Last'o'Name <username.lastname@example.com>",
 
                    ("Username Last'o'Name", "username.lastname@example.com")),
 
                  ('mrf RFC_SPEC <username+lastname@example.com>',
 
                    ('mrf RFC_SPEC', 'username+lastname@example.com')),
 
                  ('username <user@example.com>',
 
                    ('username', 'user@example.com')),
 
                  ('username <user@example.com',
 
                   ('username', 'user@example.com')),
 
                  ('broken missing@example.com',
 
                   ('broken', 'missing@example.com')),
 
                  ('<justemail@example.com>',
 
                   ('', 'justemail@example.com')),
 
                  ('justname',
 
                   ('justname', '')),
 
                  ('Mr Double Name withemail@email.com ',
 
                   ('Mr Double Name', 'withemail@email.com')),
 
                  ('Mr Double Name withemail@example.com ',
 
                   ('Mr Double Name', 'withemail@example.com')),
 
                  ]
 

	
 
    def test_author_email(self):
scripts/make-release
Show inline comments
 
new file 100755
 
#!/bin/bash
 
set -e
 
set -x
 

	
 
echo "Checking tools needed for uploading stuff"
 
pip freeze | grep '^Sphinx==' || pip install Sphinx
 
pip freeze | grep '^Sphinx-PyPI-upload==' || pip install Sphinx-PyPI-upload
 

	
 
echo "Verifying everything can build"
 
hg purge --all dist
 
python2 setup.py build_sphinx
 
python2 setup.py compile_catalog # TODO: check for errors
 
python2 setup.py sdist
 

	
 
echo "Verifying VERSION from kallithea/__init__.py"
 
namerel=$(cd dist && echo Kallithea-*.tar.gz)
 
namerel=${namerel%.tar.gz}
 
version=${namerel#Kallithea-}
 
echo "Releasing Kallithea $version in directory $namerel"
 
echo "Verifying current revision is tagged for $version"
 
hg log -r "'$version'&." | grep .
 

	
 
echo "Cleaning before making release build"
 
hg up -c .
 
hg revert -a -r null
 
hg up -C "'$version'&."
 
hg purge --all
 

	
 
echo "Building dist file"
 
python2 setup.py compile_catalog
 
python2 setup.py sdist
 

	
 
echo "Verifying dist file content"
 
tar tf dist/Kallithea-*.tar.gz | sed "s|^$namerel/||" | LANG=C sort > scripts/manifest
 
hg diff
 
hg up -c . # fail if manifest changed
 

	
 
echo "Now, make sure"
 
echo "* the copyright and contributor lists have been updated"
 
echo "* all tests are passing"
 
echo "* release note is ready"
 
echo "* announcement is ready"
 
echo "* source has been pushed to https://kallithea-scm.org/repos/kallithea"
 
echo
 

	
 
echo -n "Enter \"pypi\" to upload Kallithea $version to pypi: "
 
read answer
 
[ "$answer" = "pypi" ]
 
extraargs=${EMAIL:+--identity=$EMAIL}
 
python2 setup.py sdist upload --sign $extraargs
 
xdg-open https://pypi.python.org/pypi/Kallithea
 

	
 
echo "Uploading docs to pypi"
 
# See https://wiki.python.org/moin/PyPiDocumentationHosting
 
python2 setup.py build_sphinx upload_sphinx
 
xdg-open https://pythonhosted.org/Kallithea/
 
xdg-open http://packages.python.org/Kallithea/installation.html
 

	
 
echo "Rebuilding readthedocs for docs.kallithea-scm.org"
 
xdg-open https://readthedocs.org/projects/kallithea/
 
curl -X POST http://readthedocs.org/build/kallithea
 
xdg-open https://readthedocs.org/builds/kallithea/
 
xdg-open http://docs.kallithea-scm.org/en/latest/ # or whatever the branch is
scripts/manifest
Show inline comments
 
new file 100644
 

	
 
Apache-License-2.0.txt
 
CONTRIBUTORS
 
COPYING
 
Kallithea.egg-info/
 
Kallithea.egg-info/PKG-INFO
 
Kallithea.egg-info/SOURCES.txt
 
Kallithea.egg-info/dependency_links.txt
 
Kallithea.egg-info/entry_points.txt
 
Kallithea.egg-info/not-zip-safe
 
Kallithea.egg-info/paster_plugins.txt
 
Kallithea.egg-info/requires.txt
 
Kallithea.egg-info/top_level.txt
 
LICENSE-MERGELY.html
 
LICENSE.md
 
MANIFEST.in
 
MIT-Permissive-License.txt
 
PKG-INFO
 
README.rst
 
development.ini
 
docs/
 
docs/Makefile
 
docs/api/
 
docs/api/api.rst
 
docs/api/models.rst
 
docs/changelog.rst
 
docs/conf.py
 
docs/contributing.rst
 
docs/images/
 
docs/images/.img
 
docs/index.rst
 
docs/installation.rst
 
docs/installation_iis.rst
 
docs/installation_puppet.rst
 
docs/installation_win.rst
 
docs/installation_win_old.rst
 
docs/make.bat
 
docs/overview.rst
 
docs/readme.rst
 
docs/setup.rst
 
docs/theme/
 
docs/theme/nature/
 
docs/theme/nature/layout.html
 
docs/theme/nature/static/
 
docs/theme/nature/static/kallithea-logo.svg
 
docs/theme/nature/static/nature.css_t
 
docs/theme/nature/static/pygments.css
 
docs/theme/nature/theme.conf
 
docs/usage/
 
docs/usage/backup.rst
 
docs/usage/debugging.rst
 
docs/usage/email.rst
 
docs/usage/general.rst
 
docs/usage/locking.rst
 
docs/usage/performance.rst
 
docs/usage/statistics.rst
 
docs/usage/troubleshooting.rst
 
docs/usage/vcs_support.rst
 
init.d/
 
init.d/celeryd-upstart.conf
 
init.d/kallithea-daemon-arch
 
init.d/kallithea-daemon-debian
 
init.d/kallithea-daemon-gentoo
 
init.d/kallithea-daemon-redhat
 
init.d/kallithea-upstart.conf
 
init.d/supervisord.conf
 
kallithea/
 
kallithea/__init__.py
 
kallithea/bin/
 
kallithea/bin/__init__.py
 
kallithea/bin/base.py
 
kallithea/bin/kallithea_api.py
 
kallithea/bin/kallithea_backup.py
 
kallithea/bin/kallithea_config.py
 
kallithea/bin/kallithea_gist.py
 
kallithea/bin/ldap_sync.conf
 
kallithea/bin/ldap_sync.py
 
kallithea/bin/rebranddb.py
 
kallithea/bin/template.ini.mako
 
kallithea/config/
 
kallithea/config/__init__.py
 
kallithea/config/conf.py
 
kallithea/config/deployment.ini_tmpl
 
kallithea/config/environment.py
 
kallithea/config/middleware.py
 
kallithea/config/post_receive_tmpl.py
 
kallithea/config/pre_receive_tmpl.py
 
kallithea/config/rcextensions/
 
kallithea/config/rcextensions/__init__.py
 
kallithea/config/routing.py
 
kallithea/controllers/
 
kallithea/controllers/__init__.py
 
kallithea/controllers/admin/
 
kallithea/controllers/admin/__init__.py
 
kallithea/controllers/admin/admin.py
 
kallithea/controllers/admin/auth_settings.py
 
kallithea/controllers/admin/defaults.py
 
kallithea/controllers/admin/gists.py
 
kallithea/controllers/admin/my_account.py
 
kallithea/controllers/admin/notifications.py
 
kallithea/controllers/admin/permissions.py
 
kallithea/controllers/admin/repo_groups.py
 
kallithea/controllers/admin/repos.py
 
kallithea/controllers/admin/settings.py
 
kallithea/controllers/admin/user_groups.py
 
kallithea/controllers/admin/users.py
 
kallithea/controllers/api/
 
kallithea/controllers/api/__init__.py
 
kallithea/controllers/api/api.py
 
kallithea/controllers/bookmarks.py
 
kallithea/controllers/branches.py
 
kallithea/controllers/changelog.py
 
kallithea/controllers/changeset.py
 
kallithea/controllers/compare.py
 
kallithea/controllers/error.py
 
kallithea/controllers/feed.py
 
kallithea/controllers/files.py
 
kallithea/controllers/followers.py
 
kallithea/controllers/forks.py
 
kallithea/controllers/home.py
 
kallithea/controllers/journal.py
 
kallithea/controllers/login.py
 
kallithea/controllers/pullrequests.py
 
kallithea/controllers/search.py
 
kallithea/controllers/summary.py
 
kallithea/controllers/tags.py
 
kallithea/i18n/
 
kallithea/i18n/be/
 
kallithea/i18n/be/LC_MESSAGES/
 
kallithea/i18n/be/LC_MESSAGES/kallithea.mo
 
kallithea/i18n/be/LC_MESSAGES/kallithea.po
 
kallithea/i18n/cs/
 
kallithea/i18n/cs/LC_MESSAGES/
 
kallithea/i18n/cs/LC_MESSAGES/kallithea.mo
 
kallithea/i18n/cs/LC_MESSAGES/kallithea.po
 
kallithea/i18n/de/
 
kallithea/i18n/de/LC_MESSAGES/
 
kallithea/i18n/de/LC_MESSAGES/kallithea.mo
 
kallithea/i18n/de/LC_MESSAGES/kallithea.po
 
kallithea/i18n/en/
 
kallithea/i18n/en/LC_MESSAGES/
 
kallithea/i18n/en/LC_MESSAGES/kallithea.mo
 
kallithea/i18n/fr/
 
kallithea/i18n/fr/LC_MESSAGES/
 
kallithea/i18n/fr/LC_MESSAGES/kallithea.mo
 
kallithea/i18n/fr/LC_MESSAGES/kallithea.po
 
kallithea/i18n/how_to
 
kallithea/i18n/hu/
 
kallithea/i18n/hu/LC_MESSAGES/
 
kallithea/i18n/hu/LC_MESSAGES/kallithea.mo
 
kallithea/i18n/hu/LC_MESSAGES/kallithea.po
 
kallithea/i18n/ja/
 
kallithea/i18n/ja/LC_MESSAGES/
 
kallithea/i18n/ja/LC_MESSAGES/kallithea.mo
 
kallithea/i18n/ja/LC_MESSAGES/kallithea.po
 
kallithea/i18n/kallithea.pot
 
kallithea/i18n/nl_BE/
 
kallithea/i18n/nl_BE/LC_MESSAGES/
 
kallithea/i18n/nl_BE/LC_MESSAGES/kallithea.mo
 
kallithea/i18n/nl_BE/LC_MESSAGES/kallithea.po
 
kallithea/i18n/pl/
 
kallithea/i18n/pl/LC_MESSAGES/
 
kallithea/i18n/pl/LC_MESSAGES/kallithea.mo
 
kallithea/i18n/pl/LC_MESSAGES/kallithea.po
 
kallithea/i18n/pt_BR/
 
kallithea/i18n/pt_BR/LC_MESSAGES/
 
kallithea/i18n/pt_BR/LC_MESSAGES/kallithea.mo
 
kallithea/i18n/pt_BR/LC_MESSAGES/kallithea.po
 
kallithea/i18n/ru/
 
kallithea/i18n/ru/LC_MESSAGES/
 
kallithea/i18n/ru/LC_MESSAGES/kallithea.mo
 
kallithea/i18n/ru/LC_MESSAGES/kallithea.po
 
kallithea/i18n/sk/
 
kallithea/i18n/sk/LC_MESSAGES/
 
kallithea/i18n/sk/LC_MESSAGES/kallithea.mo
 
kallithea/i18n/sk/LC_MESSAGES/kallithea.po
 
kallithea/i18n/zh_CN/
 
kallithea/i18n/zh_CN/LC_MESSAGES/
 
kallithea/i18n/zh_CN/LC_MESSAGES/kallithea.mo
 
kallithea/i18n/zh_CN/LC_MESSAGES/kallithea.po
 
kallithea/i18n/zh_TW/
 
kallithea/i18n/zh_TW/LC_MESSAGES/
 
kallithea/i18n/zh_TW/LC_MESSAGES/kallithea.mo
 
kallithea/i18n/zh_TW/LC_MESSAGES/kallithea.po
 
kallithea/lib/
 
kallithea/lib/__init__.py
 
kallithea/lib/annotate.py
 
kallithea/lib/app_globals.py
 
kallithea/lib/auth.py
 
kallithea/lib/auth_modules/
 
kallithea/lib/auth_modules/__init__.py
 
kallithea/lib/auth_modules/auth_container.py
 
kallithea/lib/auth_modules/auth_crowd.py
 
kallithea/lib/auth_modules/auth_internal.py
 
kallithea/lib/auth_modules/auth_ldap.py
 
kallithea/lib/auth_modules/auth_pam.py
 
kallithea/lib/base.py
 
kallithea/lib/caching_query.py
 
kallithea/lib/celerylib/
 
kallithea/lib/celerylib/__init__.py
 
kallithea/lib/celerylib/tasks.py
 
kallithea/lib/celerypylons/
 
kallithea/lib/celerypylons/__init__.py
 
kallithea/lib/celerypylons/commands.py
 
kallithea/lib/celerypylons/loader.py
 
kallithea/lib/colored_formatter.py
 
kallithea/lib/compat.py
 
kallithea/lib/db_manage.py
 
kallithea/lib/dbmigrate/
 
kallithea/lib/dbmigrate/__init__.py
 
kallithea/lib/dbmigrate/migrate.cfg
 
kallithea/lib/dbmigrate/migrate/
 
kallithea/lib/dbmigrate/migrate/__init__.py
 
kallithea/lib/dbmigrate/migrate/changeset/
 
kallithea/lib/dbmigrate/migrate/changeset/__init__.py
 
kallithea/lib/dbmigrate/migrate/changeset/ansisql.py
 
kallithea/lib/dbmigrate/migrate/changeset/constraint.py
 
kallithea/lib/dbmigrate/migrate/changeset/databases/
 
kallithea/lib/dbmigrate/migrate/changeset/databases/__init__.py
 
kallithea/lib/dbmigrate/migrate/changeset/databases/firebird.py
 
kallithea/lib/dbmigrate/migrate/changeset/databases/mysql.py
 
kallithea/lib/dbmigrate/migrate/changeset/databases/oracle.py
 
kallithea/lib/dbmigrate/migrate/changeset/databases/postgres.py
 
kallithea/lib/dbmigrate/migrate/changeset/databases/sqlite.py
 
kallithea/lib/dbmigrate/migrate/changeset/databases/visitor.py
 
kallithea/lib/dbmigrate/migrate/changeset/schema.py
 
kallithea/lib/dbmigrate/migrate/exceptions.py
 
kallithea/lib/dbmigrate/migrate/versioning/
 
kallithea/lib/dbmigrate/migrate/versioning/__init__.py
 
kallithea/lib/dbmigrate/migrate/versioning/api.py
 
kallithea/lib/dbmigrate/migrate/versioning/cfgparse.py
 
kallithea/lib/dbmigrate/migrate/versioning/config.py
 
kallithea/lib/dbmigrate/migrate/versioning/genmodel.py
 
kallithea/lib/dbmigrate/migrate/versioning/migrate_repository.py
 
kallithea/lib/dbmigrate/migrate/versioning/pathed.py
 
kallithea/lib/dbmigrate/migrate/versioning/repository.py
 
kallithea/lib/dbmigrate/migrate/versioning/schema.py
 
kallithea/lib/dbmigrate/migrate/versioning/schemadiff.py
 
kallithea/lib/dbmigrate/migrate/versioning/script/
 
kallithea/lib/dbmigrate/migrate/versioning/script/__init__.py
 
kallithea/lib/dbmigrate/migrate/versioning/script/base.py
 
kallithea/lib/dbmigrate/migrate/versioning/script/py.py
 
kallithea/lib/dbmigrate/migrate/versioning/script/sql.py
 
kallithea/lib/dbmigrate/migrate/versioning/shell.py
 
kallithea/lib/dbmigrate/migrate/versioning/template.py
 
kallithea/lib/dbmigrate/migrate/versioning/templates/
 
kallithea/lib/dbmigrate/migrate/versioning/templates/__init__.py
 
kallithea/lib/dbmigrate/migrate/versioning/templates/manage.py_tmpl
 
kallithea/lib/dbmigrate/migrate/versioning/templates/manage/
 
kallithea/lib/dbmigrate/migrate/versioning/templates/manage/default.py_tmpl
 
kallithea/lib/dbmigrate/migrate/versioning/templates/manage/pylons.py_tmpl
 
kallithea/lib/dbmigrate/migrate/versioning/templates/repository/
 
kallithea/lib/dbmigrate/migrate/versioning/templates/repository/__init__.py
 
kallithea/lib/dbmigrate/migrate/versioning/templates/repository/default/
 
kallithea/lib/dbmigrate/migrate/versioning/templates/repository/default/README
 
kallithea/lib/dbmigrate/migrate/versioning/templates/repository/default/__init__.py
 
kallithea/lib/dbmigrate/migrate/versioning/templates/repository/default/migrate.cfg
 
kallithea/lib/dbmigrate/migrate/versioning/templates/repository/default/versions/
 
kallithea/lib/dbmigrate/migrate/versioning/templates/repository/default/versions/__init__.py
 
kallithea/lib/dbmigrate/migrate/versioning/templates/repository/pylons/
 
kallithea/lib/dbmigrate/migrate/versioning/templates/repository/pylons/README
 
kallithea/lib/dbmigrate/migrate/versioning/templates/repository/pylons/__init__.py
 
kallithea/lib/dbmigrate/migrate/versioning/templates/repository/pylons/migrate.cfg
 
kallithea/lib/dbmigrate/migrate/versioning/templates/repository/pylons/versions/
 
kallithea/lib/dbmigrate/migrate/versioning/templates/repository/pylons/versions/__init__.py
 
kallithea/lib/dbmigrate/migrate/versioning/templates/script/
 
kallithea/lib/dbmigrate/migrate/versioning/templates/script/__init__.py
 
kallithea/lib/dbmigrate/migrate/versioning/templates/script/default.py_tmpl
 
kallithea/lib/dbmigrate/migrate/versioning/templates/script/pylons.py_tmpl
 
kallithea/lib/dbmigrate/migrate/versioning/templates/sql_script/
 
kallithea/lib/dbmigrate/migrate/versioning/templates/sql_script/default.py_tmpl
 
kallithea/lib/dbmigrate/migrate/versioning/templates/sql_script/pylons.py_tmpl
 
kallithea/lib/dbmigrate/migrate/versioning/util/
 
kallithea/lib/dbmigrate/migrate/versioning/util/__init__.py
 
kallithea/lib/dbmigrate/migrate/versioning/util/importpath.py
 
kallithea/lib/dbmigrate/migrate/versioning/util/keyedinstance.py
 
kallithea/lib/dbmigrate/migrate/versioning/version.py
 
kallithea/lib/dbmigrate/schema/
 
kallithea/lib/dbmigrate/schema/__init__.py
 
kallithea/lib/dbmigrate/schema/db_1_1_0.py
 
kallithea/lib/dbmigrate/schema/db_1_2_0.py
 
kallithea/lib/dbmigrate/schema/db_1_3_0.py
 
kallithea/lib/dbmigrate/schema/db_1_4_0.py
 
kallithea/lib/dbmigrate/schema/db_1_5_0.py
 
kallithea/lib/dbmigrate/schema/db_1_5_2.py
 
kallithea/lib/dbmigrate/schema/db_1_6_0.py
 
kallithea/lib/dbmigrate/schema/db_1_7_0.py
 
kallithea/lib/dbmigrate/schema/db_1_8_0.py
 
kallithea/lib/dbmigrate/schema/db_2_0_0.py
 
kallithea/lib/dbmigrate/schema/db_2_0_1.py
 
kallithea/lib/dbmigrate/schema/db_2_0_2.py
 
kallithea/lib/dbmigrate/schema/db_2_1_0.py
 
kallithea/lib/dbmigrate/schema/db_2_2_0.py
 
kallithea/lib/dbmigrate/schema/db_2_2_3.py
 
kallithea/lib/dbmigrate/versions/
 
kallithea/lib/dbmigrate/versions/001_initial_release.py
 
kallithea/lib/dbmigrate/versions/002_version_1_1_0.py
 
kallithea/lib/dbmigrate/versions/003_version_1_2_0.py
 
kallithea/lib/dbmigrate/versions/004_version_1_3_0.py
 
kallithea/lib/dbmigrate/versions/005_version_1_3_0.py
 
kallithea/lib/dbmigrate/versions/006_version_1_4_0.py
 
kallithea/lib/dbmigrate/versions/007_version_1_4_0.py
 
kallithea/lib/dbmigrate/versions/008_version_1_5_0.py
 
kallithea/lib/dbmigrate/versions/009_version_1_5_1.py
 
kallithea/lib/dbmigrate/versions/010_version_1_5_2.py
 
kallithea/lib/dbmigrate/versions/011_version_1_6_0.py
 
kallithea/lib/dbmigrate/versions/012_version_1_7_0.py
 
kallithea/lib/dbmigrate/versions/013_version_1_7_0.py
 
kallithea/lib/dbmigrate/versions/014_version_1_7_1.py
 
kallithea/lib/dbmigrate/versions/015_version_1_8_0.py
 
kallithea/lib/dbmigrate/versions/016_version_2_0_0.py
 
kallithea/lib/dbmigrate/versions/017_version_2_0_0.py
 
kallithea/lib/dbmigrate/versions/018_version_2_0_0.py
 
kallithea/lib/dbmigrate/versions/019_version_2_0_0.py
 
kallithea/lib/dbmigrate/versions/020_version_2_0_1.py
 
kallithea/lib/dbmigrate/versions/021_version_2_0_2.py
 
kallithea/lib/dbmigrate/versions/022_version_2_0_2.py
 
kallithea/lib/dbmigrate/versions/023_version_2_1_0.py
 
kallithea/lib/dbmigrate/versions/024_version_2_1_0.py
 
kallithea/lib/dbmigrate/versions/025_version_2_1_0.py
 
kallithea/lib/dbmigrate/versions/026_version_2_2_0.py
 
kallithea/lib/dbmigrate/versions/027_version_2_2_0.py
 
kallithea/lib/dbmigrate/versions/028_version_2_2_3.py
 
kallithea/lib/dbmigrate/versions/029_version_2_2_3.py
 
kallithea/lib/dbmigrate/versions/030_version_2_2_3.py
 
kallithea/lib/dbmigrate/versions/031_version_2_2_3.py
 
kallithea/lib/dbmigrate/versions/__init__.py
 
kallithea/lib/diffs.py
 
kallithea/lib/exceptions.py
 
kallithea/lib/ext_json.py
 
kallithea/lib/graphmod.py
 
kallithea/lib/helpers.py
 
kallithea/lib/hooks.py
 
kallithea/lib/indexers/
 
kallithea/lib/indexers/__init__.py
 
kallithea/lib/indexers/daemon.py
 
kallithea/lib/ipaddr.py
 
kallithea/lib/markup_renderer.py
 
kallithea/lib/middleware/
 
kallithea/lib/middleware/__init__.py
 
kallithea/lib/middleware/errormator.py
 
kallithea/lib/middleware/https_fixup.py
 
kallithea/lib/middleware/pygrack.py
 
kallithea/lib/middleware/sentry.py
 
kallithea/lib/middleware/sessionmiddleware.py
 
kallithea/lib/middleware/simplegit.py
 
kallithea/lib/middleware/simplehg.py
 
kallithea/lib/middleware/wrapper.py
 
kallithea/lib/paster_commands/
 
kallithea/lib/paster_commands/__init__.py
 
kallithea/lib/paster_commands/cache_keys.py
 
kallithea/lib/paster_commands/cleanup.py
 
kallithea/lib/paster_commands/install_iis.py
 
kallithea/lib/paster_commands/ishell.py
 
kallithea/lib/paster_commands/make_index.py
 
kallithea/lib/paster_commands/make_rcextensions.py
 
kallithea/lib/paster_commands/repo_scan.py
 
kallithea/lib/paster_commands/setup_db.py
 
kallithea/lib/paster_commands/update_repoinfo.py
 
kallithea/lib/pidlock.py
 
kallithea/lib/profiler.py
 
kallithea/lib/rcmail/
 
kallithea/lib/rcmail/__init__.py
 
kallithea/lib/rcmail/exceptions.py
 
kallithea/lib/rcmail/message.py
 
kallithea/lib/rcmail/response.py
 
kallithea/lib/rcmail/smtp_mailer.py
 
kallithea/lib/rcmail/utils.py
 
kallithea/lib/recaptcha.py
 
kallithea/lib/timerproxy.py
 
kallithea/lib/utils.py
 
kallithea/lib/utils2.py
 
kallithea/lib/vcs/
 
kallithea/lib/vcs/__init__.py
 
kallithea/lib/vcs/backends/
 
kallithea/lib/vcs/backends/__init__.py
 
kallithea/lib/vcs/backends/base.py
 
kallithea/lib/vcs/backends/git/
 
kallithea/lib/vcs/backends/git/__init__.py
 
kallithea/lib/vcs/backends/git/changeset.py
 
kallithea/lib/vcs/backends/git/inmemory.py
 
kallithea/lib/vcs/backends/git/repository.py
 
kallithea/lib/vcs/backends/git/workdir.py
 
kallithea/lib/vcs/backends/hg/
 
kallithea/lib/vcs/backends/hg/__init__.py
 
kallithea/lib/vcs/backends/hg/changeset.py
 
kallithea/lib/vcs/backends/hg/inmemory.py
 
kallithea/lib/vcs/backends/hg/repository.py
 
kallithea/lib/vcs/backends/hg/workdir.py
 
kallithea/lib/vcs/conf/
 
kallithea/lib/vcs/conf/__init__.py
 
kallithea/lib/vcs/conf/settings.py
 
kallithea/lib/vcs/exceptions.py
 
kallithea/lib/vcs/nodes.py
 
kallithea/lib/vcs/subprocessio.py
 
kallithea/lib/vcs/utils/
 
kallithea/lib/vcs/utils/__init__.py
 
kallithea/lib/vcs/utils/annotate.py
 
kallithea/lib/vcs/utils/archivers.py
 
kallithea/lib/vcs/utils/baseui_config.py
 
kallithea/lib/vcs/utils/compat.py
 
kallithea/lib/vcs/utils/diffs.py
 
kallithea/lib/vcs/utils/fakemod.py
 
kallithea/lib/vcs/utils/filesize.py
 
kallithea/lib/vcs/utils/helpers.py
 
kallithea/lib/vcs/utils/hgcompat.py
 
kallithea/lib/vcs/utils/imports.py
 
kallithea/lib/vcs/utils/lazy.py
 
kallithea/lib/vcs/utils/lockfiles.py
 
kallithea/lib/vcs/utils/ordered_dict.py
 
kallithea/lib/vcs/utils/paths.py
 
kallithea/lib/vcs/utils/progressbar.py
 
kallithea/lib/vcs/utils/termcolors.py
 
kallithea/lib/verlib.py
 
kallithea/model/
 
kallithea/model/__init__.py
 
kallithea/model/api_key.py
 
kallithea/model/changeset_status.py
 
kallithea/model/comment.py
 
kallithea/model/db.py
 
kallithea/model/forms.py
 
kallithea/model/gist.py
 
kallithea/model/meta.py
 
kallithea/model/notification.py
 
kallithea/model/permission.py
 
kallithea/model/pull_request.py
 
kallithea/model/repo.py
 
kallithea/model/repo_group.py
 
kallithea/model/repo_permission.py
 
kallithea/model/scm.py
 
kallithea/model/user.py
 
kallithea/model/user_group.py
 
kallithea/model/validators.py
 
kallithea/public/
 
kallithea/public/codemirror/
 
kallithea/public/codemirror/LICENSE
 
kallithea/public/codemirror/lib/
 
kallithea/public/codemirror/lib/codemirror.css
 
kallithea/public/codemirror/lib/codemirror.js
 
kallithea/public/codemirror/mode/
 
kallithea/public/codemirror/mode/apl/
 
kallithea/public/codemirror/mode/apl/apl.js
 
kallithea/public/codemirror/mode/asterisk/
 
kallithea/public/codemirror/mode/asterisk/asterisk.js
 
kallithea/public/codemirror/mode/clike/
 
kallithea/public/codemirror/mode/clike/clike.js
 
kallithea/public/codemirror/mode/clojure/
 
kallithea/public/codemirror/mode/clojure/clojure.js
 
kallithea/public/codemirror/mode/cobol/
 
kallithea/public/codemirror/mode/cobol/cobol.js
 
kallithea/public/codemirror/mode/coffeescript/
 
kallithea/public/codemirror/mode/coffeescript/coffeescript.js
 
kallithea/public/codemirror/mode/commonlisp/
 
kallithea/public/codemirror/mode/commonlisp/commonlisp.js
 
kallithea/public/codemirror/mode/css/
 
kallithea/public/codemirror/mode/css/css.js
 
kallithea/public/codemirror/mode/css/less_test.js
 
kallithea/public/codemirror/mode/css/scss_test.js
 
kallithea/public/codemirror/mode/cypher/
 
kallithea/public/codemirror/mode/cypher/cypher.js
 
kallithea/public/codemirror/mode/d/
 
kallithea/public/codemirror/mode/d/d.js
 
kallithea/public/codemirror/mode/diff/
 
kallithea/public/codemirror/mode/diff/diff.js
 
kallithea/public/codemirror/mode/django/
 
kallithea/public/codemirror/mode/django/django.js
 
kallithea/public/codemirror/mode/dtd/
 
kallithea/public/codemirror/mode/dtd/dtd.js
 
kallithea/public/codemirror/mode/dylan/
 
kallithea/public/codemirror/mode/dylan/dylan.js
 
kallithea/public/codemirror/mode/ecl/
 
kallithea/public/codemirror/mode/ecl/ecl.js
 
kallithea/public/codemirror/mode/eiffel/
 
kallithea/public/codemirror/mode/eiffel/eiffel.js
 
kallithea/public/codemirror/mode/erlang/
 
kallithea/public/codemirror/mode/erlang/erlang.js
 
kallithea/public/codemirror/mode/fortran/
 
kallithea/public/codemirror/mode/fortran/fortran.js
 
kallithea/public/codemirror/mode/gas/
 
kallithea/public/codemirror/mode/gas/gas.js
 
kallithea/public/codemirror/mode/gfm/
 
kallithea/public/codemirror/mode/gfm/gfm.js
 
kallithea/public/codemirror/mode/gherkin/
 
kallithea/public/codemirror/mode/gherkin/gherkin.js
 
kallithea/public/codemirror/mode/go/
 
kallithea/public/codemirror/mode/go/go.js
 
kallithea/public/codemirror/mode/groovy/
 
kallithea/public/codemirror/mode/groovy/groovy.js
 
kallithea/public/codemirror/mode/haml/
 
kallithea/public/codemirror/mode/haml/haml.js
 
kallithea/public/codemirror/mode/haskell/
 
kallithea/public/codemirror/mode/haskell/haskell.js
 
kallithea/public/codemirror/mode/haxe/
 
kallithea/public/codemirror/mode/haxe/haxe.js
 
kallithea/public/codemirror/mode/htmlembedded/
 
kallithea/public/codemirror/mode/htmlembedded/htmlembedded.js
 
kallithea/public/codemirror/mode/htmlmixed/
 
kallithea/public/codemirror/mode/htmlmixed/htmlmixed.js
 
kallithea/public/codemirror/mode/http/
 
kallithea/public/codemirror/mode/http/http.js
 
kallithea/public/codemirror/mode/jade/
 
kallithea/public/codemirror/mode/jade/jade.js
 
kallithea/public/codemirror/mode/javascript/
 
kallithea/public/codemirror/mode/javascript/javascript.js
 
kallithea/public/codemirror/mode/jinja2/
 
kallithea/public/codemirror/mode/jinja2/jinja2.js
 
kallithea/public/codemirror/mode/julia/
 
kallithea/public/codemirror/mode/julia/julia.js
 
kallithea/public/codemirror/mode/kotlin/
 
kallithea/public/codemirror/mode/kotlin/kotlin.js
 
kallithea/public/codemirror/mode/livescript/
 
kallithea/public/codemirror/mode/livescript/livescript.js
 
kallithea/public/codemirror/mode/lua/
 
kallithea/public/codemirror/mode/lua/lua.js
 
kallithea/public/codemirror/mode/markdown/
 
kallithea/public/codemirror/mode/markdown/markdown.js
 
kallithea/public/codemirror/mode/meta.js
 
kallithea/public/codemirror/mode/mirc/
 
kallithea/public/codemirror/mode/mirc/mirc.js
 
kallithea/public/codemirror/mode/mllike/
 
kallithea/public/codemirror/mode/mllike/mllike.js
 
kallithea/public/codemirror/mode/modelica/
 
kallithea/public/codemirror/mode/modelica/modelica.js
 
kallithea/public/codemirror/mode/nginx/
 
kallithea/public/codemirror/mode/nginx/nginx.js
 
kallithea/public/codemirror/mode/ntriples/
 
kallithea/public/codemirror/mode/ntriples/ntriples.js
 
kallithea/public/codemirror/mode/octave/
 
kallithea/public/codemirror/mode/octave/octave.js
 
kallithea/public/codemirror/mode/pascal/
 
kallithea/public/codemirror/mode/pascal/pascal.js
 
kallithea/public/codemirror/mode/pegjs/
 
kallithea/public/codemirror/mode/pegjs/pegjs.js
 
kallithea/public/codemirror/mode/perl/
 
kallithea/public/codemirror/mode/perl/perl.js
 
kallithea/public/codemirror/mode/php/
 
kallithea/public/codemirror/mode/php/php.js
 
kallithea/public/codemirror/mode/pig/
 
kallithea/public/codemirror/mode/pig/pig.js
 
kallithea/public/codemirror/mode/properties/
 
kallithea/public/codemirror/mode/properties/properties.js
 
kallithea/public/codemirror/mode/puppet/
 
kallithea/public/codemirror/mode/puppet/puppet.js
 
kallithea/public/codemirror/mode/python/
 
kallithea/public/codemirror/mode/python/python.js
 
kallithea/public/codemirror/mode/q/
 
kallithea/public/codemirror/mode/q/q.js
 
kallithea/public/codemirror/mode/r/
 
kallithea/public/codemirror/mode/r/r.js
 
kallithea/public/codemirror/mode/rpm/
 
kallithea/public/codemirror/mode/rpm/rpm.js
 
kallithea/public/codemirror/mode/rst/
 
kallithea/public/codemirror/mode/rst/rst.js
 
kallithea/public/codemirror/mode/ruby/
 
kallithea/public/codemirror/mode/ruby/ruby.js
 
kallithea/public/codemirror/mode/rust/
 
kallithea/public/codemirror/mode/rust/rust.js
 
kallithea/public/codemirror/mode/sass/
 
kallithea/public/codemirror/mode/sass/sass.js
 
kallithea/public/codemirror/mode/scheme/
 
kallithea/public/codemirror/mode/scheme/scheme.js
 
kallithea/public/codemirror/mode/shell/
 
kallithea/public/codemirror/mode/shell/shell.js
 
kallithea/public/codemirror/mode/sieve/
 
kallithea/public/codemirror/mode/sieve/sieve.js
 
kallithea/public/codemirror/mode/slim/
 
kallithea/public/codemirror/mode/slim/slim.js
 
kallithea/public/codemirror/mode/smalltalk/
 
kallithea/public/codemirror/mode/smalltalk/smalltalk.js
 
kallithea/public/codemirror/mode/smarty/
 
kallithea/public/codemirror/mode/smarty/smarty.js
 
kallithea/public/codemirror/mode/smartymixed/
 
kallithea/public/codemirror/mode/smartymixed/smartymixed.js
 
kallithea/public/codemirror/mode/solr/
 
kallithea/public/codemirror/mode/solr/solr.js
 
kallithea/public/codemirror/mode/sparql/
 
kallithea/public/codemirror/mode/sparql/sparql.js
 
kallithea/public/codemirror/mode/sql/
 
kallithea/public/codemirror/mode/sql/sql.js
 
kallithea/public/codemirror/mode/stex/
 
kallithea/public/codemirror/mode/stex/stex.js
 
kallithea/public/codemirror/mode/tcl/
 
kallithea/public/codemirror/mode/tcl/tcl.js
 
kallithea/public/codemirror/mode/textile/
 
kallithea/public/codemirror/mode/textile/textile.js
 
kallithea/public/codemirror/mode/tiddlywiki/
 
kallithea/public/codemirror/mode/tiddlywiki/tiddlywiki.css
 
kallithea/public/codemirror/mode/tiddlywiki/tiddlywiki.js
 
kallithea/public/codemirror/mode/tiki/
 
kallithea/public/codemirror/mode/tiki/tiki.css
 
kallithea/public/codemirror/mode/tiki/tiki.js
 
kallithea/public/codemirror/mode/toml/
 
kallithea/public/codemirror/mode/toml/toml.js
 
kallithea/public/codemirror/mode/tornado/
 
kallithea/public/codemirror/mode/tornado/tornado.js
 
kallithea/public/codemirror/mode/turtle/
 
kallithea/public/codemirror/mode/turtle/turtle.js
 
kallithea/public/codemirror/mode/vb/
 
kallithea/public/codemirror/mode/vb/vb.js
 
kallithea/public/codemirror/mode/vbscript/
 
kallithea/public/codemirror/mode/vbscript/vbscript.js
 
kallithea/public/codemirror/mode/velocity/
 
kallithea/public/codemirror/mode/velocity/velocity.js
 
kallithea/public/codemirror/mode/verilog/
 
kallithea/public/codemirror/mode/verilog/verilog.js
 
kallithea/public/codemirror/mode/xml/
 
kallithea/public/codemirror/mode/xml/xml.js
 
kallithea/public/codemirror/mode/xquery/
 
kallithea/public/codemirror/mode/xquery/xquery.js
 
kallithea/public/codemirror/mode/yaml/
 
kallithea/public/codemirror/mode/yaml/yaml.js
 
kallithea/public/codemirror/mode/z80/
 
kallithea/public/codemirror/mode/z80/z80.js
 
kallithea/public/css/
 
kallithea/public/css/bootstrap.css
 
kallithea/public/css/contextbar.css
 
kallithea/public/css/mergely.css
 
kallithea/public/css/pygments.css
 
kallithea/public/css/style.css
 
kallithea/public/fontello/
 
kallithea/public/fontello/README-kallithea.txt
 
kallithea/public/fontello/README.txt
 
kallithea/public/fontello/config.json
 
kallithea/public/fontello/css/
 
kallithea/public/fontello/css/kallithea.css
 
kallithea/public/fontello/font/
 
kallithea/public/fontello/font/kallithea.eot
 
kallithea/public/fontello/font/kallithea.svg
 
kallithea/public/fontello/font/kallithea.ttf
 
kallithea/public/fontello/font/kallithea.woff
 
kallithea/public/images/
 
kallithea/public/images/background.png
 
kallithea/public/images/favicon.ico
 
kallithea/public/images/kallithea-logo.png
 
kallithea/public/images/kallithea-logo.svg
 
kallithea/public/images/pager.png
 
kallithea/public/images/pager_selected.png
 
kallithea/public/js/
 
kallithea/public/js/base.js
 
kallithea/public/js/bootstrap.js
 
kallithea/public/js/codemirror_loadmode.js
 
kallithea/public/js/graph.js
 
kallithea/public/js/jquery-1.11.1.min.js
 
kallithea/public/js/mergely.js
 
kallithea/public/js/mousetrap.js
 
kallithea/public/js/native.history.js
 
kallithea/public/js/select2/
 
kallithea/public/js/select2/select2-bootstrap.css
 
kallithea/public/js/select2/select2-spinner.gif
 
kallithea/public/js/select2/select2.css
 
kallithea/public/js/select2/select2.js
 
kallithea/public/js/select2/select2.png
 
kallithea/public/js/select2/select2x2.png
 
kallithea/public/js/yui.2.9.js
 
kallithea/public/js/yui.flot.js
 
kallithea/templates/
 
kallithea/templates/about.html
 
kallithea/templates/admin/
 
kallithea/templates/admin/admin.html
 
kallithea/templates/admin/admin_log.html
 
kallithea/templates/admin/auth/
 
kallithea/templates/admin/auth/auth_settings.html
 
kallithea/templates/admin/defaults/
 
kallithea/templates/admin/defaults/defaults.html
 
kallithea/templates/admin/gists/
 
kallithea/templates/admin/gists/edit.html
 
kallithea/templates/admin/gists/index.html
 
kallithea/templates/admin/gists/new.html
 
kallithea/templates/admin/gists/show.html
 
kallithea/templates/admin/my_account/
 
kallithea/templates/admin/my_account/my_account.html
 
kallithea/templates/admin/my_account/my_account_api_keys.html
 
kallithea/templates/admin/my_account/my_account_emails.html
 
kallithea/templates/admin/my_account/my_account_password.html
 
kallithea/templates/admin/my_account/my_account_perms.html
 
kallithea/templates/admin/my_account/my_account_profile.html
 
kallithea/templates/admin/my_account/my_account_repos.html
 
kallithea/templates/admin/my_account/my_account_watched.html
 
kallithea/templates/admin/notifications/
 
kallithea/templates/admin/notifications/notifications.html
 
kallithea/templates/admin/notifications/notifications_data.html
 
kallithea/templates/admin/notifications/show_notification.html
 
kallithea/templates/admin/permissions/
 
kallithea/templates/admin/permissions/permissions.html
 
kallithea/templates/admin/permissions/permissions_globals.html
 
kallithea/templates/admin/permissions/permissions_ips.html
 
kallithea/templates/admin/permissions/permissions_perms.html
 
kallithea/templates/admin/repo_groups/
 
kallithea/templates/admin/repo_groups/repo_group_add.html
 
kallithea/templates/admin/repo_groups/repo_group_edit.html
 
kallithea/templates/admin/repo_groups/repo_group_edit_advanced.html
 
kallithea/templates/admin/repo_groups/repo_group_edit_perms.html
 
kallithea/templates/admin/repo_groups/repo_group_edit_settings.html
 
kallithea/templates/admin/repo_groups/repo_group_show.html
 
kallithea/templates/admin/repo_groups/repo_groups.html
 
kallithea/templates/admin/repos/
 
kallithea/templates/admin/repos/repo_add.html
 
kallithea/templates/admin/repos/repo_add_base.html
 
kallithea/templates/admin/repos/repo_creating.html
 
kallithea/templates/admin/repos/repo_edit.html
 
kallithea/templates/admin/repos/repo_edit_advanced.html
 
kallithea/templates/admin/repos/repo_edit_caches.html
 
kallithea/templates/admin/repos/repo_edit_fields.html
 
kallithea/templates/admin/repos/repo_edit_fork.html
 
kallithea/templates/admin/repos/repo_edit_permissions.html
 
kallithea/templates/admin/repos/repo_edit_remote.html
 
kallithea/templates/admin/repos/repo_edit_settings.html
 
kallithea/templates/admin/repos/repo_edit_statistics.html
 
kallithea/templates/admin/repos/repos.html
 
kallithea/templates/admin/settings/
 
kallithea/templates/admin/settings/settings.html
 
kallithea/templates/admin/settings/settings_email.html
 
kallithea/templates/admin/settings/settings_global.html
 
kallithea/templates/admin/settings/settings_hooks.html
 
kallithea/templates/admin/settings/settings_mapping.html
 
kallithea/templates/admin/settings/settings_search.html
 
kallithea/templates/admin/settings/settings_system.html
 
kallithea/templates/admin/settings/settings_system_update.html
 
kallithea/templates/admin/settings/settings_vcs.html
 
kallithea/templates/admin/settings/settings_visual.html
 
kallithea/templates/admin/user_groups/
 
kallithea/templates/admin/user_groups/user_group_add.html
 
kallithea/templates/admin/user_groups/user_group_edit.html
 
kallithea/templates/admin/user_groups/user_group_edit_advanced.html
 
kallithea/templates/admin/user_groups/user_group_edit_default_perms.html
 
kallithea/templates/admin/user_groups/user_group_edit_members.html
 
kallithea/templates/admin/user_groups/user_group_edit_perms.html
 
kallithea/templates/admin/user_groups/user_group_edit_settings.html
 
kallithea/templates/admin/user_groups/user_groups.html
 
kallithea/templates/admin/users/
 
kallithea/templates/admin/users/user_add.html
 
kallithea/templates/admin/users/user_edit.html
 
kallithea/templates/admin/users/user_edit_advanced.html
 
kallithea/templates/admin/users/user_edit_api_keys.html
 
kallithea/templates/admin/users/user_edit_emails.html
 
kallithea/templates/admin/users/user_edit_ips.html
 
kallithea/templates/admin/users/user_edit_perms.html
 
kallithea/templates/admin/users/user_edit_profile.html
 
kallithea/templates/admin/users/users.html
 
kallithea/templates/base/
 
kallithea/templates/base/base.html
 
kallithea/templates/base/default_perms_box.html
 
kallithea/templates/base/flash_msg.html
 
kallithea/templates/base/perms_summary.html
 
kallithea/templates/base/root.html
 
kallithea/templates/bookmarks/
 
kallithea/templates/bookmarks/bookmarks.html
 
kallithea/templates/bookmarks/bookmarks_data.html
 
kallithea/templates/branches/
 
kallithea/templates/branches/branches.html
 
kallithea/templates/branches/branches_data.html
 
kallithea/templates/changelog/
 
kallithea/templates/changelog/changelog.html
 
kallithea/templates/changelog/changelog_details.html
 
kallithea/templates/changelog/changelog_summary_data.html
 
kallithea/templates/changeset/
 
kallithea/templates/changeset/changeset.html
 
kallithea/templates/changeset/changeset_comment_block.html
 
kallithea/templates/changeset/changeset_file_comment.html
 
kallithea/templates/changeset/changeset_range.html
 
kallithea/templates/changeset/diff_block.html
 
kallithea/templates/changeset/patch_changeset.html
 
kallithea/templates/compare/
 
kallithea/templates/compare/compare_cs.html
 
kallithea/templates/compare/compare_diff.html
 
kallithea/templates/data_table/
 
kallithea/templates/data_table/_dt_elements.html
 
kallithea/templates/email_templates/
 
kallithea/templates/email_templates/changeset_comment.html
 
kallithea/templates/email_templates/changeset_comment.txt
 
kallithea/templates/email_templates/default.html
 
kallithea/templates/email_templates/default.txt
 
kallithea/templates/email_templates/main.html
 
kallithea/templates/email_templates/main.txt
 
kallithea/templates/email_templates/password_reset.html
 
kallithea/templates/email_templates/password_reset.txt
 
kallithea/templates/email_templates/pull_request.html
 
kallithea/templates/email_templates/pull_request.txt
 
kallithea/templates/email_templates/pull_request_comment.html
 
kallithea/templates/email_templates/pull_request_comment.txt
 
kallithea/templates/email_templates/registration.html
 
kallithea/templates/email_templates/registration.txt
 
kallithea/templates/errors/
 
kallithea/templates/errors/error_document.html
 
kallithea/templates/files/
 
kallithea/templates/files/diff_2way.html
 
kallithea/templates/files/file_diff.html
 
kallithea/templates/files/files.html
 
kallithea/templates/files/files_add.html
 
kallithea/templates/files/files_browser.html
 
kallithea/templates/files/files_delete.html
 
kallithea/templates/files/files_edit.html
 
kallithea/templates/files/files_history_box.html
 
kallithea/templates/files/files_source.html
 
kallithea/templates/files/files_ypjax.html
 
kallithea/templates/followers/
 
kallithea/templates/followers/followers.html
 
kallithea/templates/followers/followers_data.html
 
kallithea/templates/forks/
 
kallithea/templates/forks/fork.html
 
kallithea/templates/forks/forks.html
 
kallithea/templates/forks/forks_data.html
 
kallithea/templates/index.html
 
kallithea/templates/index_base.html
 
kallithea/templates/journal/
 
kallithea/templates/journal/journal.html
 
kallithea/templates/journal/journal_data.html
 
kallithea/templates/journal/public_journal.html
 
kallithea/templates/login.html
 
kallithea/templates/password_reset.html
 
kallithea/templates/password_reset_confirmation.html
 
kallithea/templates/pullrequests/
 
kallithea/templates/pullrequests/pullrequest.html
 
kallithea/templates/pullrequests/pullrequest_data.html
 
kallithea/templates/pullrequests/pullrequest_show.html
 
kallithea/templates/pullrequests/pullrequest_show_all.html
 
kallithea/templates/pullrequests/pullrequest_show_my.html
 
kallithea/templates/register.html
 
kallithea/templates/search/
 
kallithea/templates/search/search.html
 
kallithea/templates/search/search_commit.html
 
kallithea/templates/search/search_content.html
 
kallithea/templates/search/search_path.html
 
kallithea/templates/search/search_repository.html
 
kallithea/templates/summary/
 
kallithea/templates/summary/statistics.html
 
kallithea/templates/summary/summary.html
 
kallithea/templates/switch_to_list.html
 
kallithea/templates/tags/
 
kallithea/templates/tags/tags.html
 
kallithea/templates/tags/tags_data.html
 
kallithea/tests/
 
kallithea/tests/__init__.py
 
kallithea/tests/api/
 
kallithea/tests/api/__init__.py
 
kallithea/tests/api/api_base.py
 
kallithea/tests/api/test_api_git.py
 
kallithea/tests/api/test_api_hg.py
 
kallithea/tests/conftest.py
 
kallithea/tests/fixture.py
 
kallithea/tests/fixtures/
 
kallithea/tests/fixtures/diff_with_diff_data.diff
 
kallithea/tests/fixtures/git_diff_binary_and_normal.diff
 
kallithea/tests/fixtures/git_diff_chmod.diff
 
kallithea/tests/fixtures/git_diff_mod_single_binary_file.diff
 
kallithea/tests/fixtures/git_diff_modify_binary_file.diff
 
kallithea/tests/fixtures/git_diff_rename_file.diff
 
kallithea/tests/fixtures/git_node_history_response.json
 
kallithea/tests/fixtures/hg_diff_add_single_binary_file.diff
 
kallithea/tests/fixtures/hg_diff_binary_and_normal.diff
 
kallithea/tests/fixtures/hg_diff_chmod.diff
 
kallithea/tests/fixtures/hg_diff_chmod_and_mod_single_binary_file.diff
 
kallithea/tests/fixtures/hg_diff_copy_and_chmod_file.diff
 
kallithea/tests/fixtures/hg_diff_copy_and_modify_file.diff
 
kallithea/tests/fixtures/hg_diff_copy_chmod_and_edit_file.diff
 
kallithea/tests/fixtures/hg_diff_copy_file.diff
 
kallithea/tests/fixtures/hg_diff_del_single_binary_file.diff
 
kallithea/tests/fixtures/hg_diff_mod_file_and_rename.diff
 
kallithea/tests/fixtures/hg_diff_mod_single_binary_file.diff
 
kallithea/tests/fixtures/hg_diff_mod_single_file_and_rename_and_chmod.diff
 
kallithea/tests/fixtures/hg_diff_rename_and_chmod_file.diff
 
kallithea/tests/fixtures/hg_diff_rename_file.diff
 
kallithea/tests/fixtures/hg_diff_rename_space_cr.diff
 
kallithea/tests/fixtures/hg_node_history_response.json
 
kallithea/tests/fixtures/journal_dump.csv
 
kallithea/tests/fixtures/markuptest.diff
 
kallithea/tests/fixtures/vcs_test_git.tar.gz
 
kallithea/tests/fixtures/vcs_test_hg.tar.gz
 
kallithea/tests/functional/
 
kallithea/tests/functional/__init__.py
 
kallithea/tests/functional/test_admin.py
 
kallithea/tests/functional/test_admin_auth_settings.py
 
kallithea/tests/functional/test_admin_defaults.py
 
kallithea/tests/functional/test_admin_gists.py
 
kallithea/tests/functional/test_admin_notifications.py
 
kallithea/tests/functional/test_admin_permissions.py
 
kallithea/tests/functional/test_admin_repo_groups.py
 
kallithea/tests/functional/test_admin_repos.py
 
kallithea/tests/functional/test_admin_settings.py
 
kallithea/tests/functional/test_admin_user_groups.py
 
kallithea/tests/functional/test_admin_users.py
 
kallithea/tests/functional/test_branches.py
 
kallithea/tests/functional/test_changelog.py
 
kallithea/tests/functional/test_changeset.py
 
kallithea/tests/functional/test_changeset_comments.py
 
kallithea/tests/functional/test_compare.py
 
kallithea/tests/functional/test_compare_local.py
 
kallithea/tests/functional/test_feed.py
 
kallithea/tests/functional/test_files.py
 
kallithea/tests/functional/test_followers.py
 
kallithea/tests/functional/test_forks.py
 
kallithea/tests/functional/test_home.py
 
kallithea/tests/functional/test_journal.py
 
kallithea/tests/functional/test_login.py
 
kallithea/tests/functional/test_my_account.py
 
kallithea/tests/functional/test_pullrequests.py
 
kallithea/tests/functional/test_repo_groups.py
 
kallithea/tests/functional/test_search.py
 
kallithea/tests/functional/test_summary.py
 
kallithea/tests/functional/test_tags.py
 
kallithea/tests/models/
 
kallithea/tests/models/__init__.py
 
kallithea/tests/models/common.py
 
kallithea/tests/models/test_changeset_status.py
 
kallithea/tests/models/test_diff_parsers.py
 
kallithea/tests/models/test_notifications.py
 
kallithea/tests/models/test_permissions.py
 
kallithea/tests/models/test_repo_groups.py
 
kallithea/tests/models/test_repos.py
 
kallithea/tests/models/test_user_group_permissions_on_repo_groups.py
 
kallithea/tests/models/test_user_groups.py
 
kallithea/tests/models/test_user_permissions_on_repo_groups.py
 
kallithea/tests/models/test_user_permissions_on_repos.py
 
kallithea/tests/models/test_users.py
 
kallithea/tests/other/
 
kallithea/tests/other/__init__.py
 
kallithea/tests/other/manual_test_vcs_operations.py
 
kallithea/tests/other/test_libs.py
 
kallithea/tests/other/test_mail.py
 
kallithea/tests/other/test_validators.py
 
kallithea/tests/parameterized.py
 
kallithea/tests/scripts/
 
kallithea/tests/scripts/create_rc.sh
 
kallithea/tests/scripts/manual_test_concurrency.py
 
kallithea/tests/scripts/manual_test_crawler.py
 
kallithea/tests/scripts/mem_watch
 
kallithea/tests/test.ini
 
kallithea/tests/vcs/
 
kallithea/tests/vcs/__init__.py
 
kallithea/tests/vcs/aconfig
 
kallithea/tests/vcs/base.py
 
kallithea/tests/vcs/conf.py
 
kallithea/tests/vcs/test_archives.py
 
kallithea/tests/vcs/test_branches.py
 
kallithea/tests/vcs/test_changesets.py
 
kallithea/tests/vcs/test_filenodes_unicode_path.py
 
kallithea/tests/vcs/test_getitem.py
 
kallithea/tests/vcs/test_getslice.py
 
kallithea/tests/vcs/test_git.py
 
kallithea/tests/vcs/test_hg.py
 
kallithea/tests/vcs/test_inmemchangesets.py
 
kallithea/tests/vcs/test_nodes.py
 
kallithea/tests/vcs/test_repository.py
 
kallithea/tests/vcs/test_tags.py
 
kallithea/tests/vcs/test_utils.py
 
kallithea/tests/vcs/test_utils_filesize.py
 
kallithea/tests/vcs/test_vcs.py
 
kallithea/tests/vcs/test_workdirs.py
 
kallithea/tests/vcs/utils.py
 
kallithea/websetup.py
 
setup.cfg
 
setup.py
scripts/whitespacecleanup.sh
Show inline comments
 
file renamed from whitespacecleanup.sh to scripts/whitespacecleanup.sh
setup.py
Show inline comments
 
@@ -121,6 +121,16 @@ except ImportError:
 
    from ez_setup import use_setuptools
 
    use_setuptools()
 
    from setuptools import setup, find_packages
 

	
 
# monkey patch setuptools to use distutils owner/group functionality
 
from setuptools.command import sdist
 
sdist_org = sdist.sdist
 
class sdist_new(sdist_org):
 
    def initialize_options(self):
 
        sdist_org.initialize_options(self)
 
        self.owner = self.group = 'root'
 
sdist.sdist = sdist_new
 

	
 
# packages
 
packages = find_packages(exclude=['ez_setup'])
 

	
0 comments (0 inline, 0 general)