git logのrange指定をjgitで行う

前回の記事「git logのrange指定」で行ったことをJavaから行います。gitへのアクセスを一から書くと大変なので今回はjgitを使用します。

行うことの流れとしては以下の通り。

  1. Repositoryインスタンス作成
  2. RevWalkインスタンス作成
  3. 範囲となるRevCommit(始点、終点)インスタンス作成
  4. RevWalkにRevCommit(始点、終点)をmark
  5. RevWalkで範囲内のRevCommitを取得

1から5をコードに起こすとだいたいこんな感じ。リポジトリの場所及びCommitの範囲は引数で指定するようにしました。出力内容は前回の記事「git logのrange指定」と合わせています。

この程度であればmainで終わらせてもよいですね。インスタンスを作って実行しているのは癖みたいなものなので適当に読み飛ばしてください。

今回はJava8で書いています。せっかくなのでラムダ式を使ってみました。RevWalkで範囲内のRevCommitを取得する箇所がそれです。中々便利ですね。

使用するRepositoryは前回の記事「git logのrange指定」で使用したものと同じで、release/v0.2.0からrelease/v0.1.0の範囲を指定して実行すると以下が出力されます。

当たり前ですが、 同じ内容になっています。

単に範囲のCommitを取得したいぐらいであればgit logでよいかと思います。その先で取得した情報から何かしたい場合にjgit(とJava)は色々と役立ってくれそうです。

jgitを使うにあたってUser Guideがとっかかりとしていい情報源でした。
では。

References   [ + ]

1. RevCommit commit) -> { System.out.printf("%s\t%s\n", commit.getName().substring(0, 7), commit.getShortMessage(