Denegar LEER de twigs de repository específicas con gitolita

Lo que estoy tratando de lograr es lo siguiente: los compañeros de trabajo están en el grupo @queueboradores, los clientes están en grupos @clientes.

El repository de Git estará disponible para leer y escribir para todos, pero habrá twigs especiales. es decir, creo una nueva twig "interna" y @queueboradores tendrán RW + acceso, pero los clientes NO deberían poder R o W.

Pensé que puedo lograr eso por

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

Pero esto no funciona.

Según una discusión con el autor de gitolite, la restricción de acceso de lectura no es posible para las sucursales:

Las cosas por twig de Gitolite solo funcionan para el acceso de escritura. No funciona para el acceso de lectura porque git en sí no admite hacer esa distinción.

Ahora es posible restringir el acceso de lectura a las twigs de gitolita con la última versión de gitolite v3.x utilizando la function de copy parcial de gitolita.

  1. Asegúrese de usar la última versión de gitolite
  2. elimine el comentario de la línea de partial-copy en la sección ENABLE del file ~ / .gitolite.rc
  3. establecer $GIT_CONFIG_KEYS = '.*' en el file ~ / .gitolite.rc
  4. Use la opción de copy parcial para tener otro repository que sea una copy de su repository original pero sin algunas twigs.

Ejemplo: si desea que el cliente solo tenga acceso a la twig de deploy

 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 queja de que no puede eliminar la twig maestra, puede usar este command en el server:

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

Los clientes ahora pueden clonar la twig de implementación del repository my-repo-deploy con un command como este:

 git clone -b deploy git@your-server:my-repo-deploy 

No soy un experto en gitolite, pero creo que las reglas se procesan en order. ¿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.