jgit log コマンドを呼び出して、いくつかの RevCommit オブジェクトを取得しました。そこからいくつかの基本情報を取得できます。次のコードを使用して、変更されたファイルのリストを取得します。ただし、さらに2つの必要があります。
1) コミットに親がない場合、以下の情報を取得するにはどうすればよいですか?
2)各ファイルで変更されたコンテンツの差分を取得するにはどうすればよいですか
RevCommit commit = null;
RevWalk rw = new RevWalk(repository);
RevCommit parent = null;
if (commit.getParent(0) != null) {
parent = rw.parseCommit(commit.getParent(0).getId());
}
DiffFormatter df = new DiffFormatter(DisabledOutputStream.INSTANCE);
df.setRepository(repository);
df.setDiffComparator(RawTextComparator.DEFAULT);
df.setDetectRenames(true);
List<DiffEntry> diffs = df.scan(parent.getTree(), commit.getTree());
for (DiffEntry diff : diffs) {
System.out.println(getCommitMessage());
System.out.println("changeType=" + diff.getChangeType().name()
+ " newMode=" + diff.getNewMode().getBits()
+ " newPath=" + diff.getNewPath()
+ " id=" + getHash());
}