如何使用JGit获取提交的更改文件列表

时间:2020-11-04 01:42:44

标签: jgit

我想获取两次提交之间的更改文件,而不是diff信息,如何使用JGit进行修改?

1 个答案:

答案 0 :(得分:0)

在两个引用都指向两个提交的情况下,只需执行以下操作即可迭代提交之间的所有更改:

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

        // prepare the two iterators to compute the diff between
        try (ObjectReader reader = repository.newObjectReader()) {
            CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
            oldTreeIter.reset(reader, oldHead);
            CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
            newTreeIter.reset(reader, head);

            // finally get the list of changed files
            try (Git git = new Git(repository)) {
                List<DiffEntry> diffs= git.diff()
                                    .setNewTree(newTreeIter)
                                    .setOldTree(oldTreeIter)
                                    .call();
                for (DiffEntry entry : diffs) {
                    System.out.println("Entry: " + entry);
                }
            }
        }
    }

jgit-cookbook

中包含一个现成的示例代码段
相关问题