Visualizando los repositorios Git mediante GitWeb

GitWeb es una aplicación web que permite visualizar los repositorios Git publicados en un servidor.
En este tutorial se muestra la configuración de GitWeb compatible con las instalaciones desarrolladas en Cómo instalar un servidor Git sobre Nginx e Instalar servidor para el protocolo Git. Esto quiere decir que los usuarios que posean credenciales válidas para el servidor podrán acceder a la consulta de la totalidad de los repositorios mediante la URL https://crossforests.com/gitweb mientras que el resto de los usuarios podrá consultar únicamente los repositorios públicos mediante la URL https://crossforests.com/gitweb (nótese que en un caso se utiliza el protocolo seguro HTTPS mientras que en el otro el acceso es vía HTTP) como se muestra en el ejemplo a continuación:

Instalación de GitWeb

En servidores Debian la instalación de GitWeb se reduce a la ejecución del comando apt‑get:

# apt-get install gitweb

Configuración de datos estáticos

Para facilitar el acceso a los datos estáticos del servicio web se copian los datos de usr/share/gitweb/static a /var/local/static/gitweb:

# mkdir -p /var/local/static/gitweb
# cd /var/local/static/gitweb
# cp /usr/share/gitweb/static/* .
# chgrp -R www-data /var/local/static
# chmod -R g+r /var/local/static

Entre los datos estáticos ubicados en /var/local/static/gitweb se encuentran la imágenes git-favicon.png y git-logo.png que se corresponden con el favicon a mostrar en las pestañas del navegador y el icono a mostrar en la esquina superior derecha de las imágenes.

Utilizando el editor de gráficos Gimp he creado mi propia versión de cada una de estas imágenes respetando el formato y tamaño de los originales que he denominado git-favicon-ex.png y git-logo-ex.png.

Configuración de Gitweb

Configuración para los repositorios privados

La configuración del servicio GitWeb para los repositorios privados se encuentra en el fichero /etc/gitweb.conf:

# path to git projects (.git)
$projectroot = "/var/local/git";

# directory to use for temp files
$git_temp = "/tmp";

# target of the home link on top of all pages
#$home_link = $my_uri || "/gitweb";

# 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
@stylesheets = ("/static/gitweb/gitweb.css");

# javascript code for gitweb
$javascript = "/static/gitweb/gitweb.js";

# logo to use
$logo = "/static/gitweb/git-logo-ex.png";

# the 'favicon'
$favicon = "/static/gitweb/git-favicon-ex.png";

# git-diff-tree(1) options to use for generated patches
#@diff_opts = ("-M");
@diff_opts = ();

$site_name = "Example Git Repositories";
$projects_list_description_width = 80;
@git_base_url_list = ("https://example.org/git");
@extra_breadcrumbs = ([ 'Example Site' => 'https://example.org' ]);
$logo_url = "https://example.org";
$logo_label = "Example home site";

Configuración de repositorios públicos

La configuración del servicio GitWeb para los repositorios privados se encuentra en el fichero /etc/gitweb_pub.conf:

# path to git projects (.git)
$projectroot = "/var/local/git/pub";

# directory to use for temp files
$git_temp = "/tmp";

# target of the home link on top of all pages
#$home_link = $my_uri || "/gitweb";

# 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
@stylesheets = ("/static/gitweb/gitweb.css");

# javascript code for gitweb
$javascript = "/static/gitweb/gitweb.js";

# logo to use/static
$logo = "/static/gitweb/git-logo-ex.png";

# the 'favicon'
$favicon = "/static/gitweb/git-favicon-ex.png";

# git-diff-tree(1) options to use for generated patches
#@diff_opts = ("-M");
@diff_opts = ();

$site_name = "Example Git Repositories";
$projects_list_description_width = 80;
@git_base_url_list = ("http://example.org/git");
@extra_breadcrumbs = ([ 'Example Site' => 'http://example.org' ]);
$logo_url = "http://example.org";
$logo_label = "Example home site";

Configuración de Nginx

Configuración del servicio HTTPS

Primeramente se crea el fichero /etc/nginx/global/gitweb_params.conf que configura los parámetros para uso del servicio gitweb:

root /var/local;

auth_basic "Gitweb users";
auth_basic_user_file	/var/local/git/.htpasswd;

fastcgi_pass  unix:/var/run/fcgiwrap.socket;
fastcgi_param SCRIPT_FILENAME   /usr/share/gitweb/gitweb.cgi;
fastcgi_param PATH_INFO         $1;
fastcgi_param GITWEB_CONFIG     /etc/gitweb.conf;
include fastcgi_params;

Para configurar el servicio, se accede al fichero de configuración correspondiente a la URL (generalmente /etc/nginx/sites‑enabled/default) y, dentro de la sección server correspondiente al protocolo HTTPS, se incluyen dos secciones location, una para los path que comiencen con /gitweb, que ejecutará el servicio de GitWeb en sí, y otra para los paths que comiencen con /static/gitweb, que simplemente servirá los contenidos estáticos del servicio como se muestra a continuación:

server {

	# SSL configuration
	#
	listen 443 ssl default_server;
	server_name example.org;
        ssl                  on;

        ...

	# Git web dinamyc data
	location /gitweb {
		include	global/gitweb_params.conf;
	}

	# Git web static data
	location ^~ /static/gitweb {
		root	/var/local;
	}

        ...

}

Configuración del servicio HTTP

Primeramente se crea el fichero /etc/nginx/global/gitweb_pub_params.conf que configura los parámetros para uso del servicio gitweb para los repositorios de acceso público:

root /var/local;

fastcgi_pass  unix:/var/run/fcgiwrap.socket;
fastcgi_param SCRIPT_FILENAME   /usr/share/gitweb/gitweb.cgi;
fastcgi_param PATH_INFO         $1;
fastcgi_param GITWEB_CONFIG     /etc/gitweb_pub.conf;
include fastcgi_params;

Para configurar el servicio, se accede al fichero de configuración correspondiente a la URL (generalmente /etc/nginx/sites‑enabled/default) y, dentro de la sección server correspondiente al protocolo HTTP, se incluyen dos secciones location, una para los path que comiencen con /gitweb, que ejecutará el servicio de GitWeb en sí, y otra para los paths que comiencen con /static/gitweb, que simplemente servirá los contenidos estáticos del servicio como se muestra a continuación:

server {

        listen   80 default_server;
        # default treatment for common addresses
        server_name example.org;

        ...

	# Git public service web pages
	location /gitweb {
		include	global/gitweb_pub_params.conf;
	}

	# Git web static data
	location ^~ /static/gitweb {
		root	/var/local;
	}

        ...

}

 

José Administrator
Apasionado por el software, la electrónica y la fotografía.
follow me

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *