Mise en place d’un serveur GIT via HTTP
L’objet de cette article est de mettre en place un serveur GIT et d’y accéder via le protocole HTTP
Configuration de GIT
La mise en place sous Debian, est assez simple, sur le serveur, il suffit d’installer git et d’apache :
apt-get install git apache2
Nous allons placer les repositories GIT dans le répertoire /var/www/git :
mkdir /var/www/git
Initialisation du premier repository git
Nous allons créer un repository de test : myproject !, pour cela, il faut créer le répertoire et initialiser le repository :
cd /var/www/git mkdir myproject.git cd myproject.git git --bare init
Il faut maintenant donner les droits à Apache sur les répertoires :
cd /var/www/git/myproject.git chown -R www-data.www-data .
Mettre a jour le serveur GIT :
cd /var/www/git/myproject.git git update-server-info
Git est opérationnel, il faut maintenant configurer Apache pour y accéder via HTTP
Configuration d’Apache
Pour Apache, il faut activer les modules dav et dav_fs :
a2enmod dav dav_fs /etc/init.d/apache restart
Une fois les modules activés, nous allons configurer le repository GIT, pour cela, créer un fichier : /etc/apache2/conf.d/git.conf et ajouter la configuration suivante :
<Location /git/myproject.git> DAV on AuthType Basic AuthName "Git MyProject" AuthUserFile /etc/apache2/passwd.git Require valid-user </Location>
Il faut créer le fichier /etc/apache2/passwd.git :
htpasswd -c /etc/apache2/passwd.git myUser
Redémarrer Apache, et le serveur est en place !
Configuration du client :
Sur le client, il faut un projet déjà sous GIT :
cd /home/myUser/myprojects/myproject git init git add --all git commit -m "Initial import"
Maintenant il faut envoyer les données au serveur :
cd /home/myUser/myprojects/myproject git config remote.origin.url http://myUser@<server_ip_or_name>/myproject.git/
Et voilà ! maintenant il suffit d’utiliser les commandes git pull origin, git fetch origin ou encore git push origin …
Ressources
Pour écrire cet article, je me suis largement inspiré du fichier setup-git-server-over-http.txt …

