0

我想在 pre-commit-hook 中检查用户名。在命令行中,我想要实现的效果如下所示:

hg log -r "$HG_NODE:tip" --template "{author}\n"

如何使用内部 Mercurial API 实现相同的目标?

4

1 回答 1

3

假设您已经知道如何获取 repo 对象,您可以使用稳定版本:

start = repo[node].rev()
end = repo['tip'].rev()

for r in xrange(start, end + 1):
    ctx = repo[r]
    print ctx.user()

在开发分支中,您可以这样做:

for ctx in repo.set('%s:tip', node): # node here must be hex, use %n for binary
    print ctx.user()

还要注意'node::tip'(两个冒号)可能是'between'的更有用的定义:它包括node的所有后代和tip的所有祖先,而不是简单的数字排序。

最后,请确保您已阅读此处有关使用内部 API 的所有注意事项:

https://www.mercurial-scm.org/wiki/MercurialApi

...并考虑使用 python-hglib 代替:

https://www.mercurial-scm.org/wiki/CommandServer

于 2011-10-05T18:47:38.000 回答