2012-03-06 7 views
16

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

Есть ли способ «подделать» триггер для выполнения моего крюка changegroup с текущим статусом репозитория, который будет использоваться для его параметров?

Любая помощь для оптимизации этого процесса будет очень признательна. Спасибо Nick

ответ

18

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

$ hg init repo 
$ hg clone repo clone 

, а затем настроить changegroup крюк в repo. Теперь перейдите в clone и сделать

$ echo a > a 
$ hg add a 
$ hg commit -m 'a file' 

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

$ hg push; hg -R ../repo rollback 

внутри clone. Я сохраняю это в истории моей командной строки, чтобы я мог просто нажать + Вернулся, чтобы выполнить его снова и снова. hg rollback - это ключ: эффективно отменяет hg push, чтобы я мог повторять его снова и снова.

Разумеется, вам необходимо отрегулировать это по мере необходимости для вашего крючка. Если крючок проверяет имя коммиттера, используйте hg commit -u someone, чтобы установить это при необходимости. Если в группе изменений требуется более одного набора изменений, тогда совершите два или более коммитов перед нажатием - откат позаботится об удалении всех нажатых наборов изменений. Если крючок находится в ведении hgweb, а затем запустить

$ hg serve --config 'web.push_ssl=no' --config 'web.allow_push=*' 

в одном терминале, чтобы служить repo в то время как вы нажимаете на него в другом терминале.

+0

Спасибо, это упрощает то, как я собирался об этом несколькими способами! :) –

6

Я недавно пишу крюк python для Mercurial, используя API. Чтобы проверить его, я сделал следующее, после запуска интерпретатора python внутри папки репозитория.

from mercurial import ui, hg 
repo = hg.repository(ui.ui(), '.') 
execfile('./myhook.py') 
myhook(repo.ui, repo, 'hash', 'outgoing') 

Где myhook это ваша функция крюка (находится в myhook.py), hash является хэшем ревизии вы хотите проверить свой крюк с, и outgoing типа крючка.

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

 Смежные вопросы

  • Нет связанных вопросов^_^