Gitolite

Installation de Gitolite, version AdminSys

Présentation

L'idée est d'installer un petit gitolite chez soi pour pouvoir gérer son code. On va partir du constat suivant:

  • On veut toujours utiliser un maximum notre gestionnaire de packet
  • On veut pouvoir mettre notre dépot sur un media dédié (ie on utilise pas le chemin de conf par défaut)

Installation

Pour installer gitolite:

  • Créer un utilisateur git, avec un shell bash, et un home à l'endroit ou vous voulez mettre la racine de vos dépots
  • Apt-ger intall gitolite3 (depuis les backports). Lors de l'installe, vous n'initialisez pas le packet (autrement dit, vous ne renseignez pas votre clé d'admin publique), et vous faites anuler
    • Créez le home de l'utilisateur git, ansi que le dossier .ssh et vous y mettez la clé publique de votre compte desktop. Il ne faut pas directement le rajouter dans le authorized_keyx, c'est gitolite qui s'en occupera plus tard.
  • Vous mettez les bons croits sur le home de git chown git:git -R /home/de/git
  • Vous vous connectez avec l'user git: su - git
  • On initalise la configuration de gitolite:gitolite setup -pk .ssh/jezu.pub. Il faut que ce soit une clé publique, et que le nom du fichier se termine par .pub. Le nom du fichier étant votre login finale. Normalement, il vous met:
    Initialized empty Git repository in /srv/sto_code/git/repositories/gitolite-admin.git/
    Initialized empty Git repository in /srv/sto_code/git/repositories/testing.git/
    WARNING: /srv/sto_code/git/.ssh/authorized_keys missing; creating a new one
    
    • On a donc deux repos de crées, un d'admin, et un de test. Tout est normalement prêt, on a plus besoin de faire d'admin sys coté serveur

Initialisation

  • Depuis votre desktop, on se connecte au repo d'admin:
    git clone git@voodoo:/gitolite-admin
    (On note que l'on utilise un répertoire absolu. C'est grace à gitolite
  • Le repo contient quelques fichiers de conf:
    tree /tmp/git/gitolite-admin/
    /tmp/git/gitolite-admin/
    |-- conf
    |   `-- gitolite.conf
    |-- gitolite.conf
    `-- keydir
        `-- jezu.pub
    
    2 directories, 3 files
    

Modification de la conf

Une fois que l'on a modifié notre conf, il faut la repousser sur le serveur:
roc@awh-roc:~/git-new/gitolite-admin$ git add -A
roc@awh-roc:~/git-new/gitolite-admin$ git commit -m "Création initiale des repos"
roc@awh-roc:~/git-new/gitolite-admin$ git push origin

Et c'est bon.

Interface web

Je recommande gitlist pour un accès en lecture seule. C'est du php, et tout le monde aime bien le php. il faudra noter les points suivants:

  • Par défault, gitolite utilise un umask en 077, ce qui ne conviendra pas. Il faut modifier ce umask en 007, et rajouter le groupe www-data dans le groupe git (ou vice-versa). Si vous avez des données confidentielles, il faut peut-etre mieux utiliser de l'Apache ITK.
  • Gitlist ne gère pas du tout les ACL de gitolite (ce qui pourrait être interressant à implémenter). Il faut donc tout gérer par htaccess. Ce que je fais, c'est que je fais un sous dossier priv/ et /pub dans lequel j'applique des restriction via le LocationMatch (ou DirectoryMatch). On peut créer un répertoire par utilisateur aussi.
Page last modified on December 11, 2013, at 02:16 PM EST