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

发布于 2024-12-08 08:26:12 字数 153 浏览 1 评论 0原文

我想检查预提交挂钩中的用户名。从命令行,我想要实现的目标如下所示:

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

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

I want to check the user names in a pre-commit-hook. From the command line, what I want to achieve looks like this:

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

How do I achieve the same using the internal Mercurial API?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沧桑㈠ 2024-12-15 08:26:12

假设您已经弄清楚如何获取存储库对象,在稳定版本中您可以执行以下操作:

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”(两个冒号)可能更有用“之间”的定义:它包括节点的所有后代和尖端的所有祖先,而不是简单的数字排序。

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

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

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

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

Presuming you've already figured out how to get a repo object, with the stable release you can do:

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

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

In the development branch, you can do this:

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

Also note that 'node::tip' (two colons) might be a more useful definition of 'between': it includes all descendants of node and all ancestors of tip, rather than simply numerical ordering.

Lastly, make sure you've read all the caveats about using the internal API here:

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

...and consider using python-hglib instead:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文