Да, сходство имен неудачно. Для каждой команды есть pre-X и post-X, а затем есть независимый хук precommit, который запускается перед фактической фиксацией.

отаю в команде, в которой у нас есть код в ртутном репозитории с несколькими подкаталогами:

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

Ответы на вопрос(5)

Ваш ответ на вопрос