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