Installer son propre serveur git – Partie 2

- Auto-hébergement

Attention : cet article date de 2012 et son contenu peut ne plus être à jour.
Si vous voulez installer un serveur git, cet article plus récent vous intéressera.

Il y a un peu plus de trois mois (que le temps passe vite), je vous expliquais comment créer un serveur capable de stocker et partager des dépôts git. Mais nous avons mis en place un système qui n'est utilisable uniquement à partir de la console.
Aujourd'hui, nous allons toujours utiliser la console afin de faire des installations mais le résultat final s'utilisera cette fois dans un navigateur...

Dans la première partie de l'installation d'un serveur Git nous avons vu comment installer un serveur Git sur son propre serveur. Pour rappel, il y a deux moyens d'installer son serveur :

Quel est l'objectif de cette partie ?

Dans cette seconde partie du tutorial, nous allons tout simplement mettre en place une webapp qui permettra d'accéder facilement à ses dépots à partir d'un navigateur.
En effet, avec Github, bitbucket, ou encore Assembla il est possible d'accéder facilement au contenu de ces dépots ce qui est extrêmement pratique si l'on ne veut pas ou si l'on ne peut pas télécharger un dépôt sur une machine.

Pour quelles contraintes ?

Comme je suis auto-hébergé, je ne dispose pas d'une machine puissante, donc il me faut un système qui ait le moins de dépendances possible, qui soit le plus léger possible afin de ne pas surcharger la machine et surtout je veux mettre en place une webapp qui est maintenue (mine de rien cela a son importance pour moi).
Pour faire simple, je ne veux pas installer de nouvelles dépendances pour faire fonctionner ma webapp, donc je ne me suis pas tourné vers une solution en ruby, par exemple Gitorious.

Ces contraintes étant particulièrement fortes, je n'ai pas identifié beaucoup de solutions pouvant convenir, seulement deux !

Deux solutions disponibles, une seule retenue

Ces deux alternatives sont uniquement le fruit de mes recherches sur l'ami Google. Il est tout à fait possible qu'il existe de meilleur solution et je serai ravi de les connaitre. Voici les deux solutions que j'ai testées avant de faire mon choix !

gitweb

gitweb est un projet en python 2.6, qui est simple à installer (un apt-get suffit) mais qui nécessite de fonctionner avec CGI sur votre serveur web. La capture suivante utilise un thème qui permet de le faire ressembler à Github, ce qui n'est pas désagréable.
Le script gitweb était utilisé pour afficher les commits des kernels Linux, mais ce n'est plus le cas aujourd'hui...

L'interface tweakée de gitweb
L'interface "améliorée" de gitweb

Cette solution me semblait pas mal, mais les performances n'étaient pas au rendez-vous. En effet, la génération des pages prenait entre 2 et 5 secondes qui est beaucoup trop pour moi !

viewgit

viewgit est un script PHP qui du coup très simple à installer et qui est très rapide. En effet, la navigation dans le code est beaucoup plus fluide que sur gitweb. En revanche l'interface laisse un peu à désirer, mais c'est secondaire...

L'interface de viewgit
L'interface "améliorée" de GitWeb

Au final, c'est viewgit que j'ai choisi de garder principalement à cause des performances et parce que je parle d'avantage le PHP que le Python.

Conclusion

Installer son propre serveur git n'est pas très compliqué, je n'ai pas traité la partie de l'installation du service et de la sécurité. Pour l'installation, cela me paraissait tellement évident que je n'ai pas jugé la faire.
Pour ce qui est de la sécurité, sachez que si vous voulez garder votre code privé il sera nécessaire de vous pencher sur cette problématique.