aboutsummaryrefslogtreecommitdiffstats
mgagit is a tool used to manage Mageia git repositories.

How it works
------------

mgagit takes :
 - an ldap directory containing groups, and users with ssh keys
 - repositories and non-ldap groups definitions

And generate the corresponding gitolite configuration and keys directory.


Available commands
------------------

- glconf   : Print gitolite configuration
- glrun    : Update gitolite configuration
- showconf : Display the repos configuration in YAML. This is mainly
             useful for debugging.


Configuration
-------------

Configuration is done in the file /etc/mgagit.conf. The default
configuration is available in file /usr/share/mgagit/config.

The files are in YAML format.

The following configuration options are available :

 use_ldap:
        enable use of ldap to fetch user keys and groups

 ldapserver:
        hostname of the ldap server

 binddn:
        dn used to authenticate on the ldap server

 bindpwfile:
        file containing the password used to authenticate

 groupbase:
        the base used to search ldap groups

 groupfilter:
        filter to search ldap groups

 userbase:
        the base used to search ldap users

 userfilter:
        filter to search ldap users

 uid_username_re:
        regular expression to extract a username from ldap uid

 ldap_users_infos:
        list of ldap user attributes that we should keep available

 group_re:
        regular expression to extract group name from cn

 pubkey_dir:
        directory containing users ssh keys, used by gitolite

 tmpl_dir:
        templates directory

 www_dir:
        output directory where some files are written (repos db dump, and
        some html pages)

 gitolite_config:
        gitolite configuration file

 repodef_dir:
        directory containing repos definitions (see repos_config)

 repos_config:
        list of repos and / or group definition directories. Use
        something like this to include a directory containing repos or
        groups definitions :

    prefix:
        prefix in the repos tree. In case of git_url or include_dir,
        this is also used to indicate that the included directory
        defines repos (*.repo files).
   
    group_prefix:
        This value is prefixed to the defined group names. This is also
        used to indicate that the included directory can contain groups
        definitions (*.group files). If you don't want to have a prefix,
        but still want to define groups, set an empty string.

    git_url:
        url of a git repository containing definitions, that will be
        cloned and pulled, in 'repodef_dir'

    include_dir:
        alternatively, you can specify the path to a directory
        containing definitions (if it's not from a git repository,
        or if you don't want to be pulled automatically)

    gl_template:
        template file used to define the repos


Template variables
------------------

The following variables are available in all templates :

    config:
        The general config

    r:
        The repos, groups and users definitions

The following variables are available in repo definition templates :

    repo:
        The repo name

    repo_conf:
        A function to get the value of some configuration option, for
        the current repo. It will first try to get it from the repo
        specific configuration, and if not defined will return the
        configuration from the repo definition origin, or the main
        configuration.

    origin_conf:
        This is the same as repo_conf, except that it will skip the repo
        specific configuration. You will use this function when you
        don't want the option to be overriden by the repo definition.