Pour ajouter un nouveau dépôt Git à ceux gérés par Gitolite, il faut avoir accès au dépôt gitolite-admin.git. L'opération se fait en modifiant ce dernier, et ne nécessite en aucun cas d'ouvrir un shell sur bulbe.

Des précisions sont disponibles en anglais dans la documentation de Gitolite.

Création d'un dépôt

Il s'agit de créer un nouvel enregistrement de cette forme, dans conf/gitolite.conf :

repo foo
    RW = @bar some_user
    R  = some_other_user

Plus d'informations sur la syntaxe utilisée pour spécifier les droits d'accès.

Mettre en place un accès public

Si le dépôt doit être accessible publiquement, il est nécessaire d'effectuer les opérations suivantes :

mkdir /srv/http/$REPOSITORY.git
chown git:website /srv/http/$REPOSITORY.git
chmod 775 /srv/http/$REPOSITORY.git
sudo -u git -s
cd /srv/http/$REPOSITORY.git
git init --bare --shared=world
mv hooks/post-update.sample hooks/post-update
chmod +x hooks/post-update
hooks/post-update
git config gitweb.url https://nos-oignons.net/$REPOSITORY.git
git config --add gitweb.url ssh://git@bulbe.nos-oignons.net/$REPOSITORY.git
git config gitweb.owner 'Nos oignons'

mkdir /srv/git/.gitolite/hooks/$REPOSITORY

On va ensuite créer un nouveau fichier /srv/git/.gitolite/hooks/$REPOSITORY/post-update contenant :

#!/bin/sh

set -e

umask 002

# Update public Git repository
git push public --all

On reprend nos commandes :

chmod +x /srv/git/.gitolite/hooks/$REPOSITORY/post-update
ln -s ../../../.gitolite/hooks/$REPOSITORY/post-update /srv/git/repositories/$REPOSITORY.git/hooks
cd /srv/git/repositories/$REPOSITORY.git
git remote add public /srv/http/$REPOSITORY.git
hooks/post-update

Pour que le dépôt soit accessible par Gitweb, il faut ajouter un lien symbolique (en root) :

ln -s /srv/http/$REPOSITORY.git /var/cache/git

Il faut également penser à mettre du contenu intéressant dans le fichier /srv/http/$REPOSITORY.git/description.

La toute dernière opération est l'accès par Nginx. Pour cela, on va modifier /etc/nginx/sites-available/https pour ajouter une section telle que :

location /nouveau-depot.git {
    alias /srv/http/nouveau-depot.git;
}

Suppression d'un dépôt

Lors de la suppression d'un dépôt, il est nécessaire d'avoir un shell sur bulbe. Attention, cette opération efface les données relatives au dépôt en question présentes sur bulbe.

  1. Dans le dépôt gitolite-admin, retirer le dépôt du fichier conf/gitolite.conf. Il s'agit de retirer l'enregistrement commençant par repo foo, mais également de s'assurer que foo ne figure plus dans un groupe de dépôts.

  2. Comettre et pousser la modification.

  3. Effacer le dossier /srv/git/repositories/foo.git. Attention, lors de cette opération, les données sont réellement effacées.