Cómo sincronizar repositorys Git en 2 serveres

Estoy buscando una manera de sincronizar automáticamente repositorys de Git en (2) serveres para que sean intercambiables desde un tercer punto.

La situación es la siguiente: utilizamos en gran medida git para todos nuestros proyectos, y algunos de los repositorys crecen bastante rápido. Actualmente tenemos un server central y todos están empujando / tirando hacia / desde este. Sin embargo, todo esto pasa por la connection a Internet y, por lo tanto, no es la forma más rápida.

La idea: poner otro server en la oficina, y tener todos los repositorys git allí para uso en la oficina. Este server debería estar sincronizado con el que está en línea. En el mejor de los casos, los usuarios ni siquiera sabrían cuál usar a través de algunos ajustes de dns, por lo que la dirección de los repositorys de serveres en línea se resolverá en la oficina uno cuando esté conectado a la networking allí.

¿Alguien ya está haciendo algo similar por ahí? ¿O hay una manera más fácil de lograr el objective?

Vería un mecanismo de este tipo fácilmente con el protocolo SSH (lo que significa que hay un marco como gitolite en el repository de LAN y en el Repo HTTP de la WAN), porque entonces puede extender fácilmente el mecanismo de command forzado de ssh a:

  • primero compruebe si los dos repo están sincronizados
  • rechazar el command si el repository local está less actualizado que el remoto
  • sincronizar el repository local con el remoto de necesario

Hacerlo con ganchos es más complicado y se debe configurar cuidadosamente para cada tipo de ganchos del lado del server a fin de mantener ese mecanismo de synchronization activo en todo momento.

Gitolite tiene una function que reflejará los repositorys. Puede configurar el de la oficina como el maestro y el en línea como el esclavo, y permitir empujar a cualquiera de los dos.