特定のコミット ID または時間の後に、変更セットを含むすべてのコミットを取得したいと考えています。Mercurial API を使用してそれを行う直接的な方法はありますか?
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'
date(String date)
JavaHg ではメソッド onを使用するだけLogCommand
で、python-hglib ではdate
キーワード引数を設定し、内部ではdate
revset 述語を使用します — を参照してくださいhg help revsets
。