Nic*_*ngs 16 python mercurial mercurial-hook
我正在编写一个mercurial changegroup hook.我还没有想到所有的东西,但是由于我必须继续承诺并且只是为了测试我正在进行的工作,因此试错的过程变得更加痛苦.
是否有任何方法可以"伪造"触发器来执行我的changegroup钩子,并使用存储库的当前状态来使用它的参数?
任何帮助简化这一过程的人都将非常感激.谢谢尼克
Mar*_*ler 18
我担心没有内置的调试功能.编写钩子时我要做的是设置两个本地存储库:
$ hg init repo
$ hg clone repo clone
Run Code Online (Sandbox Code Playgroud)
然后配置changegroup挂钩repo.现在进去clone做
$ echo a > a
$ hg add a
$ hg commit -m 'a file'
Run Code Online (Sandbox Code Playgroud)
设置clone.每次我想检查钩子,我跑
$ hg push; hg -R ../repo rollback
Run Code Online (Sandbox Code Playgroud)
在里面clone.我在命令行历史记录中保留它,以便我可以按↑+ Return一次又一次地执行它.该hg rollback是关键:被有效地消除了hg push,这样我可以一次又一次地重复.
您当然需要根据需要调整此钩子.如果钩子检查提交者名称,则使用hg commit -u someone根据需要设置它.如果挂钩在更改组中需要多个更改集,则在推送之前进行两次或更多次提交 - 回滚将负责删除所有推送的更改集.如果挂钩运行hgweb,则运行
$ hg serve --config 'web.push_ssl=no' --config 'web.allow_push=*'
Run Code Online (Sandbox Code Playgroud)
在一个终端服务repo,而你推到它的另一端.
我最近使用API为Mercurial编写了一个python钩子.为了测试它,我在存储库文件夹中启动python解释器后执行了以下操作.
from mercurial import ui, hg
repo = hg.repository(ui.ui(), '.')
execfile('./myhook.py')
myhook(repo.ui, repo, 'hash', 'outgoing')
Run Code Online (Sandbox Code Playgroud)
myhook您的钩子函数(位于myhook.py)中的哪个位置是您hash要测试钩子的变更集的哈希值,并且outgoing是钩子类型.
如果您的钩子没有按预期运行,您可以修改脚本并再次执行最后两行以重试.