Copia de security de todas las twigs en un repository de git manteniendo lo que ha sido networkingiseñado y forzado

Estoy buscando una solución para hacer copys de security de varios repositorys de git compartidos, cada uno con múltiples twigs, y algunas de las twigs se vuelven a configurar y forzar (sé que eso va en contra de las mejores prácticas, pero es algo con lo que tengo que lidiar ahora)

Estaba pensando en un git clone --mirror simple de git clone --mirror y luego, periódicamente, git remote update sería suficiente, pero eso no mantendrá nada que se vuelva a basar con una fuerza de empuje.

Experimenté con git bundle y no creo que sea una buena solución para lo que estoy tratando de hacer aquí.

Buscando algo incremental, ligero y fácil de usar para la recuperación, estoy pensando que tal vez el git format-patch se pueda usar para guiar la grabación de cada nueva confirmación que ocurra en cualquier lugar. ¿Esto es demasiado para la tarea?

Creo que vale la pena mirar hacia atrás el enfoque clone --mirror . Si desea recuperar una position anterior de una sucursal forzada, eche un vistazo a los reflogs. Para estar absolutamente seguro de esto, puede establecer gc.pruneExpire en never , y lo mismo para gc.reflogExpireUnreachable , de modo que los reflogs y los objects inalcanzables nunca se eliminarán. Eso debería cubrirlo. Nota importante: los reflogs están deshabilitados por defecto en los repositorys desnudos. Puede habilitarlos estableciendo core.logAllRefUpdates .

Tenga en count que los reflogs en el repository insertado contendrán loggings de cualquier bash forzado que suceda. Si quiere estar aún más seguro al respecto, incluso podría escribir un enlace de actualización que detecte las actualizaciones forzadas entrantes y las registre en algún lugar especial, tal vez mediante la creación de una reference, algo como refs/backups/mybranch-{n} .

Y realmente, no hay nada de malo en que algunas twigs se vuelvan a configurar con frecuencia, siempre y cuando esté bien definido, para que nadie sea tomado por sorpresa. La twig pu en git.git es un ejemplo perfecto de esto.