Git ignora files por twig o repository remoto

Usado

Git, Github.com

Problema

Tengo un proyecto con files: A, B, C, D, E.

  • Me gustaría que el Equipo 1 trabaje en: A, C, D (no quiero exponerles B, E)
  • Mientras que el Equipo 2 trabaja en: B, D, E (no quiero exponerles A, C)
  • Y me gustaría trabajar en: A, B, C, D, E

Luego hago funcionar al Equipo 1 y consigo que A, C, D se fusione con mi trabajo y luego hago que el Equipo 2 trabaje y obtenga B, D, E fusionados con mi trabajo.

Puedo crear un repository por equipo si es necesario.

No funciona

He leído todos los artículos y he intentado todo lo que han proporcionado.

  • Los submodules no funcionan para mí: los files están en diferentes ubicaciones y tendré que ignorar diferentes grupos de files para cada equipo de desarrolladores.
  • Excluye file por twig simplemente no funciona
  • .gitignore eliminará esos files 2-3 cuando tire

No quiero creer que no haya una solución fácil y elegante para ignorar algunos files por push o branch o repo remoto u otra cosa …

Adiciones

  • No puedo separar un proyecto en varios proyectos

Crearía tres proyectos:

  • D (común, visible para todos)
  • A y C (visibles para ti y el Equipo 1), dependencia de D
  • B y E (visibles para ti y el Equipo 2), dependencia de D

Me gustaría dividir los proyectos si pretendo alguna vez un mejor control de acceso que separa A de C o B de D.

No creo que intente usar ignorar files para el control de acceso.

Git no tiene control de acceso, por lo que: " git ", " files secretos " y " fácil de mantener " simplemente no se combina bien. Mire gitolite y Git en el server – gitolite si desea agregar una capa de control de acceso.

Necesitarás experimentar, pero probablemente puedas trabajar en la línea de comenzar con un repository vacío y tener una twig por equipo. Sin embargo, tenga en count que no desea que los files aparezcan en ninguno de los historiales de sucursales respectivos. Por ejemplo, no desea tener una twig principal con todos los files, que se team1 como una twig de team1 y, a continuación, team1 los files. Los files "secretos" permanecerán en el historial de la sucursal y restringir el acceso no ayudará. Por lo tanto, tendrá que tener una separación clara para los files en todas las sucursales, o tener un script de desinfección que aplique git filter-branch para eliminar files cada vez que decida fusionar y correr el riesgo de volver a presentar los files.

Para elaborar sobre el último ejemplo. Suponga que fusionó el trabajo de team2 en su twig principal y ahora desea compartir el progreso general con team1 . No se puede simplemente fusionar master en team1 , pero se puede ramificar el master como master-sanitized , ejecutar filter-branch para eliminar los files que team1 no debería ver, y luego combinar master-sanitized en team1 , descartando la twig temporal. Sin embargo, todo eso no te salvará del hecho de que la reescritura de los commits es en realidad reintroducirlos con nuevos sha1-s, por lo que tus fusiones serán un dolor constante de resolución de conflictos con -s ours o -X theirs .