Sélectionner une page

Après avoir vu comment utiliser Gitosis sur un serveur pour y centraliser ses dépôts de source pour vos projets, nous allons voir comment mettre à jour automatiquement votre serveur de développement via les hooks de GIT.

En effet, il nous est souvent demandé de pouvoir mettre à jour automatiquement les sources de la version de développement à chaque push d’un développeur. Pour cela, nous allons utiliser 2 outils très utiles : sudo (qui permet à GIT de se faire passer pour votre compte web) et les hooks de GIT (qui permettent de déclencher une action à chaque push).

Pour cela, on procède ainsi :
Créer un script /usr/local/bin/pullhere comme suit :

#!/bin/sh
cd "$1"
git pull

Rendez-le exécutable via

chmod a+x /usr/local/bin/pullhere

modifier sudo pour permettre à l’utilisateur de Gitosis d’utiliser cette commande en tant que www-data.
Pour cela, en lançant visudo ajoutez la ligne :

git  ALL = (www-data) NOPASSWD: /usr/local/bin/pullhere

Ensuite, dans chaque dépôt où cela est nécessaire, ajoutez le hook suivant dans un fichier post-receive :

sudo -u www-data /usr/local/bin/pullhere /html/u/user/here

Par exemple : dans /home/git/repositories/projet1.git/hooks/post-receive

Attention : ce dossier (hooks) contient un exemple nommé « post-receive.sample » ce n’est pas ici qu’il faut créer votre ligne sudo, mais bien dans post-receive tout court (créez-le si besoin)

Enfin, rendez ce fichier exécutable comme suit :

chmod a+x  /home/git/repositories/projet1.git/hooks/post-receive

Ainsi, à chaque fois qu’un utilisateur effectuera un push sur ce dépôt GIT dans Gitosis, un pull sera automatiquement effectué dans le dossier web de votre site de développement.

Dernière étape, il faut effectuer le clonage de votre GIT à l’endroit du site de développement (ici /html/u/user/here) pour cela, on procède ainsi :

cd /html/u/user/here
git clone /home/git/repositories/projet1.git