Example usage for org.eclipse.jgit.merge ThreeWayMerger merge

List of usage examples for org.eclipse.jgit.merge ThreeWayMerger merge

Introduction

In this page you can find the example usage for org.eclipse.jgit.merge ThreeWayMerger merge.

Prototype

@Override
public boolean merge(AnyObjectId... tips) throws IOException 

Source Link

Usage

From source file:com.google.gerrit.server.git.MergeUtil.java

License:Apache License

public boolean canMerge(final MergeSorter mergeSorter, final Repository repo, final CodeReviewCommit mergeTip,
        final CodeReviewCommit toMerge) throws MergeException {
    if (hasMissingDependencies(mergeSorter, toMerge)) {
        return false;
    }/* w w w .  j a  va2s.c  o m*/

    ThreeWayMerger m = newThreeWayMerger(repo, createDryRunInserter(repo));
    try {
        return m.merge(new AnyObjectId[] { mergeTip, toMerge });
    } catch (LargeObjectException e) {
        log.warn("Cannot merge due to LargeObjectException: " + toMerge.name());
        return false;
    } catch (NoMergeBaseException e) {
        return false;
    } catch (IOException e) {
        throw new MergeException("Cannot merge " + toMerge.name(), e);
    }
}

From source file:com.google.gerrit.server.git.MergeUtil.java

License:Apache License

public CodeReviewCommit mergeOneCommit(PersonIdent author, PersonIdent committer, Repository repo,
        CodeReviewRevWalk rw, ObjectInserter inserter, RevFlag canMergeFlag, Branch.NameKey destBranch,
        CodeReviewCommit mergeTip, CodeReviewCommit n) throws MergeException {
    final ThreeWayMerger m = newThreeWayMerger(repo, inserter);
    try {//from  w  w  w . j  ava  2  s. co  m
        if (m.merge(new AnyObjectId[] { mergeTip, n })) {
            return writeMergeCommit(author, committer, rw, inserter, canMergeFlag, destBranch, mergeTip,
                    m.getResultTreeId(), n);
        } else {
            failed(rw, canMergeFlag, mergeTip, n, CommitMergeStatus.PATH_CONFLICT);
        }
    } catch (NoMergeBaseException e) {
        try {
            failed(rw, canMergeFlag, mergeTip, n, getCommitMergeStatus(e.getReason()));
        } catch (IOException e2) {
            throw new MergeException("Cannot merge " + n.name(), e);
        }
    } catch (IOException e) {
        throw new MergeException("Cannot merge " + n.name(), e);
    }
    return mergeTip;
}

From source file:org.eclipse.orion.server.git.objects.Diff.java

License:Open Source License

private URI getBaseLocation(URI location, Repository db, IPath path) throws URISyntaxException, IOException {
    String scope = path.segment(0);
    if (scope.contains("..")) { //$NON-NLS-1$
        String[] commits = scope.split("\\.\\."); //$NON-NLS-1$
        if (commits.length != 2) {
            throw new IllegalArgumentException(
                    NLS.bind("Illegal scope format, expected {old}..{new}, was {0}", scope));
        }/* www  .  java2 s.  c  o m*/
        ThreeWayMerger merger = new ResolveMerger(db) {
            protected boolean mergeImpl() throws IOException {
                // do nothing
                return false;
            }
        };
        // use #merge to set sourceObjects
        String tip0 = GitUtils.decode(commits[0]);
        String tip1 = GitUtils.decode(commits[1]);
        merger.merge(new ObjectId[] { db.resolve(tip0), db.resolve(tip1) });
        RevCommit baseCommit = merger.getBaseCommit(0, 1);

        IPath p = new Path(GitServlet.GIT_URI + '/' + Commit.RESOURCE).append(baseCommit.getId().getName())
                .append(path.removeFirstSegments(1));
        return new URI(location.getScheme(), location.getUserInfo(), location.getHost(), location.getPort(),
                p.toString(), "parts=body", null); //$NON-NLS-1$
    } else if (scope.equals(GitConstants.KEY_DIFF_CACHED)) {
        // HEAD is the base
        IPath p = new Path(GitServlet.GIT_URI + '/' + Commit.RESOURCE).append(Constants.HEAD)
                .append(path.removeFirstSegments(1));
        return new URI(location.getScheme(), location.getUserInfo(), location.getHost(), location.getPort(),
                p.toString(), "parts=body", null); //$NON-NLS-1$
    } else {
        // index is the base
        IPath p = new Path(GitServlet.GIT_URI + '/' + Index.RESOURCE).append(path.removeFirstSegments(1));
        return new URI(location.getScheme(), location.getUserInfo(), location.getHost(), location.getPort(),
                p.toString(), null, null);
    }
}

From source file:org.eclipse.orion.server.git.servlets.GitDiffHandlerV1.java

License:Open Source License

private URI getBaseLocation(URI location, Repository db, Path path) throws URISyntaxException, IOException {
    String scope = path.segment(0);
    if (scope.contains("..")) { //$NON-NLS-1$
        String[] commits = scope.split("\\.\\."); //$NON-NLS-1$
        if (commits.length != 2) {
            // TODO:
            throw new IllegalArgumentException();
        }/* w ww  .  jav a2 s  .  co  m*/
        // TODO: decode commits[]

        ThreeWayMerger merger = new ResolveMerger(db) {
            protected boolean mergeImpl() throws IOException {
                // do nothing
                return false;
            }
        };
        // use #merge to set sourceObjects
        merger.merge(new ObjectId[] { db.resolve(commits[0]), db.resolve(commits[1]) });
        RevCommit baseCommit = merger.getBaseCommit(0, 1);

        IPath p = new Path(GitServlet.GIT_URI + '/' + GitConstants.COMMIT_RESOURCE)
                .append(baseCommit.getId().getName()).append(path.removeFirstSegments(1));
        return new URI(location.getScheme(), location.getUserInfo(), location.getHost(), location.getPort(),
                p.toString(), "parts=body", null); //$NON-NLS-1$
    } else if (scope.equals(GitConstants.KEY_DIFF_CACHED)) {
        // HEAD is the base
        IPath p = new Path(GitServlet.GIT_URI + '/' + GitConstants.COMMIT_RESOURCE).append(Constants.HEAD)
                .append(path.removeFirstSegments(1));
        return new URI(location.getScheme(), location.getUserInfo(), location.getHost(), location.getPort(),
                p.toString(), "parts=body", null); //$NON-NLS-1$
    } else {
        // index is the base
        IPath p = new Path(GitServlet.GIT_URI + '/' + GitConstants.INDEX_RESOURCE)
                .append(path.removeFirstSegments(1));
        return new URI(location.getScheme(), location.getUserInfo(), location.getHost(), location.getPort(),
                p.toString(), null, null);
    }
}