Я работаю над командой, где у нас есть код в ртутном репозитории с несколькими субрепозиториями:
main/
main/subrepo1/
main/subrepo1/subrepo2/
Поведение Mercurial по умолчанию заключается в том, что когда a hg commit
выполняется в "main", любые выдающиеся изменения в субрепозиториях "subrepo1" и "subrepo2" также будут зафиксированы. Точно так же, когда нажата клавиша "main", любые исходящие транзакции в "subrepo1" и "subrepo2" также будут нажаты.
Мы обнаруживаем, что люди часто непреднамеренно фиксируют и нажимают изменения в своих субрепозиториях (потому что они забыли, что они внесли изменения, а hg status
по умолчанию не показывают рекурсивных изменений). Мы также обнаруживаем, что такие глобальные коммиты/толкания практически всегда случайны в нашей команде.
Mercurial 1.7 недавно улучшил ситуацию с hg status -S
и hg outgoing -S
, которые показывают изменения в субрепозиториях; но все же это требует от людей внимания.
Есть ли способ в Mercurial сделать hg commit
и hg push
отменять, если есть изменения/коммиты в подрепостах, которые иначе были бы сделаны/нажаты?