我想在特定的提交 ID 或时间之后获取所有提交及其变更集。有没有使用 Mercurial API 的直接方法?
问问题
253 次
1 回答
1
您可能知道, Mercurial没有稳定的 Python 级 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)
on 方法LogCommand
,在 python-hglib 中设置date
关键字参数,并在内部使用date
revset 谓词 - 请参阅hg help revsets
.
于 2012-02-08T13:30:37.583 回答