gitweb: en línea en la nube

Este es el comando gitweb que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


gitweb: interfaz web de Git (interfaz web para repositorios de Git)

SINOPSIS


Para comenzar con gitweb, ejecute git-instaweb(1) desde un repositorio de Git. Esto sería
configure e inicie su servidor web, y ejecute el navegador web apuntando a gitweb.

DESCRIPCIÓN


Gitweb proporciona una interfaz web para los repositorios de Git. Sus caracteristicas incluyen:

· Visualización de múltiples repositorios de Git con raíz común.

· Examinar cada revisión del repositorio.

· Ver el contenido de los archivos en el repositorio en cualquier revisión.

· Ver el registro de revisión de las ramas, el historial de archivos y directorios, ver lo que fue
cambiado cuando, por quien.

· Ver los detalles de la culpa / anotación de cualquier archivo (si está habilitado).

· Generación de feeds RSS y Atom de confirmaciones, para cualquier rama. Los feeds son
auto-detectable en navegadores web modernos.

· Ver todo lo que se cambió en una revisión y recorrer las revisiones una por una
tiempo, viendo el historial del repositorio.

· Encontrar confirmaciones cuyos mensajes de confirmación coincidan con el término de búsqueda dado.

See http://git.kernel.org/? p = git / git.git; a = árbol; f = gitweb or
http://repo.or.cz/w/git.git/tree/HEAD: / gitweb / para el código fuente de gitweb, navegado usando
gitweb en sí.

CONFIGURACIÓN


Se pueden controlar varios aspectos del comportamiento de gitweb a través del archivo de configuración
gitweb_config.perl or /etc/gitweb.conf. Consulte las gitweb.conf(5) para obtener más detalles.

Repositorios
Gitweb puede mostrar información de uno o más repositorios de Git. Estos repositorios deben
estar todos en el sistema de archivos local, y tener que compartir la raíz del repositorio común, es decir, estar todos bajo un
repositorio principal único (pero consulte también la sección "Configuración avanzada del servidor web", "Servidor web
configuración con la subsección "raíz" de varios proyectos).

nuestro $ projectroot = '/ ruta / al / directorio / padre /';

El valor predeterminado para $ projectroot es / pub / git. Puedes cambiarlo durante la construcción de gitweb
a través de la variable de configuración de compilación GITWEB_PROJECTROOT.

De forma predeterminada, todos los repositorios de Git en $ projectroot están visibles y disponibles para gitweb.
La lista de proyectos se genera de forma predeterminada al escanear el directorio $ projectroot para
Repositorios de Git (para que las bases de datos de objetos sean más exactos; gitweb no está interesado en un
área de trabajo, y es más adecuado para mostrar repositorios "desnudos").

El nombre del repositorio en gitweb es la ruta a su $ GIT_DIR (su base de datos de objetos)
en relación con $ projectroot. Por lo tanto, el repositorio $ repo se puede encontrar en
"$ projectroot / $ repo".

Proyectos lista presentar formato
En lugar de que gitweb encuentre repositorios escaneando el sistema de archivos a partir de
$ projectroot, puede proporcionar una lista pregenerada de proyectos visibles configurando
$ project_list para apuntar a un archivo de texto sin formato con una lista de proyectos (con algunos
información).

Este archivo utiliza el siguiente formato:

· Un registro (para proyecto / repositorio) por línea; no admite continuación de línea
(nueva línea de escape).

· Se ignoran los espacios en blanco iniciales y finales.

· Campos separados por espacios en blanco; cualquier tramo de espacio en blanco se puede utilizar como separador de campo
(reglas para "split (" ", $ line)" de Perl).

