Sincronización automática al repository remoto de git

¿Existe una manera automática de sincronizar un repository de git local con uno remoto, para la copy de security?

Básicamente, la estructura que pretendo es la siguiente:

  • Repositorio "maestro" en un server central
    • La PC del usuario A tiene un clon local del repository maestro
      • El server de respaldo tiene un espejo del repository del usuario A
    • La PC del usuario B tiene un clon local del repository maestro
      • El server de respaldo tiene un espejo del repository del usuario B

La interacción entre los usuarios y el maestro es manual: los usuarios tienen que elegir cuándo presionar o jalar los cambios.

La interacción entre los usuarios y su copy de security personal es automática: cada vez que el usuario realiza un cambio (en cualquier twig, incluida la creación de nuevas sucursales) a su repository local, debe enviarlo inmediatamente al repository de copy de security si el server es accesible y retenido. sin error hasta que el server sea alcanzable (o la siguiente acción cuando el server es alcanzable, si es más fácil) y luego presionado. (es decir, debe tolerar los períodos de desconnection, pero luego de reconectarse, los repos deben volver a ser un espejo completo, incluidos los cambios realizados mientras está desconectado).

Un usuario nunca debería necesitar presionar conscientemente al server de respaldo. Es posible que quieran clonar un nuevo repository del server de respaldo (por ejemplo, si su disco duro muere o necesitan usar una segunda PC por un time). El usuario B podría querer extraer una twig del repository de copy de security del usuario A (aunque esto será raro, generalmente las sucursales se intercambiarán a través del repository principal). Pero principalmente debería ser invisible para ellos.

Y debe ser lo más inmediato posible, no una tarea progtwigda, ya que podrían comprometerse y luego apagarse o desconectarse de la networking, y me gustaría que la copy de security esté actualizada en este caso.

Configurar los clones maestros y personales es fácil. Pero, ¿cómo configuro esta copy de security de copy de security?

Además, si bien reflejar solo los cambios confirmados está bien, podría ser bueno si de alguna manera también pudiera reflejar cambios no confirmados (incluidos los files no versionados pero no ignorados). Sin embargo, estoy de acuerdo con no hacer eso (ya que sospecho que se volvería complicado).

Eso debería include un enlace posterior a la confirmación, que debe implementarse en cada repository del cliente.
O ese gancho podría ser parte de un repository de plantilla de git que todos los usuarios están usando cuando usen git init : vea la sección "DIRECTORIO DE PLANTILLAS" de git init .

Ese gancho estaría a cargo de empujar a un repository desnudo de respaldo, y podría ser tan simple como este.

 #!/bin/sh git push --mirror remote-name 

Encontrará ideas similares en " ¿Cómo presionar automáticamente después de comprometerse en git? ".