Espejo Git sin empujes forzados

¿Es posible de alguna manera configurar un repository de git que funcione como un mirror habitual para acceder a él, pero sin forzarlo cuando se presiona desde otro repository?

Me gustaría hacer un git push –mirror que fallará si se requiere una actualización de avance no rápido.

Un git push –mirror debería fallar si el repository upstream tiene su configuration establecida en receive.denyNonFastForwards true :

Página de manual de git config :

 receive.denyNonFastForwards 

Si se establece en true , git-receive-pack denegará una actualización ref, que no es un avance rápido.
Use esto para evitar dicha actualización mediante un push, incluso si ese empuje es forzado .
Esta variable de configuration se establece al inicializar un repository compartido.

Eso significa que no tendrías que "reproducir lo que" --mirror "hace: simplemente podrías usarlo, y aun así tener ese push fallaría si se involucrara una fusión no rápida.

Solo puede agregar –no-force para desactivar el comportamiento de forzado así:

 git push --mirror --no-force 

Esto deshabilitará las actualizaciones que no sean de avance rápido (probadas con git 1.8.0.2).

¿Hay alguna forma de reproducir lo que – mirror hace con otras opciones?

Algunas de las réplicas se pueden realizar con varias pulsaciones:

 git push <remote> --all # push all branches git push <remote> --tags # push all tags git push <remote> refs/remotes/* #push the remote refs