BLOG

Mise en place d'un serveur proposant des repositories git via HTTP

 

Pour cet article, je suppose que vous avez un serveur nommé git.dev, et qu'il est installé sous debian. Nous allons voir comment mettre en place des repositories git accéssible via http par l'adresse http://git.dev/repositories

 

Mise en place du repository git

Pour commencer, installons git et apache

$ apt-get install git apache2

 

On créé un répertoire pour stocker repositories gits, que nous rendrons accéssibles via apache (pour la démo est va les mettre dans des répertoire accéssible de base par apache:

$ mkdir /var/www/git/repositories

 

On créé un premier dépot:

$ cd /var/www/git/repositories
$ mkdir myproject.git
$ cd myproject.git
$ git --bare init
$ git update-server-info
$ cd /var/www/git/repositories
$ chown -R www-data.www-data .

 

Configuration d'apache

Ajout du module dav à apache. Le module dav prends en charge l'écrire sur le serveur de fichier via http:

$ a2enmod dav dav_fs
$ /etc/init.d/apache restart

 

Mise en place d'un vhost pour l'accès au repositories git:


        ServerName git.dev
        ServerAdmin 
        DocumentRoot /var/www/git/


        
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        

        SetEnv GIT_PROJECT_ROOT /var/www/git/
        SetEnv GIT_HTTP_EXPORT_ALL

        ScriptAlias / /usr/lib/git-core/git-http-backend/
        AliasMatch ^/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$ /var/www/git/$1
        AliasMatch ^/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /var/www/git/$1



        ScriptAliasMatch \
        "(?x)^/(.*/(HEAD | \
        info/refs | \
        objects/(info/[^/]+ | \
        [0-9a-f]{2}/[0-9a-f]{38} | \
        pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
        git-(upload|receive)-pack))$" \
        /usr/lib/git-core/git-http-backend/$1

        
                DAV on
                Options +ExecCGI Indexes FollowSymLinks MultiViews
                Order allow,deny
                allow from all
        

 

Et  voilà votre git est accessible via: http://git.dev/repositories/myproject.git

 

Maintenant il ne vous reste plus qu'à cloner votre projet:

$ git clone http://git.dev/repositories/myproject.git

 

Et voilà vous pouvez travailler à plusieurs sans riquer de perdre des données !!!

 

VOUS AVEZ UN PROJET ?

Nous sommes à votre écoute pour le mettre en place (...)