Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
hgbook.pdf
Скачиваний:
50
Добавлен:
17.03.2015
Размер:
3.15 Mб
Скачать

Обработка событий в репозитории с помощью ловушек

remote:http:ip-address — удаленный http клиент по указанному адресу. Если клиент использует SSL, то адрес будет в виде: https:ip-address.

Пустой адрес — информация о удаленном клиенте недоступна.

10.8. Ловушки. Описание.

10.8.1. changegroup — после внесения внешних ревизий

Эта ловушка запускается после того как группа уже существующих ревизий добавляется в репозиторий, например, через hg pull или hg unbundle. Эта ловушка выполняется один раз за операцию, добавления одной или более ревизий. В отличие от ловушки incoming, которая выполняется один раз на каждую ревизию, независимо от того, прибыли ли ревизии в группе.

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

Параметры ловушки:

node — ID ревизии. ID первой ревизии в добавляемой группе ревизий. Все ревизии между этой и tip, включительно, добавляются отдельными командами hg pull, hg push или hg unbundle.

source — Строка. Источник этих изменений. Смотрите раздел Раздел 10.7.3.1, «Источники изменений» для деталей.

url — URL. Местанахождение удаленного репозитория, если оно известно. Смотрите раздел Раздел 10.7.3.2, «Откуда пришли ревизии — URL удалённого репозитория» для деталей.

Смотрите также: incoming (раздел Раздел 10.8.3, «incoming — после добавления одной удаленной ревизии»), prechangegroup (раздел Раздел 10.8.5, «prechangegroup — до начала добавления ревизий удалённого репозитория»), pretxnchangegroup (раздел Раздел 10.8.9, «pretxnchangegroup — перед завершением добавления ревизий удалённого репозитория»)

10.8.2. commit—после создания новой ревизии

Эта ловушка запускается после того, как создан новая ревизия

Параметры ловушки:

node — ID ревизии. ID добавляемой ревизии.

parent1: ID ревизии. ID ревизии первого родителя добавляемой ревизии.

parent2: ID ревизии. ID ревизии второго родителя добавляемой ревизии.

Смотрите также: precommit (раздел Раздел 10.8.6, «precommit — перед фиксацией ревизии»), pretxncommit (раздел Раздел 10.8.10, «pretxncommit — перед завершением фиксации новой ревизии»)

10.8.3. incoming — после добавления одной удаленной ревизии

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

Вы можете использовать эту ловушку для тех же целей что и ловушку changegroup (см. раздел Раздел 10.8.1, «changegroup — после внесения внешних ревизий»); просто иногда более удобно выполнить один раз ловушку для группы ревизий, в то время как в другом случае удобнее выполнять ловушку один раз для ревизии.

124

Обработка событий в репозитории с помощью ловушек

Параметры этого хука:

node: ID ревизии. ID вновь добавляемой ревизии.

source: строка. Источник ревизий. Смотрите раздел Раздел 10.7.3.1, «Источники изменений» для деталей.

url: URL. Местанахождение удаленного репозитория, если оно известно. Смотрите раздел Раздел 10.7.3.2, «Откуда пришли ревизии — URL удалённого репозитория» для деталей.

Смотрите также: changegroup (раздел Раздел 10.8.1, «changegroup — после внесения внешних ревизий») prechangegroup (раздел Раздел 10.8.5, «prechangegroup — до начала добавления ревизий удалённого репозитория»), pretxnchangegroup (раздел Раздел 10.8.9, «pretxnchangegroup — перед завершением добавления ревизий удалённого репозитория»)

10.8.4. outgoing — после распространения ревизии

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

Одно из применений данного хука — это уведомление администраторов что изменения были вытянуты.

Параметры этого хука:

node: ID ревизии. ID первой посланной ревизии в группе ревизий.

source: строка. Источник операции (см. раздел Раздел 10.7.3.1, «Источники изменений»). Если удаленный клиент забирает изменения из этого репозитория, source будет равен serve. Если клиент, который забирает изменения из этого репозитория локальный, source будет равен bundle, pull, или push, в зависимости от операции выполняемой клиентом.

url: URL. Местанахождение удаленного репозитория, если оно известно. Смотрите раздел Раздел 10.7.3.2, «Откуда пришли ревизии — URL удалённого репозитория» для деталей.

Смотрите также: preoutgoing (раздел Раздел 10.8.7, «preoutgoing — до начала передачи ревизий в другие репозитории»)

10.8.5. prechangegroup — до начала добавления ревизий удалённого репозитория

Эта контролирующая ловушка запускается до того как Mercurial начнет добавлять группы ревизий из другого репозитория.

Эта ловушка не содержит информации о добавляемой ревизии, потому что она запускается до разрешения передачи этой ревизии. Если эта ловушка возвращает ошибку, ревизия не передаётся.

Эту ловушку можно использовать для запрета внешним пользователям вносить изменения в репозиторий. Например так можно «заморозить» ветку на сервере, на время или постоянно, от пользователей в то время как администратор будет модифицировать репозиторий.

Параметры этого хука:

source: строка. Источник ревизий. Смотрите раздел Раздел 10.7.3.1, «Источники изменений» для подробностей.

url: URL. Местанахождение удаленного репозитория, если оно известно. Смотрите раздел Раздел 10.7.3.2, «Откуда пришли ревизии — URL удалённого репозитория» для деталей.