· Los campos utilizan codificación URI modificada, definida en RFC 3986, sección 2.1 (Codificación porcentual),
o más bien "Codificación de la cadena de consulta" (consulte
http://en.wikipedia.org/wiki/Query_string#codificaciónURL_), la diferencia es que SP
("") se puede codificar como "+" (y, por lo tanto, "+" también tiene que estar codificado en porcentaje).

Los caracteres reservados son: "%" (utilizado para codificar), "+" (se puede utilizar para codificar ESPACIO),
todos los caracteres de espacio en blanco como se define en Perl, incluidos SP, TAB y LF, (utilizado para
campos separados en un registro).

· Los campos actualmente reconocidos son:


ruta al repositorio GIT_DIR, relativa a $ projectroot


se muestra como propietario del repositorio, preferiblemente nombre completo o correo electrónico, o ambos

Puede generar el archivo de índice de la lista de proyectos utilizando la acción project_index (la TXT enlace
en la página de lista de proyectos) directamente desde gitweb; ver también "Generar lista de proyectos usando
gitweb "a continuación.

Contenido de ejemplo:

foo.git Joe + R + Hacker +joe@ejemplo.com>
foo / bar.git O + W + Ner +propietario@ejemplo.org>

De forma predeterminada, este archivo controla solo qué proyectos se Visible en la página de lista de proyectos (nota
que las entradas que no apuntan a repositorios de Git reconocidos correctamente no se mostrarán
por gitweb). Incluso si un proyecto no está visible en la página de lista de proyectos, puede verlo
no obstante, creando a mano una URL de gitweb. Estableciendo la configuración de $ estricta_exportación
variable (ver gitweb.conf(5)) al valor real, puede permitir la visualización solo de repositorios
también se muestra en la página de descripción general (es decir, solo los proyectos enumerados explícitamente en la lista de proyectos
será accesible el archivo).

Generación proyecta lista usando gitweb
Suponemos que GITWEB_CONFIG tiene su valor Makefile predeterminado, a saber gitweb_config.perl.
Pon lo siguiente en gitweb_make_index.perl archivo:

read_config_file ("gitweb_config.perl");
$ lista_proyectos = $ projectroot;

Luego cree el siguiente script para obtener la lista de proyectos en el formato adecuado para
Variable de configuración de compilación GITWEB_LIST (o variable $ projects_list en la configuración de gitweb):

#!/ Bin / sh

exportar GITWEB_CONFIG = "gitweb_make_index.perl"
exportar GATEWAY_INTERFACE = "CGI / 1.1"
exportar HTTP_ACCEPT = "* / *"
exportar REQUEST_METHOD = "GET"
exportar QUERY_STRING = "a = project_index"

perl - /var/www/cgi-bin/gitweb.cgi

Ejecute este script y guarde su salida en un archivo. Este archivo podría usarse como proyectos
list, lo que significa que puede establecer $ projects_list en su nombre de archivo.

Controlador de la máquina a Git repositorios
De forma predeterminada, todos los repositorios de Git en $ projectroot están visibles y disponibles para gitweb.
Sin embargo, puede configurar cómo gitweb controla el acceso a los repositorios.

· Como se describe en la sección "Formato de archivo de lista de proyectos", puede controlar qué proyectos
están Visible mediante la inclusión selectiva de repositorios en el archivo de lista de proyectos y la configuración
$ projects_list variable de configuración de gitweb para apuntar a ella. Con $ estricto_exportación establecido,
El archivo de lista de proyectos se puede utilizar para controlar qué repositorios se Estar Disponible .

· Puede configurar gitweb para que solo enumere y permita la visualización de los archivos exportados explícitamente.
repositorios, a través de la variable $ export_ok en el archivo de configuración de gitweb; ver gitweb.conf(5)
página de manual. Si se evalúa como verdadero, gitweb muestra repositorios solo si este archivo nombrado por
$ export_ok existe en su base de datos de objetos (si el directorio tiene el archivo mágico llamado
$ export_ok).

Por ejemplo: demonio git(1) de forma predeterminada (a menos que se utilice la opción --export-all) permite
tirando solo para aquellos repositorios que tienen git-daemon-exportar-ok expediente. Añadiendo

nuestro $ export_ok = "git-daemon-export-ok";

hace que gitweb muestre y permita el acceso solo a aquellos repositorios que se pueden obtener de
a través del protocolo git: //.

· Finalmente, es posible especificar una subrutina perl arbitraria que se llamará
para cada repositorio para determinar si se puede exportar. La subrutina recibe un
ruta absoluta al proyecto (repositorio) como su único parámetro (es decir,
"$ projectroot / $ proyecto").

Por ejemplo, si usa mod_perl para ejecutar el script y tiene un protocolo HTTP tonto
autenticación configurada para sus repositorios, puede utilizar el siguiente enlace para
permitir el acceso solo si el usuario está autorizado para leer los archivos:

$ export_auth_hook = sub {
use Apache2 :: SubRequest ();
use Apache2 :: Const -compile => qw (HTTP_OK);
my $ ruta = "$ _ [0] / HEAD";
my $ r = Apache2 :: RequestUtil-> solicitud;
my $ sub = $ r-> lookup_file ($ ruta);
return $ sub-> nombre de archivo eq $ ruta
&& $ sub-> status == Apache2 :: Const :: HTTP_OK;
};

Por repositorio gitweb configuración
Puede configurar repositorios individuales que se muestran en gitweb creando un archivo en el GIT_DIR
del repositorio de Git, o estableciendo alguna variable de configuración del repositorio (en GIT_DIR / config, consulte nuestra página,
git-config(1)).

Puede utilizar los siguientes archivos en el repositorio:

README.html
Un archivo html (fragmento HTML) que se incluye en la página de "resumen" del proyecto gitweb
dentro elemento de bloque. Puede utilizarlo para una descripción más detallada de un proyecto, para
proporcionar enlaces (por ejemplo, a la página de inicio del proyecto), etc. Esto se reconoce solo si XSS
la prevención está desactivada ($ prevent_xss es falso, consulte gitweb.conf(5)); una forma de incluir un
README de forma segura cuando la prevención XSS está activada puede resolverse en el futuro.

descripción (o gitweb.description)
Corto (abreviado a $ projects_list_description_width en la página de lista de proyectos, que
tiene 25 caracteres por defecto; ver gitweb.conf(5)) descripción de una sola línea de un proyecto
(de un repositorio). Archivo de texto sin formato; HTML se escapará. Por defecto establecido en

Repositorio sin nombre; edite este archivo para nombrarlo para gitweb.

de la plantilla durante la creación del repositorio, normalmente instalado en
/ usr / share / git-core / templates /. Puede usar la configuración del repositorio gitweb.description
variable, pero el archivo tiene prioridad.

categoría (o gitweb.category)
Categoría de línea única de un proyecto, utilizada para agrupar proyectos si
$ projects_list_group_categories está habilitado. Por defecto (archivo y configuración
variable ausente), los proyectos no categorizados se colocan en $ project_list_default_category
categoría. Puede utilizar la variable de configuración del repositorio gitweb.category, pero el archivo
toma precedencia.

Las variables de configuración $ projects_list_group_categories y
$ project_list_default_category se describen en gitweb.conf(5)

cloneurl (o gitweb.url de varios valores)
Archivo con URL de repositorio (utilizado para clonar y recuperar), uno por línea. Mostrado en el
página de resumen del proyecto. Puede usar la configuración del repositorio gitweb.url de varios valores
variable para eso, pero el archivo tiene prioridad.

Esta es una mejora / versión por repositorio de @git_base_url_list basada en prefijos globales
variable de configuración de gitweb (ver gitweb.conf(5)).

gitweb.propietario
Puede utilizar la variable de configuración del repositorio gitweb.owner para configurar el repositorio
dueño. Se muestra en la lista de proyectos y en la página de resumen.

Si no está configurado, se usa el propietario del directorio del sistema de archivos (a través del campo GECOS, es decir, el nombre real
campo de obtenerpwuid(3)) si $ projects_list no está configurado (gitweb escanea $ projectroot para
repositorios); si $ projects_list apunta a un archivo con una lista de repositorios, entonces
El propietario del proyecto toma el valor predeterminado de este archivo para el repositorio dado.

varias variables de configuración de gitweb. * (en la configuración)
Lea la descripción de% función hash para obtener una lista detallada y descripciones. Ver también
Sección "Configuración de funciones de gitweb" en gitweb.conf(5)

COMPORTAMIENTO, Y URL


Gitweb puede usar direcciones URL basadas en path_info (componente), o puede pasar toda la información necesaria
a través de parámetros de consulta. Las URL típicas de gitweb se dividen en cinco componentes:

... / gitweb.cgi / / / : / ?

repo
El repositorio en el que se realizará la acción.

Todas las acciones excepto aquellas que enumeran todos los proyectos disponibles, en cualquier forma,
requieren este parámetro.

DE ACTUAR!
La acción que se ejecutará. Predeterminado a lista_proyectos si el repositorio no está configurado, y para
resumen de otra manera.

revisión
Se muestra la revisión. El valor predeterminado es HEAD.

camino
El camino dentro del en el que se realiza la acción, para esas acciones
que lo requieran.

argumentos
Cualquier argumento que controle el comportamiento de la acción.

Algunas acciones requieren o permiten especificar dos revisiones y, a veces, incluso dos nombres de ruta.
En la forma más general, la URL de gitweb basada en path_info (componente) se ve así:

... / gitweb.cgi / / / : / .. : / ?

Cada acción se implementa como una subrutina y debe estar presente en% actions hash. Algunos
las acciones están deshabilitadas de forma predeterminada y deben activarse mediante el mecanismo de funciones. Por ejemplo
para permitir culpa Ver agregue lo siguiente al archivo de configuración de gitweb:

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

Comportamiento:
Las acciones estándar son:

lista de proyectos
Enumera los repositorios de Git disponibles. Este es el comando predeterminado si no hay ningún repositorio
especificado en la URL.

resumen
Muestra un resumen sobre el repositorio dado. Este es el comando predeterminado si no se realiza ninguna acción.
especificado en la URL, y solo se especifica el repositorio.

cabezas, mandos a distancia
Enumera todas las ramas de seguimiento local o remoto en un repositorio determinado.

Este último no está disponible de forma predeterminada, a menos que esté configurado.

tags
Enumere todas las etiquetas (ligeras y anotadas) en un repositorio determinado.

gota, árbol
Muestra los archivos y directorios en una ruta de repositorio determinada, en una revisión determinada. Este es
comando predeterminado si no se especifica ninguna acción en la URL y se proporciona la ruta.

blob_plain
Devuelve los datos sin procesar del archivo en el repositorio dado, en la ruta y revisión dadas.
Los enlaces a esta acción están marcados crudo.

Blobdiff
Muestra la diferencia entre dos revisiones del mismo archivo.

culpa, culpa_incremental
Muestra la información de culpa (también llamada anotación) de un archivo. Por línea
muestra la revisión en la que esa línea se modificó por última vez y el usuario que se comprometió
el cambio. La versión incremental (que si está configurada se usa automáticamente cuando
JavaScript está habilitado) usa Ajax para agregar incrementalmente información de culpa al contenido de
archivo dado.

Esta acción está deshabilitada de forma predeterminada por motivos de rendimiento.

cometer, commitdiff
Muestra información sobre una confirmación específica en un repositorio. los hacer ver programas
información sobre el compromiso con más detalle, el cometer la acción muestra el conjunto de cambios para
compromiso dado.

parche
Devuelve la confirmación en formato de correo de texto sin formato, adecuado para aplicar con git-am(1).

etiqueta
Muestra una etiqueta anotada específica (objeto de etiqueta).

registro, shortlog
Muestra información de registro (mensaje de confirmación o simplemente asunto de confirmación) para una rama determinada
(a partir de la revisión dada).

El bitácora la vista es más compacta; muestra una confirmación por línea.

historia
Muestra el historial del archivo o directorio en una ruta de repositorio determinada, comenzando por la
revisión (por defecto HEAD, es decir, rama por defecto).

Esta vista es similar a bitácora ver.

rss, átomo
Genera una fuente RSS (o Atom) de cambios en el repositorio.

SERVIDOR WEB CONFIGURACIÓN


Esta sección explica cómo configurar algunos servidores web comunes para ejecutar gitweb. En todos los casos,
/ ruta / a / gitweb en los ejemplos es el directorio en el que ejecutó gitweb y contiene
gitweb_config.perl.

Si ha configurado un servidor web que no figura aquí para gitweb, envíe el
instrucciones para que puedan incluirse en una versión futura.

APACHE as CGI
Apache debe configurarse para admitir scripts CGI en el directorio en el que se encuentra gitweb
instalado. Asumamos que es / var / www / cgi-bin directorio.

ScriptAlias ​​/ cgi-bin / "/ var / www / cgi-bin /"


Opciones Índices FollowSymlinks ExecCGI
Ninguno AllowOverride
Orden de permitir, denegar
Dejar de todas las


Con esa configuración, la ruta completa para buscar repositorios sería:

http://server/cgi-bin/gitweb.cgi

APACHE con mod_perl, vía ModPerl :: Registro
Puede usar mod_perl con gitweb. Debe instalar Apache :: Registry (para mod_perl 1.x) o
ModPerl :: Registry (para mod_perl 2.x) para habilitar este soporte.

Suponiendo que gitweb está instalado para / var / www / perl, la siguiente configuración de Apache
(para mod_perl 2.x) es adecuado.

Alias ​​/ perl "/ var / www / perl"


SetHandler secuencia de comandos perl
PerlResponseHandler ModPerl :: Registro
PerlOptions + ParseHeaders
Índices de opciones FollowSymlinks + ExecCGI
Ninguno AllowOverride
Orden de permitir, denegar
Dejar de todas las


Con esa configuración, la ruta completa para buscar repositorios sería:

http://server/perl/gitweb.cgi

APACHE con FastCGI
Gitweb funciona con Apache y FastCGI. Primero debe cambiar el nombre, copiar o enlazar simbólicamente gitweb.cgi
a gitweb.fcgi. Supongamos que gitweb está instalado en / usr / share / gitweb directorio. los
La siguiente configuración de Apache es adecuada (¡NO PROBADA!)

Servidor FastCgi /usr/share/gitweb/gitweb.cgi
ScriptAlias ​​/ gitweb /usr/share/gitweb/gitweb.cgi

Alias ​​/ gitweb / static / usr / share / gitweb / static
<Directorio / usr / share / gitweb / static>
SetHandler controlador predeterminado


Con esa configuración, la ruta completa para buscar repositorios sería:

http://server/gitweb

ADVANCED SERVICIOS SERVIDOR CONFIGURACIÓN


Todos esos ejemplos usan la reescritura de solicitudes y necesitan mod_rewrite (o equivalente; ejemplos
a continuación están escritos para Apache).

Individual Enlance for gitweb y for atractivo
Si desea tener una URL tanto para gitweb como para sus repositorios http: //, puede
configurar Apache así:


Nombre del servidor git.example.org
DocumentRoot / pub / git
EstablecerEnv GITWEB_CONFIG /etc/gitweb.conf

# activando la reescritura de mods
RewriteEngine en

# hacer que la página principal sea una reescritura interna del script gitweb
RewriteRule ^ / $ /cgi-bin/gitweb.cgi

# hacer que el acceso para "clientes tontos" funcione
RewriteRule ^ / (. * \. Git / (?! /? (HEAD | info | objetos | refs)). *)? $
/cgi-bin/gitweb.cgi%{REQUEST_URI} [L, PT]


La configuración anterior espera que sus repositorios públicos vivan bajo / pub / git y la voluntad
servirles como http://git.domain.org/dir-under-pub-git, tanto como URL de Git clonable como
interfaz de gitweb navegable. Si luego comienzas tu demonio git(1) con
--base-path = / pub / git --export-all, entonces incluso puede usar la URL git: // con exactamente la
mismo camino

La configuración de la variable de entorno GITWEB_CONFIG le dirá a gitweb que use el archivo nombrado
(es decir, en este ejemplo /etc/gitweb.conf) como configuración para gitweb. Realmente no
lo necesito en el ejemplo anterior; es necesario solo si su archivo de configuración está en diferente
lugar que integrado (durante la compilación de gitweb) gitweb_config.perl or /etc/gitweb.conf. Vea
gitweb.conf(5) para obtener detalles, especialmente información sobre las reglas de precedencia.

Si usa las reglas de reescritura del ejemplo, puede también necesito algo como el
siguiendo en su archivo de configuración de gitweb (/etc/gitweb.conf siguiente ejemplo):

@stylesheets = ("/algunos/absolute/ruta/gitweb.css");
$ my_uri = "/";
$ enlace_inicio = "/";
$ per_request_config = 1;

Hoy en día, aunque gitweb debería crear una etiqueta base HTML cuando sea necesario (para establecer el URI base para
enlaces relativos), por lo que debería funcionar automáticamente.

Servidor Web configuración con una variedad proyectos ' raíz
Si desea utilizar gitweb con varias raíces de proyecto, puede editar su host virtual Apache
y archivos de configuración de gitweb de la siguiente manera.

La configuración del host virtual (en el archivo de configuración de Apache) debería verse así:


Nombre del servidor git.example.org
DocumentRoot / pub / git
EstablecerEnv GITWEB_CONFIG /etc/gitweb.conf

# activando la reescritura de mods
RewriteEngine en

# hacer que la página principal sea una reescritura interna del script gitweb
RewriteRule ^ / $ /cgi-bin/gitweb.cgi [QSA, L, PT]

# busque una carpeta public_git en la casa de los usuarios de Unix
# http://git.example.org/~ /
RewriteRule ^ / \ ~ ([^ \ /] +) (/ | /gitweb.cgi)? $ /Cgi-bin/gitweb.cgi
[QSA, E = GITWEB_PROJECTROOT:/casa/$ 1 / public_git /, L, PT]

# http://git.example.org/+ /
#RewriteRule ^ / \ + ([^ \ /] +) (/ | /gitweb.cgi)? $ /Cgi-bin/gitweb.cgi
[QSA, E = GITWEB_PROJECTROOT:/casa/$ 1 / public_git /, L, PT]

# http://git.example.org/user//
#RewriteRule ^ / user / ([^ \ /] +) / (gitweb.cgi)? $ /Cgi-bin/gitweb.cgi
[QSA, E = GITWEB_PROJECTROOT:/casa/$ 1 / public_git /, L, PT]

# lista definida de raíces del proyecto
RewriteRule ^ / scm (/|/gitweb.cgi)? $ /Cgi-bin/gitweb.cgi
[QSA, E = GITWEB_PROJECTROOT: / pub / scm /, L, PT]
Regla de reescritura ^/ var(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi
[QSA, E = GITWEB_PROJECTROOT: / var / git /, L, PT]

# hacer que el acceso para "clientes tontos" funcione
RewriteRule ^ / (. * \. Git / (?! /? (HEAD | info | objetos | refs)). *)? $
/cgi-bin/gitweb.cgi%{REQUEST_URI} [L, PT]


Aquí la raíz del proyecto real se pasa a gitweb a través de la variable de entorno GITWEB_PROJECT_ROOT
desde un servidor web, por lo que debe poner la siguiente línea en el archivo de configuración de gitweb
(/etc/gitweb.conf en el ejemplo anterior):

$ projectroot = $ ENV {'GITWEB_PROJECTROOT'} || "/ pub / git";

Nota que esto requiere que se establezca para cada solicitud, por lo que $ per_request_config debe ser
falso, o lo anterior debe incluirse en el código referenciado por $ per_request_config;

Estas configuraciones permiten dos cosas. Primero, cada usuario de Unix ( ) del servidor
poder navegar a través de los repositorios de Git de gitweb que se encuentran en ~ / public_git / con el
siguiente URL:

http://git.example.org/~ /

Si no desea esta función en su servidor, simplemente elimine la segunda regla de reescritura.

Si ya usa 'mod_userdir` en su host virtual o no quiere usar el' ~ 'como
primer carácter, simplemente comente o elimine la segunda regla de reescritura, y descomente uno de los
siguiendo de acuerdo a lo que quieras.

En segundo lugar, los repositorios que se encuentran en / pub / scm / y / var / git / será accesible a través de
http://git.example.org/scm/ y http://git.example.org/var/. Puedes agregar tantos proyectos
raíces como desee agregando reglas de reescritura como la tercera y la cuarta.

PATH_INFO personal
Si habilita el uso de PATH_INFO en gitweb poniendo

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

en su archivo de configuración de gitweb, es posible configurar su servidor para que
consume y produce URL en la forma

http://git.example.com/project.git/shortlog/sometag

es decir sin gitweb.cgi part, mediante el uso de una configuración como la siguiente. Esta
la configuración asume que / var / www / gitweb es el DocumentRoot de su servidor web, contiene
el script gitweb.cgi y archivos estáticos complementarios (hoja de estilo, favicon, JavaScript):


ServerAlias ​​git.example.com

DocumentRoot / var / www / gitweb


Opciones ExecCGI
AddHandler cgi-script cgi

DirectorioIndex gitweb.cgi

RewriteEngine On
RewriteCond% {} REQUEST_FILENAME! -f
RewriteCond% {} REQUEST_FILENAME! -d
RewriteRule ^. * /Gitweb.cgi/$0 [L, PT]



La regla de reescritura garantiza que los archivos estáticos existentes se servirán correctamente, mientras que
cualquier otra URL se pasará a gitweb como parámetro PATH_INFO.

Aviso que en este caso no necesita configuraciones especiales para @stylesheets, $ my_uri y
$ home_link, pero pierde el acceso de "cliente tonto" a los directorios .git de su proyecto (descrito en
Sección "URL única para gitweb y para obtener"). Una posible solución para este último es
lo siguiente: en el directorio raíz de su proyecto (p. ej. / pub / git) tener los proyectos nombrados sin a
extensión .git (p. ej. / pub / git / project en lugar de /pub/git/proyecto.git) y configurar
Apache de la siguiente manera:


ServerAlias ​​git.example.com

DocumentRoot / var / www / gitweb

AliasMatch ^ (/.*?) (\. git) (/.*)? $ / pub / git $ 1 $ 3

Opciones ExecCGI
AddHandler cgi-script cgi

DirectorioIndex gitweb.cgi

RewriteEngine On
RewriteCond% {} REQUEST_FILENAME! -f
RewriteCond% {} REQUEST_FILENAME! -d
RewriteRule ^. * /Gitweb.cgi/$0 [L, PT]



El AliasMatch adicional hace que

http://git.example.com/project.git

dará acceso sin procesar al directorio Git del proyecto (para que el proyecto pueda ser clonado), mientras

http://git.example.com/project

proporcionará acceso a gitweb amigable para los humanos.

Esta solución no es 100% a prueba de balas, en el sentido de que si algún proyecto tiene una referencia nombrada
(rama, etiqueta) comenzando con git /, luego caminos como

http://git.example.com/project/command/abranch..git/abranch

fallará con un error 404.

Use gitweb en línea usando los servicios de onworks.net



Últimos programas en línea de Linux y Windows