Cómo fusionar git de diferentes repositorys en 1 repository

Estoy trabajando en un proyecto en el que estoy dividiendo todo el proyecto en varios modules que luego se desarrollan individualmente. No quiero que los desarrolladores de los modules individuales tengan acceso a ningún otro module o a todo el proyecto, y todo lo que pueden ver es su module. ¿Cómo puedo hacer esto utilizando los sistemas git existentes, como github o bitbucket? ¿Sería cada module un repository y luego un repository principal que se enganchara en cada uno de estos repositorys para fusionar los datos?

  • Si administra todos los modules en diferentes twigs del mismo repository , los desarrolladores pueden ver todas las sucursales, solo puede establecer permissions de escritura para diferentes desarrolladores en diferentes twigs.

  • Si no desea que los desarrolladores vean otros modules en los que no están trabajando, debe gestionar diferentes modules en repositorys git separados .

    Supongamos que el developerA trabaja en el moduleA (en un repoA separado), la forma de fusionar repoA manualmente en el repository principal como se muestra a continuación:

     #In the main repo git remote add -f repoA <URL for repoA> git pull repoA master git add . git commit -am 'get change from repoA to main repo' git push origin master 

    Si desea utilizar ganchos para fusionar los repositorys de modules en el repository principal, debe cumplir las siguientes condiciones:

    1. Habilitar para usar los ganchos del lado del server. Puede usar el gancho post-push en cada repository de modules. Cuando los cambios se envían al repository remoto, puede llevar los cambios al repository principal local.
    2. Será mejor que configure los repos remotos en su propia máquina ya que si usa github, los ganchos del lado del server no están disponibles para los usuarios.
    3. Si decide usar git hook, debe considerar resolver los conflictos de combinación automáticamente. Si los conflictos de fusión no se resuelven, la secuencia de commands de git hook se cerrará o devolverá errores.

    También puede usar otras forms de fusionar los repos de modules en el repository principal, como git subtree o git sumodule etc.