简单、无痛的方法来测试新的mercurial钩子(正在进行中)

2024-04-26 10:36:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个mercurial changegroup钩子。我还没有把所有的事情都弄清楚,但是为了测试我正在进行的工作,我不得不不断地投入和推动,这使试错的过程变得更加痛苦。在

有没有办法“伪造”一个触发器来使用存储库的当前状态来执行我的changegroup钩子?在

如果能帮助简化这一过程,我们将不胜感激。 谢谢 尼克


Tags: 过程状态事情mercurial钩子触发器办法changegroup
2条回答

我最近使用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是钩子类型。在

如果钩子的行为与预期不符,可以修改脚本并再次执行最后两行以重试。在

恐怕没有内置的调试功能。编写钩子时要做的是设置两个本地存储库:

$ hg init repo
$ hg clone repo clone

然后在repo中配置changegroup钩子。现在进入clone,然后

^{pr2}$

设置clone。每次我想检查钩子,我就跑

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

clone内。我把它保存在我的命令行历史中,这样我就可以按+Return来反复执行它。hg rollback是关键:它有效地取消了hg push,这样我就可以一次又一次地重复它。在

你当然需要根据你的钩子调整这个。如果钩子检查提交者名称,那么根据需要使用hg commit -u someone来设置它。如果钩子需要变更组中的多个变更集,那么在推送之前进行两次或多次提交-rollback将负责移除所有被推送的变更集。如果钩子是由hgweb运行的,那么运行

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

在一个终端中为repo提供服务,而在另一个终端中推送到它。在

相关问题 更多 >