Смотрите также: changegroup (раздел Раздел 10.8.1, «changegroup — после внесения внешних ревизий»), incoming (раздел Раздел 10.8.3, «incoming — после добавления одной удаленной ревизии»),

125

Обработка событий в репозитории с помощью ловушек

pretxnchangegroup (раздел Раздел 10.8.9, «pretxnchangegroup — перед завершением добавления ревизий удалённого репозитория»)

10.8.6. precommit — перед фиксацией ревизии

Эта ловушка запускается до начала фиксации Mercurial'ом новой ревизии. Выполняется до того, как Mercurial сформирует какие-либо метаданные для передачи, такие как файлы, сообщения, или даты.

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

Параметры этого хука:

parent1: ID ревизии. ID ревизии первого родителя рабочей директории.

parent2: ID ревизии. ID ревизии второго родителя рабочей директории.

Если фиксация завершится, то родители рабочей директории станут родителями новой ревизии.

Смотрите также: commit (раздел Раздел 10.8.2, «commit—после создания новой ревизии»), pretxncommit (раздел Раздел 10.8.10, «pretxncommit — перед завершением фиксации новой ревизии»)

10.8.7. preoutgoing — до начала передачи ревизий в другие репозитории

Этот ловушка вызывается до того как Mercurial узнает идентификатор ревизии, который будет передаваться.

Один из вариантов использования для этой ловушки — предотвращение передачи изменений в другой репозиторий.

Параметры ловушки:

source: Строка. Источник операции с помощью которой пытаются получить данные из этого хранилища (см. раздел Раздел 10.7.3.1, «Источники изменений»). Смотрите документацию на параметр source ловушки outgoing, в разделе Раздел 10.8.4, «outgoing — после распространения ревизии», для информации о возможных значений этого параметра.

url: URL. Местонахождение удаленного хранилища, если оно известно. См. раздел Раздел 10.7.3.2, «Откуда пришли ревизии — URL удалённого репозитория» для получения дополнительной информации.

Смотрите также: outgoing (раздел Раздел 10.8.4, «outgoing — после распространения ревизии»)

10.8.8. pretag — перед тегированием ревизии

Этот контролирующая ловушка запускается до создания тега. Если ловушка выполняется успешно, создание тега продолжается. Если ловушка не выполняется удачно, тег не создается.

Параметры ловушки:

local: Логическая. Определяет является ли новый тег локальным для экземпляра репозитория (т.е. сохранен в

.hg/localtags) или управляется Mercurial (сохранен в .hgtags)

node: ID ревизии. ID ревизии, которая была тегирована.

tag: Строка. Имя тега, который был создан.

Если тег должен быть создан под управлением ревизиями, ловушки precommit и pretxncommit (в разделе Раздел 10.8.2, «commit—после создания новой ревизии» и в разделе Раздел 10.8.10, «pretxncommit — перед завершением фиксации новой ревизии»), также будут запущены.

126

Обработка событий в репозитории с помощью ловушек

Смотрите также: tag (раздел Раздел 10.8.12, «tag — после создания метки ревизии»)

10.8.9. pretxnchangegroup — перед завершением добавления ревизий удалённого репозитория

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

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

Когда запускается эта ловушка другие процессы Mercurial, имеющие доступ к этому репозиторию, они будут иметь возможность увидеть почти добавленные ревизии, как будто они постоянные. Это может привести к гонкам, если не принять меры,чтобы их избежать.

Эту ловушку можно использовать для автоматической проверки ревизий. Если ловушка не удалось, все ревизии будут «отклонены» и транзакция будет отклонена.

Параметры ловушки:

node: ID ревизии. ID первой ревизии в добавляемой группе ревизий. Все ревизии между этой и tip, включительно, добавляются отдельными командами hg pull, hg push или hg unbundle.

source: Строка. Источник этих изменений. Смотрите раздел Раздел 10.7.3.1, «Источники изменений» для деталей.

url: URL. Местанахождение удаленного репозитория, если оно известно. Смотрите раздел Раздел 10.7.3.2, «Откуда пришли ревизии — URL удалённого репозитория» для деталей.

Смотрите также: changegroup (раздел Раздел 10.8.1, «changegroup — после внесения внешних ревизий»), incoming (раздел Раздел 10.8.3, «incoming — после добавления одной удаленной ревизии»), prechangegroup (раздел Раздел 10.8.5, «prechangegroup — до начала добавления ревизий удалённого репозитория»)

10.8.10. pretxncommit — перед завершением фиксации новой ревизии

Это управляющий хук запускается перед транзакцией, которая сделает новую фиксацию завершённой. Если хук отработал успешно, транзакция завершается и ревизия принимается в репозиторий. Если хук вернул ошибку — транзакция откатывается и принятые данные удаляются.

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

Пока выполняется этот хук, другие процессы Mercurial, обращающиеся к этому хранилищу, видят временное состояние хранилища как постоянное. Это может привести к ошибкам, если вы не предусмотрели мер предотвращения этого.

Параметры ловушки:

node: ID ревизии. ID новой фиксируемой ревизии.

parent1: ID ревизии. ID ревизии первого родителя добавляемой ревизии.

parent2: ID ревизии. ID ревизии второго родителя добавляемой ревизии.

Смотрите также: precommit (раздел Раздел 10.8.6, «precommit — перед фиксацией ревизии»)

127

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]