2024-04-26 10:36:41 发布
网友
我正在编写一个mercurial changegroup钩子。我还没有把所有的事情都弄清楚,但是为了测试我正在进行的工作,我不得不不断地投入和推动,这使试错的过程变得更加痛苦。在
有没有办法“伪造”一个触发器来使用存储库的当前状态来执行我的changegroup钩子?在
如果能帮助简化这一过程,我们将不胜感激。 谢谢 尼克
我最近使用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是钩子类型。在
myhook
myhook.py
hash
outgoing
如果钩子的行为与预期不符,可以修改脚本并再次执行最后两行以重试。在
恐怕没有内置的调试功能。编写钩子时要做的是设置两个本地存储库:
$ hg init repo $ hg clone repo clone
然后在repo中配置changegroup钩子。现在进入clone,然后
repo
changegroup
clone
设置clone。每次我想检查钩子,我就跑
$ hg push; hg -R ../repo rollback
在clone内。我把它保存在我的命令行历史中,这样我就可以按↑+Return来反复执行它。hg rollback是关键:它有效地取消了hg push,这样我就可以一次又一次地重复它。在
hg rollback
hg push
你当然需要根据你的钩子调整这个。如果钩子检查提交者名称,那么根据需要使用hg commit -u someone来设置它。如果钩子需要变更组中的多个变更集,那么在推送之前进行两次或多次提交-rollback将负责移除所有被推送的变更集。如果钩子是由hgweb运行的,那么运行
hg commit -u someone
hgweb
$ hg serve config 'web.push_ssl=no' config 'web.allow_push=*'
在一个终端中为repo提供服务,而在另一个终端中推送到它。在
我最近使用API为Mercurial编写了一个python钩子。为了测试它,我在存储库文件夹中启动python解释器之后执行了以下操作。在
其中
myhook
是您的钩子函数(位于myhook.py
),hash
是要用来测试钩子的变更集的散列,outgoing
是钩子类型。在如果钩子的行为与预期不符,可以修改脚本并再次执行最后两行以重试。在
恐怕没有内置的调试功能。编写钩子时要做的是设置两个本地存储库:
然后在
^{pr2}$repo
中配置changegroup
钩子。现在进入clone
,然后设置
clone
。每次我想检查钩子,我就跑在
clone
内。我把它保存在我的命令行历史中,这样我就可以按↑+Return来反复执行它。hg rollback
是关键:它有效地取消了hg push
,这样我就可以一次又一次地重复它。在你当然需要根据你的钩子调整这个。如果钩子检查提交者名称,那么根据需要使用
hg commit -u someone
来设置它。如果钩子需要变更组中的多个变更集,那么在推送之前进行两次或多次提交-rollback将负责移除所有被推送的变更集。如果钩子是由hgweb
运行的,那么运行在一个终端中为
repo
提供服务,而在另一个终端中推送到它。在相关问题 更多 >
编程相关推荐