2011-01-12 16 views
9

Lo que estoy tratando de lograr es lo siguiente: compañeros de trabajo están en el grupo @cooperadores, clientes están en @clientes de grupo.Denegar LEER de ramas de repositorio específicas con gitolite

El repositorio de Git estará disponible para leer y escribir para todos, pero habrá ramas especiales. es decir que crear una nueva rama "interno" y @coworkers tendrán acceso RW +, pero los clientes no deberían ser capaces de R o W.

pensé que puedo lograr que por

repo myrepo 
    - intern = @clients 
    RW+   = @clients @coworkers 

Pero esto hace no trabajo.

Respuesta

0

No soy un experto en gitolite, pero creo que las reglas se procesan en orden. ¿Has intentado simplemente invertir las últimas dos líneas? Es decir, conceda permiso a @clients y @coworkers primero, y luego niegue el acceso al interno por @clients.

9

Según un discussion con el autor de gitolite, leer restricción de acceso no es posible por las ramas:

de Gitolite cosas por rama funciona sólo para acceso de escritura. Es no funciona para el acceso de lectura porque git no admite haciendo esa distinción.

+0

No es posible restringir el acceso a la lectura en git * por diseño *: al clonar, siempre debe buscar el repositorio completo, simplemente no hay forma de evitarlo (sin cambiar fundamentalmente cómo funciona git). – sleske

+0

Ahora es posible con la función de copia parcial de la última versión de gitolite. Verifique mi respuesta a continuación. –

3

Ahora es posible restringir el acceso de lectura a gitolite ramas con la última versión del v3.x gitolite utilizando el partial-copy feature de gitolite

  1. Asegúrese de utilizar la última versión gitolite
  2. quite el comentario partial-copy línea en la sección ENABLE del archivo ~/.gitolite.rc
  3. establece $GIT_CONFIG_KEYS = '.*' en el archivo ~/.gitolite.rc
  4. uso del parcial- Copiar opción para tener otro repositorio que sea una copia de su repositorio original pero sin algunas ramas.

Ejemplo: si desea que el cliente sólo tienen acceso a la deploy rama

repo my-repo 
    RW+  = @coworkers 

repo my-repo-deploy 
    RW deploy = @clients 
    -   = @clients 

    - VREF/partial-copy   = @all 
    config gitolite.partialCopyOf = my-repo 

si git se quejan de que no se puede eliminar la rama principal se puede utilizar este comando en el servidor:

sudo git config --system receive.denyDeleteCurrent warn 
sudo git config --global receive.denyDeleteCurrent warn 

los clientes ya pueden clonar la rama despliegue del repositorio mi-repo de implementar con un comando como este:

git clone -b deploy [email protected]:my-repo-deploy 
Cuestiones relacionadas