Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.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
Eclipse 调查结果;主动的;EGIT存储库中的分支_Eclipse_Git_Egit_Jgit - Fatal编程技术网

Eclipse 调查结果;主动的;EGIT存储库中的分支

Eclipse 调查结果;主动的;EGIT存储库中的分支,eclipse,git,egit,jgit,Eclipse,Git,Egit,Jgit,我必须修改一个错误的程序/特性,它是org.eclipse.jgit的扩展 程序覆盖PushResultDialog的close方法,并将存储库传递给一个方法。 在这里,我想找到实际上被推出/签出的分支。我只对主人感兴趣,否则我什么都不想做。 否则我需要推送文件的列表 首先,该程序如下所示: head = repo.resolve(Constants.HEAD); RevCommit commit = rw.parseCommit(head); Pers

我必须修改一个错误的程序/特性,它是org.eclipse.jgit的扩展

程序覆盖PushResultDialog的close方法,并将存储库传递给一个方法。 在这里,我想找到实际上被推出/签出的分支。我只对主人感兴趣,否则我什么都不想做。 否则我需要推送文件的列表

首先,该程序如下所示:

    head = repo.resolve(Constants.HEAD);
        RevCommit commit = rw.parseCommit(head);

        PersonIdent committerIdent = commit.getCommitterIdent();
        sCommitter = committerIdent.getName();

        String sBranch = "?";

        for (Map.Entry<String, Ref> e : repo.getAllRefs().entrySet()) {
            if (e.getKey().startsWith(Constants.R_HEADS)) {
                Ref ref = e.getValue();
                if (rw.isMergedInto(commit, rw.parseCommit(ref.getObjectId()))) {
                    sTemp = ref.getName();

                    int i = sTemp.lastIndexOf('/');
                    if (i == -1)
                        continue;

                    sBranch = sTemp.substring(i + 1);

                    System.out.println("Ref " + sBranch 
                            + " < contains > " + commit);

                    if (sBranch.equalsIgnoreCase("master")) {
                        break;
                    } else {
                        return;
                    }
                }
            }
        }

        RevCommit parent = rw.parseCommit(commit.getParent(0).getId());
        DiffFormatter df = new DiffFormatter(
                DisabledOutputStream.INSTANCE);
        df.setRepository(repo);
        df.setDiffComparator(RawTextComparator.DEFAULT);
        df.setDetectRenames(true);
        List<DiffEntry> diffs = df.scan(parent.getTree(),
                commit.getTree());
        for (DiffEntry diff : diffs) {
            sTemp = diff.getNewPath();
            pushedObjects.add(sTemp);
        }

问题是:是否有一种简单的方法来选择正确的分支?

好的,我想我可以简单地看一下集合中的头部:

e.getKey().startsWith(Constants.HEAD)

然后解析branchname,它应该始终是签出的分支,如果(在我的情况下),如果它是主分支,我很高兴。

首先,您不能假设无序集将保持任何顺序(这就是它无序的原因)。第二,你不能假设有一个叫做“master”的分支机构(虽然通常是这样)。我必须假设有一个叫做master的分支机构,这是我们公司的标准,必须存在。但你是对的,没有秩序,这是我的问题。ATM我想知道我是否可以使用
RevCommit commit=rw.parseCommit(repo.resolve(Constants.HEAD)),获得最后一次提交
然后用
commit.equals(rw.parseCommit(ref.getObjectId())替换
rw.isMergedInto(commit,rw.parseCommit(ref.getObjectId())
e.getKey().startsWith(Constants.HEAD)