Gitweb interface sous debian

22 July 2014

Ce tutoriel a été écrit en suivant les instructions de la documentation officielle de git.

Si vous n’avez pas de serveur git d’installé, vous pouvez lire mon précédent post à ce sujet : Mise en place d’un serveur git sous debian.

Compiler et déployer gitweb interface

Dans la suite du post, je supposerais que le répertoire d’installation des repositories de votre serveur git est /home/git et que le DocumentRoot de votre interface web sera le dossier /var/www/gitweb

Sur votre serveur, installer gitweb :

$ cd /opt
$ git clone git://git.kernel.org/pub/scm/git/git.git
$ make GITWEB_PROJECTROOT="/home/git" gitweb
$ make gitwebdir=/var/www/gitweb install-gitweb

Vous devriez voir un répertoire /var/www/gitweb contenant les fichiers suivants :

$ cd /var/www/gitweb
$ ls
gitweb.cgi  static

Configurer apache

Je suppose que vous utilisez apache en mode virtualhost.

Assurez vous que le mode cgi pour apache est activé :

a2enmod cgi

Ajouter un virtualhost pour votre interface gitweb :

$ vim /etc/apache2/site-available/gitweb.conf
<VirtualHost *:80>
    ServerName yourhostname

    DocumentRoot /var/www/gitweb

    <Directory "/var/www/gitweb">
        Options Indexes FollowSymlinks ExecCGI
        AddHandler cgi-script .cgi .pl
        DirectoryIndex gitweb.cgi
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error-gitweb.log
    CustomLog /var/log/apache2/access-gitweb.log combined
</VirtualHost>

Activer le virtualhost et redémarrez apache.

$ cd /etc/apache2/site-enabled
$ ln -s ../site-available/gitweb.conf
$ service apache2 restart

Rendez vous avec votre navigateur sur votre hostname : http://yourgitwebhostname. Vous devriez voir l’interface gitweb avec la liste de vos projets.

Troubleshooting

L’interface gitweb ne trouve pas vos projets :

  • gitweb ne trouve pas l’exécutable git : Editer /var/www/gitweb/gitweb.cgi et modifier:
    our $GIT = "git"
    
  • gitweb ne trouve pas le dossier contenant vos repositories : Editer /var/www/gitweb/gitweb.cgi et modifier:
    our $projectroot = "/home/git";
    our $projects_list = $projectroot;
    
  • gitweb exécuté par votre serveur web n’a pas les droits en lecture sur vos repositories. Ajouter l’utilisateur www-data au groupe git (ou tout autre groupe du répertoire contenant vos dépôts).
$ usermod -aG git www-data

Attention à bien vérifier que vos repositories ont les bons droits :

$ chown git:git /home/git -R
$ chmod ug+rx /home/git -R

Conclusion

Vous avez désormais une interface web permettant de naviguer rapidement parmi vos dépôts git. Elle reste très light. Si vous avez de plus gros besoins en administration sous forme d’interfaces ou que vous trouvez cette interface trop légère graphiquement, plusieurs alternatives listées sur le site de git existent : Liste des interfaces web git

Notez que nous n’avons pas sécurisé cette interface, cette dernière à travers un vhost apache, vous êtes libre de rajouter une authentification et un certificat SSL.