Mercurial Subrepositories: предотвращение случайных рекурсивных коммитов и пушов

Я работаю в команде, где у нас есть код в репозитории 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 отменять, если есть изменения / коммиты в подрепостах, которые в противном случае были бы зафиксированы / отправлены?

17
задан davidg 31 January 2011 в 22:31
поделиться