JGit:如何穿越回购时得到分公司(JGit : How to get Branch when tr

2019-09-17 00:56发布

在缺乏JGit文档不似乎说一下如何使用/,而使用RevWalk检测分支东西。

这个问题说,几乎同样的事情。

所以我的问题是:我如何从RevCommit分支名称/ ID? 或如何指定遍历前手哪个分支?

Answer 1:

找到了一个更好的方式通过循环分支机构去做。

我绕挂在树枝通过调用

for (Ref branch : git.branchList().call()){
    git.checkout().setName(branch.getName()).call();
    // Then just revwalk as normal.
}


Answer 2:

在当前实现JGit的展望(见它的混帐回购协议及其RevCommit类),我没有发现什么是“上市相当于混帐:寻找什么分支提交的来源 ”。
即:

git branch --contains <commit>

只有一些选项git branch来实现(如在ListBranchCommand.java )。



Answer 3:

可以使用下面的代码为“从”分支得到的承诺:

/**
     * find out which branch that specified commit come from.
     * 
     * @param commit
     * @return branch name.
     * @throws GitException 
     */
    public String getFromBranch(RevCommit commit) throws GitException{
        try {
            Collection<ReflogEntry> entries = git.reflog().call();
            for (ReflogEntry entry:entries){
                if (!entry.getOldId().getName().equals(commit.getName())){
                    continue;
                }

                CheckoutEntry checkOutEntry = entry.parseCheckout();
                if (checkOutEntry != null){
                    return checkOutEntry.getFromBranch();
                }
            }

            return null;
        } catch (Exception e) {
            throw new GitException("fail to get ref log.", e);
        }
    }


文章来源: JGit : How to get Branch when traversing repos