更新时间:2023-12-02 16:58:28
问题:
获取当前头之前:
ObjectId oldHead = repository.resolve(HEAD ^ {tree});
之后再次拉:
ObjectId head = repository.resolve(HEAD ^ {tree});
然后您应该能够像我该怎么做相当于git diff - 名称状态"与jgit?:
ObjectReader reader = repository.newObjectReader();
CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
oldTreeIter.reset(reader,oldHead);
CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
newTreeIter.reset(reader,head);
列表< DiffEntry> diffs = git.diff()
.setNewTree(newTreeIter)
.setOldTree(oldTreeIter)
.call();
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?
}
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();