使用JGit查找不在一个分支上的提交

时间:2019-11-11 22:12:20

标签: jgit

我试图在分支foo上找到不在master上的提交。我可以在简单的情况下使用此功能,但是一旦将新的更改从master合并到foo中,它就会崩溃。

详细信息:

  • 如果您在master上提交了A,B和C
  • 然后创建分支foo并在其中添加提交D和E
  • 然后您在master上创建提交F
  • 然后将F从master合并到foo(使用合并提交)

现在尝试获取合并基础将返回F而不是C。因此,我无法遍历从Cfoo头的提交(给CDEF,然后,我将使用D缩小到EisMergedInto

public RevCommit findMergeBase(ObjectId foo, ObjectId bar) throws MissingObjectException,
        IncorrectObjectTypeException, IOException {
    RevWalk walk = null;

    try {
        walk = new RevWalk(repo);
        RevCommit fooHead = walk.parseCommit(foo);
        RevCommit barHead = walk.parseCommit(bar);

        walk.setRevFilter(RevFilter.MERGE_BASE);
        walk.markStart(fooHead);
        walk.markStart(barHead);

        RevCommit base = null;
        while (true) {
            RevCommit commit = walk.next();
            if (commit == null)
                break;

            base = commit;
        }

        return base;
    }
    finally {
        if (walk != null) {
            walk.reset();
            walk.close();
            walk.dispose();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

好像是我由远程主分支的功能分支创建的问题?因此,它不知道功能分支如何连接到我的本地主机?更新我的本地主分支后,它就会按预期工作。