2011-08-27 12 views
12

Estoy tratando de hacer que gitweb funcione con gitolite ... pero sin éxito hasta el momento.
Estoy trabajando en una máquina RedHat Linux. Un usuario llamado git existe.¿Cómo tengo que configurar gitweb y gitolite para que funcionen juntos?

gitolite se instala en: /home/git
ubicación del repositorio: /home/git/repositories

Tenga en cuenta que, gitweb estaba trabajando bien con git con sabor de vainilla. Ahora estoy tratando de hacerlo funcionar con gitolite.

Éstos son lo que mis archivos se parecen:

  • /etc/gitweb.conf

    $projectroot = "/home/git/repositories"; 
    @git_base_url_list = qw(ssh://[MyHostName]/home/git/projects.list); 
    $projects_list = "/home/git/projects.list" 
    
  • /home/git/projects.list

    myrepo1.git 
    myrepo2.git 
    
  • /home/git/.gitolite.rc:

    $PROJECTS_LIST = $ENV{HOME} . "/projects.list"; 
    $GL_GITCONFIG_KEYS = "gitweb.url receive.denyNonFastforwards receive.denyDeletes"; 
    

¿Qué configuración me he perdido? No hice ningún cambio en Apache.

Web URL: http://MyHostName/git
Esto da un error 404 diciendo - No se encontraron depósitos.

Respuesta

0

Debe agregar Gitolite contrib/gitweb.conf al final de /etc/gitweb_config.perl.
En otras palabras, debe llamar a una función de Gitolite desde su archivo gitweb.conf perl, de lo contrario, la integración de GitWeb-Gitolite nunca funcionará.

# check for (at least) "R" permission 
    my ($perm, $creator) = &repo_rights($repo); 
    return ($perm =~ /R/); 

(aquí repo_rights es un método de gitolite.pm)

Consulte la sección "helping with gitweb".

Las últimas líneas que hay que añadir a continuación el final de gitweb_config.perl son:

use lib ("."); 
require "gitweb.conf.pl"; 

De esta manera, se evitará cualquier mensaje de error "500 - Internal Server Error syntax error at /etc/gitweb.conf".

Si usted no tiene un gitweb_config.perl en el que se declara gitweb.conf.pl, sino directamente "gitweb.conf.pl", a continuación, añadir "use lib (".");" como la primera línea de ese archivo.

+0

Al final de /etc/gitweb.conf exactamente qué línea ¿Es necesario añadir? Intenté agregar esta línea: $/home/git/gitolite/contrib/gitweb.conf, pero eso da error. Creo que no entendí bien. – Jee

+0

Estoy haciendo algo muy obviamente incorrecto. ¿Mi configuración de gitweb.conf, projects.list, .gitolite.rc está configurada correctamente? El mensaje de error dice claramente: No se encontraron proyectos. – Jee

+0

@Jee: al final de '/ etc/gitweb.conf', debe copiar * todas * las líneas de https://github.com/sitaramc/gitolite/blob/pu/contrib/gitweb/gitweb.conf (y cambie el valor de las líneas 21, 23, ... si ha utilizado rutas diferentes en su instalación de Gitolite) – VonC

13

Recientemente he creado gitolite y gitweb y encontró que /etc/gitweb.conf requiere muy poca configuración. Lo que tienes me parece bien. ¿Cómo se llaman los permisos en /home/git/repositories? Puede encontrar que son demasiado restrictivos.Trate de hacer esto:

$ chmod -R 775 /home/git/repositories 

Eso es lo que resolvió el problema para mí, (aunque me imagino que hay una manera más segura de configurar los permisos). Si eso funciona, recomendaría solo echarle un vistazo a Apache (o a cualquier cuenta de usuario en la que se esté ejecutando gitweb) permisos más precisos sobre el directorio de repositorios.

también tengo esto en mi .gitolite.rc:

GIT_CONFIG_KEYS => 'gitweb\.(owner|description|category)', 

por lo que las siguientes obras: <gitolite-admin>/conf/gitolite.conf

config gitweb.owner   = owner name 
config gitweb.description = some description 
config gitweb.category  = some category 
+4

Para ser un poco más seguro, puede agregar el usuario apache/www-data al grupo gitolite 'usermod -a-g gitolite apache' y luego hacer' chmod -R 750/home/git/repositories' junto con establecer la variable gitolite '$ REPO_UMASK = 0027;' –

+1

La configuración $ REPO_UMASK fue particularmente útil para mí. El directorio chmod-ing repositorios funciona hasta la próxima vez que actualice un repositorio y luego los permisos se reinicien a 700 en uno de los archivos. Tenga en cuenta que los documentos dicen que la configuración de UMASK en gitolite es crítica si desea ejecutar gitweb: http://gitolite.com/gitolite/g2/rc.html –

0

1/instalar gitolite y configurarlo. A continuación, basta con asegurarse de /home/git/.gitolite.rc contiene partes sin comentar que se parecen:

%RC = (
    ... 
    UMASK       => 0027, 
    ... 
    ENABLE => [ 
     ... 
     'gitweb', 
     ... 
    ] 
); 

2/ajustar correctamente $projectroot y $projects_list directivas de /etc/gitweb.conf (para que coincida con la ubicación del archivo y projects.listrepositories dir). Me gusta:

$projectroot = "/home/git/repositories"; 
... 
$projects_list = "/home/git/projects.list"; 

3/Asegúrese de que los archivos de repositorio actuales también sean legibles por el usuario del servidor web. Estos ejemplos son de los sistemas basados ​​en Debian, por lo que tu caso es distinto:

sudo adduser www-data git     # append `www-data` user to a `git` group 
sudo chmod g+r /home/git/projects.list  # make sure group members can read the `project.list` 
sudo chmod -R g+rx /home/git/repositories # recursively set less restrictive access mode for group members 
sudo /etc/init.d/apache2 restart   # restart web server to apply these changes 

4/Finalmente configurar el acceso a gitweb usuario dentro de su archivo /conf/gitolite.conf de gitolite-admin repositorio en una máquina cliente y aplicarlos al comprometerse y empujándolos (la forma estándar) . Un repositorio nos gustaría ver y gestionar a través de gitweb tiene que tener el acceso establecido así:

repo testing                  
    RW+  = @all                
    R  = gitweb # add this line to make the repo browsable using `gitweb` 

Nota: El ... sólo sugiere que hay otras directivas de configuración dentro de los archivos. ¡No los pongas allí!

No son necesarios otros cambios para que gitlab visualice los repositorios gitolite.

aplica (por lo menos) para gitolite 3.6.6 y 2.1.4 gitweb

Cuestiones relacionadas