如何使用内部Mercurial API获取两个修订版之间的变更集列表?

时间:2011-10-05 15:20:17

标签: mercurial pre-commit-hook

我想在pre-commit-hook中检查用户名。从命令行,我想要实现的目标如下:

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

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

1 个答案:

答案 0 :(得分: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'的更有用的定义:它包括节点的所有后代和tip的所有祖先,而不是简单的数字排序。

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

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

...并考虑改用python-hglib:

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