Как я могу написать специфичные для отрасли хуки в BZR? - PullRequest
0 голосов
/ 20 февраля 2010

В Subversion хуки пишутся для каждого репозитория. Каждый хук записывается в описательном имени файла (например, перед фиксацией) в папке с именем «хуки» в корне хранилища. Согласно документации BZR, хуки обычно устанавливаются глобально (например, в каталоге ~ / .bazaar / plugins /).

Можно ли создать, скажем, ловушку перед фиксацией, которая фиксируется в ветке и которая запускается без установки пользователем плагина?

Я вижу в документах и ​​в некоторых обсуждениях кода ссылку на то, что называется "ответвлениями", что звучит многообещающе.

Я нашел этот блог: http://schettino72.wordpress.com/2008/01/20/how-to-execute-tests-on-a-bazaar-pre-commit-hook/, который цитирует:

"плагины на базаре не являются проектами конкретный. так что вы не можете контролировать, в котором проекты (ветки) вашего плагина будет применяться (будет применяться к все). "

что менее перспективно. Блог предлагает обходной путь в том, что вы пишете и устанавливаете плагин, который вызывает хуки в вашем хранилище, если они существуют. В идеале я не хочу полагаться на то, что пользователи устанавливают плагины для запуска действительно простой ловушки, а именно простого теста. Это возможно?

Ответы [ 3 ]

2 голосов
/ 04 марта 2010

Вы можете использовать базарный сервер и устанавливать на них хуки.

Также Вас могут заинтересовать следующие ссылки:

http://people.samba.org/bzr/jelmer/bzr-shell-hooks/trunk/

http://bazaar.launchpad.net/~stianse/%2Bjunk/bzr-shell-hooks/

2 голосов
/ 07 марта 2010

Я провел некоторые исследования в этом направлении и обнаружил мотивацию отсутствия специфических для отрасли хуков в распределенных системах контроля версий. Я сравнил с Subversion, централизованной RCS, как пример желаемой функции.

GIT и Mercurial - это распределенные RCS (например, Bazaar), в которых есть инструменты для перехватов, включая различные подходы к перехватам, специфичным для отрасли, и глобальным перехватам. Несмотря на это, хуки не контролируются ревизиями, и они требуют, чтобы пользователь филиала включил их из-за угрозы безопасности. В документации Mercurial о крючках в разделе «Крючки и безопасность» говорится:

В Mercurial крючки не являются ревизиями контролируется и не размножается, когда Вы клонируете или извлекаете хранилище. Причина этого проста: крючок это совершенно произвольный кусок исполняемый код Он работает под вашим личность, с вашей привилегией уровень, на вашей машине.

Это было бы крайне безрассудно для любого распределенная система контроля версий внедрить крюки с контролем версий, как это будет легко предложить эксплуатируемый способ подорвать аккаунты пользователей ревизии система управления.

В централизованном RCS, таком как Subversion, перехваты запускаются на сервере репозитория, поэтому пользовательские разрешения и настройка сервера ограничивают воздействие разрушающего скрипта перехвата. В распределенном RCS хуки обычно запускаются на локальном компьютере пользователя, что рискованно.

Как упоминается vitaly.v.ch, сервер Bazaar может быть настроен для запуска хуков, когда их толкают и извлекают. Но тогда ловушка предварительной фиксации не имеет смысла, так как фиксация происходит на компьютере пользователя. Тогда это будет больше похоже на крючок предварительного толкания.

Bazaar обладает всеми необходимыми функциями для хуков, но для их установки и включения требуется индивидуальная конфигурация пользователя из-за угрозы безопасности, которую они представляют.

1 голос
/ 25 февраля 2010

Нет, ваши пользователи должны установить плагин для активации вашего хука.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...