Git: Configuriamo Gitweb

Questa guida descrive i passi necessari per configurare Gitweb il front-end web-based di Git. Gitweb è sviluppato in Perl5 e permette in modo facile di esplorare tutto il contenuto dei propri repository Git, visionare i log ed history dei file, effettuare ricerche e scaricare snapshots.

Come primo passo assicuriamoci di avere Gitweb installato sulla nostra macchina. Generalmente Gitweb è incluso nel pacchetto Git (come ad esempio in Slackware) mentre per le altre distribuzioni può essere necessario installarlo a mano.

Con il nostro editor di testo preferito, editiamo il file /etc/gitweb.conf e modifichiamo (o creiamo) la variabile $projectroot che servirà per indicare a Gitweb la directory di “root” contenente i nostri repository. Ad esempio:

our $projectroot = "/srv/git";

Il file /etc/gitweb.conf oltre a indicare la directory di nostri repository può essere utilizzato per configurare diversi aspetti funzionali e visivi di Gitweb.

Editiamo il file httpd.conf ed aggiungiamo le seguenti righe per abilitare Gitweb:

Da inserire in httpd.conf:

<Directory "/srv/httpd/htdocs/git">
  DirectoryIndex gitweb.cgi
  Allow from all
  AllowOverride all
  Order allow,deny
  Options ExecCGI
  <Files gitweb.cgi>
    SetHandler cgi-script
  </Files>
</Directory>

Aggiungiamo l'autenticazione

Per aumentare la sicurezza dei nostri repository su Gitweb possiamo richiedere un'autenticazione per accedervi. Un modo semplice è creare un autenticazioine di tipo Basic con Apache.

Creiamo con htpasswd il file che conterrà le credenziali di acesso a Gitweb:

$ htpasswd -p /srv/git/.gitweb-htpasswd <username> <password>

Aggiungiamo alla configurazione su Apache queste direttive:

<Directory "/srv/httpd/htdocs/git">
   [...]
   AuthType Basic
   AuthName "Git"
   AuthUserFile /srv/git/.gitweb-htpasswd
   Require valid-user
   [...]
</Directory>

Syntax Highlighting

Per abilitare la “sintassi colorata” in Gitweb è necessario installare il pacchetto highlight ed aggiungere la seguente riga nel file /etc/gitweb.conf:

$feature{'highlight'}{'default'} = [1];