Я провел некоторые исследования в этом направлении и обнаружил мотивацию отсутствия специфических для отрасли хуков в распределенных системах контроля версий. Я сравнил с Subversion, централизованной RCS, как пример желаемой функции.
GIT и Mercurial - это распределенные RCS (например, Bazaar), в которых есть инструменты для перехватов, включая различные подходы к перехватам, специфичным для отрасли, и глобальным перехватам. Несмотря на это, хуки не контролируются ревизиями, и они требуют, чтобы пользователь филиала включил их из-за угрозы безопасности. В документации Mercurial о крючках в разделе «Крючки и безопасность» говорится:
В Mercurial крючки не являются ревизиями
контролируется и не размножается, когда
Вы клонируете или извлекаете хранилище.
Причина этого проста: крючок
это совершенно произвольный кусок
исполняемый код Он работает под вашим
личность, с вашей привилегией
уровень, на вашей машине.
Это было бы крайне безрассудно для любого
распределенная система контроля версий
внедрить крюки с контролем версий,
как это будет легко предложить
эксплуатируемый способ подорвать
аккаунты пользователей ревизии
система управления.
В централизованном RCS, таком как Subversion, перехваты запускаются на сервере репозитория, поэтому пользовательские разрешения и настройка сервера ограничивают воздействие разрушающего скрипта перехвата. В распределенном RCS хуки обычно запускаются на локальном компьютере пользователя, что рискованно.
Как упоминается vitaly.v.ch, сервер Bazaar может быть настроен для запуска хуков, когда их толкают и извлекают. Но тогда ловушка предварительной фиксации не имеет смысла, так как фиксация происходит на компьютере пользователя. Тогда это будет больше похоже на крючок предварительного толкания.
Bazaar обладает всеми необходимыми функциями для хуков, но для их установки и включения требуется индивидуальная конфигурация пользователя из-за угрозы безопасности, которую они представляют.