前回はjgitを使用して範囲内のCommit一覧を取得しました。今回は指定したCommit間の追加/修正/削除ファイル一覧を取得します。
流れとしては以下になります。
- Repositoryインスタンス作成
- RevWalkインスタンス作成
- DiffFormatterインスタンス生成とRepository設定
- 範囲となるRevCommit(始点、終点)インスタンス作成
- RevCommitからRevTreeインスタンス取得
- DiffFormatterでDiffEntry一覧を取得
前回はjgitを使用して範囲内のCommit一覧を取得しました。今回は指定したCommit間の追加/修正/削除ファイル一覧を取得します。
流れとしては以下になります。
前回の記事「git logのrange指定」で行ったことをJavaから行います。gitへのアクセスを一から書くと大変なので今回はjgitを使用します。
行うことの流れとしては以下の通り。
git logのRevisionを指定するとき、指定した範囲よりも前のRevisionからBranchを切っていて、そのBranchをMergeしたのが指定した範囲内だった場合にどう動くのだろうか?と思ったので調べてみた。
師匠も走る師走。この業界は長いこと年の瀬が続いている気がします。
閑話休題。
つい最近、開発ブランチにある他人の修正をcherry-pickしたときに気付いたので話のネタ(?)的に投稿。
cherry-pick対象のコミットのauthorがそのまま新しいコミットのauthorになるって知っていました?
ブランチdevにあるAさんのコミットをBさんがブランチmasterでcherry-pickすると、masterにできるコミットのauthorはAさんになる。Bさんがcherry-pickしたのに。…これは…完全犯罪ができる!?
もちろん何もログが残っていないわけではなく、authorではなくcommitterとしてBさんの名前が入るし、cherry-pickだよって情報も入るそうな。
GitのviewerとしてSourceTreeを使ったりするんだけれど、ツリー上に表示する名前に自分の名前が入ってなくて驚いた次第です。他人のコミットをcherry-pickしたのは初めてだったので。
では。