Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get the list of changed files after a pull with JGit

Tags:

java

git

jgit

I would like to know how I can retrieve the list of changed files after a pull request.

I'm using this to get all the merged commits, but I want to know all the changed files.

Git git = new Git(localRepo);
PullCommand pullCmd = git.pull();
PullResult pullResult = pullCmd.call();
MergeResult mergeResult = pullResult.getMergeResult();
ObjectId[] mergedCommits = mergeResult.getMergedCommits();

for (ObjectId mergedCommit : mergedCommits) {
  // And now?
}
like image 837
Davide Pastore Avatar asked Jan 29 '26 03:01

Davide Pastore


1 Answers

Building on the previous comments/questions:

Get the current head before you pull:

ObjectId oldHead = repository.resolve("HEAD^{tree}");

And after the pull again:

ObjectId head = repository.resolve("HEAD^{tree}");

Then you should be able to run the diff the same way as in How do I do the equivalent of "git diff --name-status" with jgit?:

ObjectReader reader = repository.newObjectReader();
CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
oldTreeIter.reset(reader, oldHead);
CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
newTreeIter.reset(reader, head);
List<DiffEntry> diffs= git.diff()
                    .setNewTree(newTreeIter)
                    .setOldTree(oldTreeIter)
                    .call();
like image 70
centic Avatar answered Jan 31 '26 17:01

centic