我想在特定的提交ID或时间之后获取所有具有变更集的提交。有没有直接的方法来使用Mercurial API?
答案 0 :(得分:1)
您可能知道,Mercurial有no stable Python-level API。命令行实际上是唯一受支持的API(除非您使用诸如JavaHg或python-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
。