2

我想在特定的提交 ID 或时间之后获取所有提交及其变更集。有没有使用 Mercurial API 的直接方法?

4

1 回答 1

1

您可能知道, Mercurial没有稳定的 Python 级 API。命令行实际上是唯一受支持的 API(除非您使用JavaHgpython-hglib 之类的包装库)。

所以在命令行上你会运行

$ hg log -r "ID::"

之后获取所有变更集ID::运算符为您提供后代,如果您只是想要具有更高修订号的ID:变更集,即使它们不是ID.

使用 JavaHg,您将实例化一个Repository对象并使用LogCommand

List<Changeset> changesets = LogCommand.on(repo).rev(id + "::").execute();

然后,您可以遍历changesets列表。使用 python-hglib 它看起来像

changesets = client.log(id + "::")

最后,如果您直接导入 Mercurial 代码,您可以这样做

ctxs = repo.set(id + "::")

得到一个迭代器产生changectx对象。虽然我们不保证 Python API,但我希望它也非常稳定。

上面的重点是通过变更集 ID 或修订号进行查找。如果你想按日期查找,那么你需要调用相当于

$ hg log -d '>YOUR-DATE'

在 JavaHg 中,您可以只使用date(String date)on 方法LogCommand,在 python-hglib 中设置date关键字参数,并在内部使用daterevset 谓词 - 请参阅hg help revsets.

于 2012-02-08T13:30:37.583 回答