Empujar automáticamente a una carpeta específica en GitHub u otro service de Git

La situación: tengo un Git Repo con files; llamémoslo "Robot". Cuando me comprometo con Robot, quiero que algo se confirme automáticamente en mi nuevo compromiso con otro gran repository en una carpeta específica.

El problema: no sé cómo hacerlo. Sé que GitLab tiene un repository espejo, pero refleja todo el repository y no lo hará en una carpeta específica.

EDITAR:

Aquí hay una analogía: el gran repository es como un CDN y el robot es un marco.

Básicamente, hay dos forms de duplicar un repository en múltiples ubicaciones:

  • lado del cliente (empujar a dos repositorys a la vez)

  • lado del server (solo presione hacia un solo server A , y permita que el server reenvíe el command a otro server B )

lado del cliente

Si trabaja principalmente desde una única copy de trabajo (es decir, solo clona el repository en una sola máquina y hace todo el trabajo allí), y el ancho de banda no es un problema (y dado que git trata principalmente con código fuente que debería ser cierto) en la mayoría de los casos), la forma más simple es simplemente agregar dos (2) remote a su copy de trabajo (o copys):

  git clone uri://serverA/myrepo.git cd myrepo git remote set-url --add --push origin uri://serverB/robot.git git push 

El único inconveniente aquí es que cada vez que clones de nuevo, debes configurar el push-url adicional.

Ver también Git – Código de empuje para dos mandos a distancia

lado del server

También puede implementar un gancho post-receive lado del server, que simplemente llama a git push a otro server.

  1. crear el repository en el serverB: uri://serverB/robot.git

  2. crear un repository desnudo en el serverA

     git create --bare myrepo.git 
  3. agregar un control remoto al repository desnudo

     git remote add origin uri://serverB/robot.git 
  4. agregar un gancho post-receive al repository desnudo en el serverA

     $ cat > myrepo.git/hooks/post-receive << EOF git push --all git push --tags EOF 
  5. en su escritorio, clone uri://serverA/myrepo.git , agregue files y empújelos.

    los files se reenvían automáticamente, siempre que el usuario que ejecuta el git-hook en el server realmente pueda enviarlos al serverB.

Me parece favorable si se trata de varias copys de trabajo y múltiples usuarios. Sin embargo, hay dos problemas:

  1. necesita poder crear ganchos post-receive en el server. Esto generalmente significa que debe tener acceso administrativo al server (por ejemplo, ser capaz de entrar en él o tener otros poderes de súper vacas). Esto excluye a github como su server A.

  2. en prácticamente todos los casos, debe autenticarse en el serverB . Por ejemplo, puede usar ssh-keys contraseña (almacenadas en el server) para esto. (github le permite agregar Deploy Keys con acceso de escritura a cada repository).

Ver también Git push a un repository remoto que se implementa en otros repositorys remotos