2010-08-27 37 views
23

Uno de los efectos secundarios del uso de un repositorio de Subversion externo era obtener copias de seguridad automáticas fuera del sitio en cada confirmación.Reflejar automáticamente un repositorio de git

Me gustaría lograr lo mismo con Git.

es decir, cada compromiso en mi repositorio local se confirma automáticamente en uno externo, por lo que los dos repositorios están siempre sincronizados.

Imagino que un gancho post-commit sería el camino a seguir. ¿Alguien tiene algún ejemplo específico de esto?

Respuesta

18

Escribí un enganche post-commit para este propósito. El gancho en sí es simple; sólo tiene que añadir un archivo llamado post-commit a su directorio .git/hooks/ con el siguiente contenido:

git push my_remote 

El archivo post-commit debe ser ejecutable. También asegúrese de agregar un repositorio remote adecuado con el nombre my_remote para que este gancho funcione.

También hice un enlace simbólico llamado post-merge que apunta a post-commit. Esto es opcional Si haces esto, también se sincronizará automáticamente después de las fusiones.

ACTUALIZACIÓN: Si desea asegurarse de que su servidor y su espejo no pierden la sincronización, y asegurarse de que todas las ramas también son respaldados, su post-commit gancho puede utilizar:

git push my_remote -f --mirror 
+1

Son ¿Hay algún escenario restante en el que el repositorio no esté sincronizado? ¿Cómo puedo verificar (y volver a sincronizar). ¿Pueden las personas comprometerse con el repositorio externo? –

+0

'¿Las personas pueden comprometerse con el repositorio externo?': Esto dependerá de cómo esté configurado el repositorio externo. Si desea un espejo de solo lectura, puede evitar que otros se comprometan. '¿Cómo verificaría (y volvería a sincronizar)' si nadie más está comprometido con el repositorio, entonces no veo muchas maneras de cómo los repos podrían estar fuera de sincronización. Si lo hacen, entonces siempre hay fusión. –

+0

Lo siento. Mi pregunta adicional estaba mal redactada. –

Cuestiones relacionadas