如何使用Mercurial API获取特定时间范围之间或特定修订版本或最新提交ID之后的修订历史记录?

时间:2011-12-15 07:00:53

标签: mercurial logging dvcs mercurial-hook

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

1 个答案:

答案 0 :(得分:1)

您可能知道,Mercurial有no stable Python-level 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)上使用LogCommand方法,在python-hglib中设置date关键字参数,在内部使用date revset谓词 - 见hg help revsets