Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JGit Differentry显示不存在的提交文件_Java_Git_Jgit - Fatal编程技术网

Java JGit Differentry显示不存在的提交文件

Java JGit Differentry显示不存在的提交文件,java,git,jgit,Java,Git,Jgit,我试图遍历所有存在的提交,以存储有关它的信息(作者、提交人、时间戳、文件等等)。它工作得很好,但有时当前提交会显示不存在的条目。我将其与GitHub上最初的提交以及本地git repo的图形用户界面进行了比较。我的代码有什么问题吗?或者我的想法有问题吗 private void getInformation() { Repository repository = new FileRepository(path); Git git = new Git(repository);

我试图遍历所有存在的提交,以存储有关它的信息(作者、提交人、时间戳、文件等等)。它工作得很好,但有时当前提交会显示不存在的条目。我将其与GitHub上最初的提交以及本地git repo的图形用户界面进行了比较。我的代码有什么问题吗?或者我的想法有问题吗

private void getInformation() {
    Repository repository = new FileRepository(path);
    Git git = new Git(repository);
    RevCommit oldCommit = null;
    DiffFormatter diffFormatter = null;
    RevWalk walk = null;
    boolean first = true;

    walk = new RevWalk(repository);
    walk.markStart(walk.parseCommit(repository.resolve("HEAD")));
    walk.sort(RevSort.REVERSE);

    for (RevCommit commit : walk) {

        if (first == true) {
            oldCommit = commit;
            first = false;
        }

        /* read the old and new commit ID to determine changes (method by Rüdiger Herrmann) */
        ObjectReader reader = git.getRepository().newObjectReader();
        CanonicalTreeParser oldTree = parseRawGitdata(git, commit, reader);
        CanonicalTreeParser newTree = parseRawGitdata(git, oldCommit, reader);
        diffFormatter = new DiffFormatter(DisabledOutputStream.INSTANCE);
        diffFormatter.setRepository(git.getRepository());
        diffFormatter.setDetectRenames(true);
        List<DiffEntry> entries = diffFormatter.scan(newTree, oldTree);

        if (!entries.isEmpty()) {
            for (DiffEntry entry : entries) {
                /* only .java class files are relevant */
                if (entry.getOldPath().endsWith(".java") || entry.getNewPath().endsWith(".java")) {
                    /* handle the current ChangeType... */
                    determineChangeType(entry, commit);
                }
            }
        }
        oldCommit = commit;
    }

    diffFormatter.close();
    walk.close();    
}

private CanonicalTreeParser parseRawGitdata(Git git, RevCommit commit, ObjectReader reader) {

    CanonicalTreeParser treeIter = new CanonicalTreeParser();
    ObjectId tree = git.getRepository().resolve(commit.getTree().getName());
    treeIter.reset(reader, tree);

    return treeIter;
}  
根据GitHub,auhor于2016年8月1日承诺(af50018f11d4fdfa8ac04a55f942a4973cb15c87)增加76项,删除17项

+27 −16 core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
+49 −1 core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java
为什么我的Differentry集合包含这么多不属于官方提交的数据

JGit是否也提供了淹没先前数据结构的未提交数据

+27 −16 core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
+49 −1 core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java