Yo trabajo en un equipo en el que tenemos un código en un repositorio mercurial con varios subrepositories:Mercurial Subrepositories: Prevenir compromete recursivas accidentales y empuja
main/
main/subrepo1/
main/subrepo1/subrepo2/
El comportamiento predeterminado de Mercurial es que cuando un hg commit
se realiza en "principal", también se confirmarán los cambios pendientes en los subrepositorios "subrepo1" y "subrepo2". De manera similar, cuando se presiona "main", también se presionarán las confirmaciones salientes en "subrepo1" y "subrepo2".
Encontramos que las personas con frecuencia involuntariamente confirman y presionan cambios en sus subrepositorios (porque olvidaron que habían realizado cambios, y hg status
de manera predeterminada no muestra cambios recursivos). También encontramos que tales compromisos/empujes globales son casi siempre accidentales en nuestro equipo.
Mercurial 1.7 mejoró recientemente la situación con hg status -S
y hg outgoing -S
, que muestran cambios en los subrepositorios; pero aún así, esto requiere que la gente esté prestando atención.
¿Hay una manera de Mercurial para hacer hg commit
y hg push
abortar si hay cambios/compromete en subrepostories que de otro modo se cometerían/empujó?
La solución de Ry4an suena sensata en muchas circunstancias, pero el enfoque basado en guiones de la respuesta aceptada fue finalmente lo que usé; Hasta aquí todo bien. – davidg