[英]Get the list of changed files after a pull with JGit
我想知道如何在拉取请求后检索已更改文件的列表。
我正在使用它来获取所有合并的提交,但我想知道所有已更改的文件。
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?
}
在之前的评论/问题的基础上:
在拉动之前获取当前头部:
ObjectId oldHead = repository.resolve("HEAD^{tree}");
并再次拉后 :
ObjectId head = repository.resolve("HEAD^{tree}");
然后你应该能够以与我如何使用jgit相同的“git diff --name-status”相同的方式运行diff ? :
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();
$git diff-tree --no-renames --no-commit-id --name-only -r
我的方法对我有用:
1.将所有哈希值转换为文件(说tempfile1)
2. xargs -n1 git diff-tree --no-renames --no-commit-id --name-only -r <tempfile1 >> tempfile2
3. sort tempfile2 | uniq >> final(删除重复的条目)
最终文件将包含所有已更改的文件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.