繁体   English   中英

使用JGit获取后获取已更改文件的列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM