我正在编写一个变化无常的变更组挂钩。我还没有把所有的事情都弄清楚,但是我必须不断地承诺和推动只是为了测试我正在进行的工作,这让试错的过程变得更加痛苦。
有没有办法“伪造”一个触发器来执行我的变更组挂钩,并使用存储库的当前状态用于它的参数?
任何有助于简化此过程的帮助将不胜感激。谢谢尼克
我正在编写一个变化无常的变更组挂钩。我还没有把所有的事情都弄清楚,但是我必须不断地承诺和推动只是为了测试我正在进行的工作,这让试错的过程变得更加痛苦。
有没有办法“伪造”一个触发器来执行我的变更组挂钩,并使用存储库的当前状态用于它的参数?
任何有助于简化此过程的帮助将不胜感激。谢谢尼克
恐怕没有内置的调试功能。我在编写钩子时所做的是设置两个本地存储库:
$ 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
。我把它保存在我的命令行历史记录中,这样我就可以按↑</kbd> + Return to execute it again and again. The hg rollback
is the key: is effectively cancels the hg push
so that I can repeat it again and again.
你当然需要根据你的钩子的需要来调整它。如果钩子检查提交者名称,则hg commit -u someone
根据需要使用它来设置。如果钩子需要变更组中的多个变更集,则在推送之前进行两次或更多提交 - 回滚将负责删除所有推送的变更集。如果钩子由 运行hgweb
,则运行
$ hg serve --config 'web.push_ssl=no' --config 'web.allow_push=*'
在一个终端中服务repo
,而您在另一个终端中推到它。
我最近一直在使用 API 为 Mercurial 编写一个 python 钩子。为了测试它,我在存储库文件夹中启动 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
如果您的挂钩未按预期运行,您可以修改脚本并再次执行最后两行以重试。