gpt4 book ai didi

python - Mercurial API : how do I get the 40 digit revision hash from incoming command?

转载 作者:行者123 更新时间:2023-11-30 23:04:42 25 4
gpt4 key购买 nike

我在我的项目中使用 python Mercurial API。

from mercurial import ui, hg, commands
from mercurial.node import hex

user_id = ui.ui()
hg_repo = hg.repository(user_id, '/path/to/repo')

hg_repo.ui.pushbuffer()
some_is_coming = commands.incoming(hg_repo.ui, hg_repo, source='default',
bundle=None, force=False)
if some_is_coming:
output = hg_repo.ui.popbuffer()

In [95]: output
Out[95]: 'comparing with ssh:host-name\nsearching for changes\nchangeset: 1:e74dcb2eb5e1\ntag: tip\nuser: that-is-me\ndate: Fri Nov 06 12:26:53 2015 +0100\nsummary: added input.txt\n\n'

提取短节点信息e74dcb2eb5e1将很容易。然而,我真正需要的是 40 位十六进制修订 ID。有没有办法在不先拉取存储库的情况下检索此信息?

最佳答案

您需要指定一个模板,该模板提供完整节点哈希作为其输出的一部分。另外,commands.incoming返回数字错误代码,其中零表示成功。 IE。你需要这样的东西:

from mercurial import ui, hg, commands
from mercurial.node import hex

user_id = ui.ui()
hg_repo = hg.repository(user_id, '/path/to/repo')

hg_repo.ui.pushbuffer()
command_result = commands.incoming(hg_repo.ui, hg_repo, source='default',
bundle=None, force=False, template="json")
if command_result == 0:
output = hg_repo.ui.popbuffer()
print output

还有两件事:首先,您还将获得诊断输出(“与...比较”),可以通过 -q 抑制该输出。 (或ui.setconfig("ui", "quiet", "yes"))。但请注意,此选项也会影响默认模板,您可能必须提供自己的模板。二、设置环境变量HGPLAIN建议使用 .hgrc 中的别名和默认值被忽略(参见 hg help scripting )。

或者,您可以使用 Mercurial command serverhglib 中实现(可通过 pip install python-hglib 获取)。

import hglib

client = hglib.open(".")
# Standard implementation of incoming, which returns a list of tuples.
# force=False and bundle=None are the defaults, so we don't need to
# provide them here.
print client.incoming(path="default")
# Or the raw command output with a custom template.
changeset = "[ {rev|json}, {node|json}, {author|json}, {desc|json}, {branch|json}, {bookmarks|json}, {tags|json}, {date|json} ]\n"
print client.rawcommand(["incoming", "-q", "-T" + changeset])

关于python - Mercurial API : how do I get the 40 digit revision hash from incoming command?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33567127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com