Proyecto de migration a Git / Gerrit. Preguntas de control de acceso?

Estamos en el process de migrar un proyecto de tamaño moderado desde un antiguo SCMS (CMVC) a Git / Gerrit. Para fines de auditoría externa, hemos implementado controles de acceso estrictos dentro de CMVC definiendo 18 "componentes" y luego creando ACL para cada uno de esos componentes. Por lo tanto, el proyecto existe como un tree fuente grande (con varios subdirectorys, etc.) en CMVC, pero un desarrollador dado solo puede tener acceso de confirmación para un subtree particular.

[tenga en count que nuestros 'componentes' no son independientes, aplicaciones independientes o jarras o bibliotecas … son solo subtreees de código que tienen ACL específicas necesarias para satisfacer las auditorías de código externo]

No tengo claro cómo lograr el mismo nivel de control de acceso dentro de Gerrit a less que convierta cada componente de CMVC en un proyecto / repository de Git separado con su propio set definido de grupos de acceso.

La posibilidad de crear 18 proyectos separados es preocupante …

a) debido al riesgo de que los componentes no se sincronicen (recuerde, nuestros componentes no son aplicaciones independientes o libs), y

b) el número de revisiones de código obligatorias de Gerrit que serán necesarias para cambios comprometidos que abarquen componentes

Además, la idea de cómo nuestro material de continuous integration identificaría y desharía los compromisos erróneos que involucran varios repositorys hace que el vello en la parte posterior de mi cuello se levante.

¿Hay una mejor manera de lograr un control de acceso detallado con Gerrit?

Un problema crucial aquí es que Git en sí mismo no tiene ningún mecanismo para operar solo en directorys particulares en un repository: es prácticamente todo o nada. Una confirmación particular puede abarcar múltiples directorys y no hay forma de recuperar (o almacenar) una confirmación "parcial".

Puede implementar filters que rechazarán confirmaciones que intentan modificar ciertos subtreees, pero no hay nada que pueda hacer para limitar el acceso de extracción a estos subtreees.

El control de acceso en Git generalmente se implementa por repository y por twig.

Si necesita el tipo de control de acceso granular que ha descrito y dividir el proyecto en varios repositorys no es una opción, probablemente necesite investigar una alternativa a Git para el control de versiones.