Subrepositórios mercuriais: Evite confirmações e empurramentos recursivos acidentais
Eu trabalho em uma equipe onde temos um código em um repositório mercurial com vários subrepositórios:
main/
main/subrepo1/
main/subrepo1/subrepo2/
O comportamento padrão do Mercurial é que, quando umhg commit
for executado em "main", quaisquer alterações pendentes nos sub-repositórios "subrepo1" e "subrepo2" também serão confirmadas. Da mesma forma, quando "main" é pressionado, quaisquer confirmações de saída em "subrepo1" e "subrepo2" também serão pressionadas.
Constatamos que as pessoas frequentemente cometem e pressionam inadvertidamente alterações em seus sub-repositórios (porque esqueceram que haviam feito alterações ehg status
por padrão, não mostra alterações recursivas). Também descobrimos que esses envios / envios globais são quase sempre acidentais em nossa equipe.
O Mercurial 1.7 melhorou recentemente a situação comhg status -S
ehg outgoing -S
, que mostram alterações nos subrepositórios; mas ainda assim, isso exige que as pessoas prestem atenção.
Existe uma maneira no Mercurial de fazerhg commit
ehg push
abortar se houver alterações / confirmações nos sub-repórteres que de outra forma seriam confirmadas / enviadas?