我正在尝试调试 Mercurial 扩展。此扩展添加了一些在执行 a 时应执行的代码pull
。原作者通过更改存储库对象的类来设置此挂钩。
以下是相关代码(实际上是有效的 Mercurial 扩展):
def reposetup(ui, repo):
class myrepo(repo.__class__):
def pull(self, remote, heads=None, force=False):
print "pull called"
return super(myrepo, self).pull(remote, heads, force)
print "reposetup called"
if repo.local():
print "repo is local"
repo.__class__ = myrepo
当我在hg pull
启用此扩展程序的情况下执行时,输出如下:
# hg pull
reposetup called
repo is local
pulling from ssh://hgbox/myrepo
reposetup called
searching for changes
no changes found
这是在pull
命令中注入扩展代码的合理方式吗?为什么从未达到“拉动”声明?
我在 Windows 7 上使用 Mercurial 3.4.1 和 python 2.7.5。