Les interfaces web pour consulter les dépôts Git ne manquent pas. Un nouveau venu plutôt sympathique vient de faire son apparition, GitList, qui se positionne comme une version légère de GitHub, à installer localement, et reposant sur PHP/Silex plutôt que sur Ruby/Rails.

gitlist-logo.png


Présentation

Les fonctionnalités de GitList sont semblables à la majorité des autres solutions disponibles :

  • Gestion des dépôts, branches et tags multiples
  • Suivi des commits classés par jour, avec les commentaires
  • Suivi des fichiers dans leurs différentes versions
  • Exploration des fichiers des dépôts
  • Coloration syntaxique
  • Statistiques de chaque dépôt
  • Flux RSS

L'interface web, belle et fonctionnelle, peut être facilement personnalisée. Elle se base sur LESS et le moteur de template Twig.

1.jpg

Une démo complète est utilisable sur git.gofedora.com.

Le projet est bien évidemment présent sur GitHub : github.com/klaussilveira/gitlist

2.jpg


Installation

Créez le répertoire qui va contenir les fichiers de GitList, puis dans ce répertoire un nouveau répertoire de cache qui sera utilisé par GitList :

mkdir -p /var/www/gitlist/cache
cd /var/www/gitlist/

Actuellement disponible en version 0.4, récupérez les sources de GitList puis décompressez-les dans le répertoire créé juste avant :

wget https://s3.amazonaws.com/gitlist/gitlist-0.4.tar.gz
tar -xzvf gitlist-0.2.tar.gz

Pensez également à donner les permissions adéquates à ces répertoires :

chown -R www-data.www-data /var/www/gitlist
find /var/www/gitlist/ -type d -exec chmod 775 {} \;
find /var/www/gitlist/ -type f -exec chmod 664 {} \;

En fonction de la configuration de votre serveur, il sera peut-être nécessaire de donner des permissions très large au répertoire de cache, genre 777...

Voilà les fichiers en place.

Notez qu'un exemple de fichier de configuration d'un hôte virtuel pour NGinx est présent dans l'archive, une charmante attention ! Pensez juste si vous n'installez pas GitList à la racine mais dans un sous répertoire, à modifier la ligne suivante de la déclaration de l'hôte :

location @gitlist {
        rewrite ^/.*$ /index.php;
}

Pour y ajouter le sous répertoire ainsi :

location @gitlist {
       rewrite ^/.*$ /gitlist/index.php;
}

Configuration

La configuration de GitList est très simple, il suffit de renommer/copier le fichier config.ini-exemple vers config.ini :

cp config.ini-example config.ini

Puis d'éditer ce fichier pour lui indiquer quelques paramètres :

[git]
client = '/usr/bin/git' ; Your git executable path
repositories = '/home/git/repositories/' ; Path to your repositories

; You can hide repositories from GitList, just copy this for each repository you want to hide
; hidden[] = '/var/www/projects/BetaTest'

[app]
baseurl = 'http://git.domain.tld' ; Base URL of the application

; If you need to specify custom filetypes for certain extensions, do this here
[filetypes]
; extension = type
; dist = xml

Le plus important est bien sûr de préciser le chemin de vos dépôts Git avec "repositories = '/chemin/vers/depots/'". Il vous faut également indiquer l'URL qui sera utilisée pour accéder à GitList avec "baseurl = 'http://git.domain.tld'".

Une fois cela fait, en admettant que l'hôte virtuel de votre serveur web soit fonctionnel, GitList est immédiatement utilisable en vous rendant à l'adresse http://git.domain.tld.

3.jpg


Page d'erreur après chaque push

Si à chaque nouveau push sur votre dépôt Git vous obtenez l'erreur ci-dessous dans GitList :

Oops! fatal: Failed to resolve HEAD as a valid ref.

Il vous faut modifier le UMASK des fichiers créés suite à un push. Ça ce passe dans le fichier .gitolite.rc :

$REPO_UMASK = 0002;       # gets you 'rwxr-x---'

Les permissions seront alors correctes à la suite des push.

Erreur de date.timezone sur les pages de commit

Vous pouvez rencontrer l'erreur suivante lors de l'affichage de la page des commits d'un dépôt :

DateTime::__construct(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead

Si c'est le cas il suffit d'indiquer dans votre php.ini un "date.timezone" correct sous la forme :

date.timezone = Europe/Paris

Redémarrez ensuite PHP et l'erreur disparaîtra.

Et si vous avez besoin d'une interface plus complète et riche, tournez-vous sans hésiter vers GitLab !

Et pour finir avec une nouvelle du petit monde Git, sachez que GitHub dispose maintenant d'un application sur Android, à télécharger sur play.google.com.