Gitweb : Installation et configuration d'une interface web pour git
Contents
1 Introduction
Gitweb est une interface web permettant de voir tous les commits, les commentaires etc... pour git.
2 Installation
Sur Debian, c'est facile :
apt-get |
apt-get install gitweb |
3 Configuration
Personnellement, j'utilise lighttpd, mais je vais essayer de donner une configuration correcte pour apache aussi.
3.1 Serveur Web
3.1.1 Lighttpd
Si vous êtes sur Lighttpd, assurez vous que les modules serveurs suivant soient bien chargés :
- mod_cgi
- mod_redirect
Ensuite, créer un fichier pour votre configuration de lighttpd :
Puis activez ceci :
cd /etc/lighttpd/conf-enabled/ ln -s /etc/lighttpd/conf-available/50-gitweb.conf . |
Redémarrez ou reloader ensuite votre serveur lighttpd.
3.1.2 Apache
Et voici la configuration pour apache, pour ceux qui l'utilisent :
Ou bien, dans la version Squeeze de Debian, on peut trouver ceci :
/etc/apache2/conf.d/gitweb |
Alias /gitweb /usr/share/gitweb <Directory /usr/share/gitweb> Options FollowSymLinks +ExecCGI AddHandler cgi-script .cgi </Directory> |
Redémarrez ou reloader ensuite votre serveur apache.
3.1.3 Nginx
Sous Nginx, il va falloir autoriser certaines extensions dans php-fpm :
/etc/php5/fpm/pool.d/www.conf |
[...] security.limit_extensions = .php .php3 .php4 .php5 .cgi [...] |
Et voici un exemple de configuration à adapter à vos besoins :
Ensuite nous allons avoir besoin d'un wrapper cgi :
aptitude |
aptitude install fcgiwrap |
Créez le lien, puis reloadez la configuration :
cd /etc/nginx/sites-enabled ln -s /etc/nginx/sites-available/git.deimos.fr . /etc/init.d/nginx reload /etc/init.d/fcgiwrap restart /etc/init.d/php5-fpm reload |
3.2 Gitweb
Adaptez selon vos besoin ce fichier :
/etc/gitweb.conf |
# path to git projects (<project>.git) $projectroot = "/var/lib/git"; # directory to use for temp files $git_temp = "/tmp"; # target of the home link on top of all pages #$home_link <nowiki>= $my_uri || "/"; # html text to include at home page $home_text = "indextext.html"; # file with project list; by default, simply scan the projectroot dir. $projects_list = $projectroot; # stylesheet to use $stylesheet = "/gitweb.css"; # logo to use $logo = "/git-logo.png"; # the 'favicon' $favicon = "/git-favicon.png"; # change default git logo url $logo_url = "http://www.deimos.fr/gitweb"; $logo_label = "Deimos.fr Git Repository"; # This prevents gitweb to show hidden repositories $export_ok = "git-daemon-export-ok"; $strict_export = 1; # This lets it make the URLs you see in the header @git_base_url_list = ( 'git://www.deimos.fr/git' ); |
3.2.1 Restreindre les accès
Il est possible de désactiver l'accès à certains repository. Pour ce faire, activez ceci dans la configuration de gitweb :
/etc/gitweb.conf |
$export_ok = "gitweb-export-ok"; |
Puis créez ce fichier dans chaque repository que vous voulez uniquement afficher :
touch |
touch /var/cache/git/git_deimosfr.git/gitweb-export-ok |
Seuls les repository disposant de ce fichier seront affichés
3.2.2 Changer le header
Si vous souhaitez changer le header de votre gitweb, créez un fichier indextext.html à l'emplacement des cgi et insérez du code HTML :
4 Interface web
Maintenant votre serveur est accessible via l'interface web suivante http://serveur/gitweb
4.1 Thème plus sexy
Il existe un thème plus sexy que celui par défaut de gitweb. Téléchargez l'archive ici et lancez ces commandes :
Et voilà, votre nouveau thème est en place.
4.2 Intégration Piwik
Si vous souhaitez qu'il y ai une intégration avec piwik, c'est assez simple, j'ai fais un patch, à vous de modifier le code javascript a afficher dans votre page dans ce patch :
5 FAQ
5.1 Unnamed repository; edit this file to name it for gitweb.
J'ai ceci qui s'affiche au début de mon interface web, j'aimerais le changer, comment faire ?
C'est assez simple, dans votre repository git, vous avez un fichier 'description'. Editez le et mettez ce que vous souhaitez dedans.