Package org.eclipse.jgit.merge

Examples of org.eclipse.jgit.merge.ResolveMerger


                              Integer.valueOf(srcCommit.getParentCount())));

         RevCommit srcParent = srcCommit.getParent(0);
         revWalk.parseHeaders(srcParent);

         ResolveMerger merger = (ResolveMerger) MergeStrategy.RESOLVE
                  .newMerger(repo);
         merger.setWorkingTreeIterator(new FileTreeIterator(repo));
         merger.setBase(srcParent.getTree());
         if (merger.merge(headCommit, srcCommit))
         {
            DirCacheCheckout dco = new DirCacheCheckout(repo,
                     headCommit.getTree(), repo.lockDirCache(),
                     merger.getResultTreeId());
            dco.setFailOnConflict(true);
            dco.checkout();

            cherryPickedRefs.add(src);
         }
         else
         {
            if (merger.failed())
               return new CherryPickResult(merger.getFailingPaths());

            // there are merge conflicts
            String message = new MergeMessageFormatter()
                     .formatWithConflicts(srcCommit.getFullMessage(),
                              merger.getUnmergedPaths());

            repo.writeCherryPickHead(srcCommit.getId());
            repo.writeMergeCommitMsg(message);

            return CherryPickResult.CONFLICT;
View Full Code Here


              JGitText.get().canOnlyRevertCommitsWithOneParent);
        }
        RevCommit srcParent = srcCommit.getParent(0);
        revWalk.parseHeaders(srcParent);

        ResolveMerger merger = (ResolveMerger) MergeStrategy.RESOLVE
            .newMerger(repo);
        merger.setWorkingTreeIterator(new FileTreeIterator(repo));
        merger.setBase(srcCommit.getTree());

        if (merger.merge(headCommit, srcParent)) {
          if (AnyObjectId.equals(headCommit.getTree().getId(), merger
              .getResultTreeId()))
            continue;
          DirCacheCheckout dco = new DirCacheCheckout(repo,
              headCommit.getTree(), repo.lockDirCache(),
              merger.getResultTreeId());
          dco.setFailOnConflict(true);
          dco.checkout();
          String newMessage = "Revert \""
              + srcCommit.getShortMessage() + "\"" + "\n\n"
              + "This reverts commit "
View Full Code Here

            .newMerger(repo);
        boolean noProblems;
        Map<String, org.eclipse.jgit.merge.MergeResult<?>> lowLevelResults = null;
        Map<String, MergeFailureReason> failingPaths = null;
        if (merger instanceof ResolveMerger) {
          ResolveMerger resolveMerger = (ResolveMerger) merger;
          resolveMerger.setCommitNames(new String[] {
              "BASE", "HEAD", ref.getName() });
          resolveMerger.setWorkingTreeIterator(new FileTreeIterator(repo));
          noProblems = merger.merge(headCommit, srcCommit);
          lowLevelResults = resolveMerger
              .getMergeResults();
          failingPaths = resolveMerger.getFailingPaths();
        } else
          noProblems = merger.merge(headCommit, srcCommit);

        if (noProblems) {
          DirCacheCheckout dco = new DirCacheCheckout(repo,
View Full Code Here

              JGitText.get().canOnlyCherryPickCommitsWithOneParent);
        }
        RevCommit srcParent = srcCommit.getParent(0);
        revWalk.parseHeaders(srcParent);

        ResolveMerger merger = (ResolveMerger) MergeStrategy.RESOLVE
            .newMerger(repo);
        merger.setWorkingTreeIterator(new FileTreeIterator(repo));
        merger.setBase(srcParent.getTree());

        if (merger.merge(headCommit, srcCommit)) {
          if (AnyObjectId.equals(headCommit.getTree().getId(), merger
              .getResultTreeId()))
            continue;
          DirCacheCheckout dco = new DirCacheCheckout(repo,
              headCommit.getTree(), repo.lockDirCache(),
              merger.getResultTreeId());
          dco.setFailOnConflict(true);
          dco.checkout();
          newHead = new Git(getRepository()).commit()
              .setMessage(srcCommit.getFullMessage())
              .setAuthor(srcCommit.getAuthorIdent()).call();
View Full Code Here

                              Integer.valueOf(srcCommit.getParentCount())));

         RevCommit srcParent = srcCommit.getParent(0);
         revWalk.parseHeaders(srcParent);

         ResolveMerger merger = (ResolveMerger) MergeStrategy.RESOLVE
                  .newMerger(repo);
         merger.setWorkingTreeIterator(new FileTreeIterator(repo));
         merger.setBase(srcParent.getTree());
         if (merger.merge(headCommit, srcCommit))
         {
            DirCacheCheckout dco = new DirCacheCheckout(repo,
                     headCommit.getTree(), repo.lockDirCache(),
                     merger.getResultTreeId());
            dco.setFailOnConflict(true);
            dco.checkout();

            cherryPickedRefs.add(src);
         }
         else
         {
            if (merger.failed())
               return new CherryPickResult(merger.getFailingPaths());

            // there are merge conflicts
            String message = new MergeMessageFormatter()
                     .formatWithConflicts(srcCommit.getFullMessage(),
                              merger.getUnmergedPaths());

            repo.writeCherryPickHead(srcCommit.getId());
            repo.writeMergeCommitMsg(message);

            return CherryPickResult.CONFLICT;
View Full Code Here

        boolean noProblems;
        Map<String, org.eclipse.jgit.merge.MergeResult<?>> lowLevelResults = null;
        Map<String, MergeFailureReason> failingPaths = null;
        List<String> unmergedPaths = null;
        if (merger instanceof ResolveMerger) {
          ResolveMerger resolveMerger = (ResolveMerger) merger;
          resolveMerger.setCommitNames(new String[] {
              "BASE", "HEAD", ref.getName() }); //$NON-NLS-1$ //$NON-NLS-2$
          resolveMerger.setWorkingTreeIterator(new FileTreeIterator(repo));
          noProblems = merger.merge(headCommit, srcCommit);
          lowLevelResults = resolveMerger
              .getMergeResults();
          failingPaths = resolveMerger.getFailingPaths();
          unmergedPaths = resolveMerger.getUnmergedPaths();
        } else
          noProblems = merger.merge(headCommit, srcCommit);
        refLogMessage.append(": Merge made by "); //$NON-NLS-1$
        if (!revWalk.isMergedInto(headCommit, srcCommit))
          refLogMessage.append(mergeStrategy.getName());
View Full Code Here

      ObjectId stashHeadCommit = stashCommit.getParent(0);
      ObjectId untrackedCommit = null;
      if (applyUntracked && stashCommit.getParentCount() == 3)
        untrackedCommit = revWalk.parseCommit(stashCommit.getParent(2));

      ResolveMerger merger = (ResolveMerger) strategy.newMerger(repo);
      merger.setCommitNames(new String[] { "stashed HEAD", "HEAD",
          "stash" });
      merger.setBase(stashHeadCommit);
      merger.setWorkingTreeIterator(new FileTreeIterator(repo));
      if (merger.merge(headCommit, stashCommit)) {
        DirCache dc = repo.lockDirCache();
        DirCacheCheckout dco = new DirCacheCheckout(repo, headTree,
            dc, merger.getResultTreeId());
        dco.setFailOnConflict(true);
        dco.checkout(); // Ignoring failed deletes....
        if (applyIndex) {
          ResolveMerger ixMerger = (ResolveMerger) strategy
              .newMerger(repo, true);
          ixMerger.setCommitNames(new String[] { "stashed HEAD",
              "HEAD", "stashed index" });
          ixMerger.setBase(stashHeadCommit);
          boolean ok = ixMerger.merge(headCommit, stashIndexCommit);
          if (ok) {
            resetIndex(revWalk
                .parseTree(ixMerger.getResultTreeId()));
          } else {
            throw new StashApplyFailureException(
                JGitText.get().stashApplyConflict);
          }
        }

        if (untrackedCommit != null) {
          ResolveMerger untrackedMerger = (ResolveMerger) strategy
              .newMerger(repo, true);
          untrackedMerger.setCommitNames(new String[] {
              "stashed HEAD", "HEAD", "untracked files" }); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
          untrackedMerger.setBase(stashHeadCommit);
          boolean ok = untrackedMerger.merge(headCommit,
              untrackedCommit);
          if (ok)
            try {
              RevTree untrackedTree = revWalk
                  .parseTree(untrackedMerger
                      .getResultTreeId());
              resetUntracked(untrackedTree);
            } catch (CheckoutConflictException e) {
              throw new StashApplyFailureException(
                  JGitText.get().stashApplyConflict);
View Full Code Here

        String ourName = calculateOurName(headRef);
        String cherryPickName = srcCommit.getId().abbreviate(7).name()
            + " " + srcCommit.getShortMessage(); //$NON-NLS-1$

        ResolveMerger merger = (ResolveMerger) strategy.newMerger(repo);
        merger.setWorkingTreeIterator(new FileTreeIterator(repo));
        merger.setBase(srcParent.getTree());
        merger.setCommitNames(new String[] { "BASE", ourName,
            cherryPickName });
        if (merger.merge(newHead, srcCommit)) {
          if (AnyObjectId.equals(newHead.getTree().getId(), merger
              .getResultTreeId()))
            continue;
          DirCacheCheckout dco = new DirCacheCheckout(repo,
              newHead.getTree(), repo.lockDirCache(),
              merger.getResultTreeId());
          dco.setFailOnConflict(true);
          dco.checkout();
          if (!noCommit)
            newHead = new Git(getRepository()).commit()
                .setMessage(srcCommit.getFullMessage())
                .setReflogComment(reflogPrefix + " " //$NON-NLS-1$
                    + srcCommit.getShortMessage())
                .setAuthor(srcCommit.getAuthorIdent()).call();
          cherryPickedRefs.add(src);
        } else {
          if (merger.failed())
            return new CherryPickResult(merger.getFailingPaths());

          // there are merge conflicts

          String message = new MergeMessageFormatter()
              .formatWithConflicts(srcCommit.getFullMessage(),
                  merger.getUnmergedPaths());

          if (!noCommit)
            repo.writeCherryPickHead(srcCommit.getId());
          repo.writeMergeCommitMsg(message);
View Full Code Here

        String ourName = calculateOurName(headRef);
        String revertName = srcCommit.getId().abbreviate(7).name()
            + " " + srcCommit.getShortMessage(); //$NON-NLS-1$

        ResolveMerger merger = (ResolveMerger) strategy.newMerger(repo);
        merger.setWorkingTreeIterator(new FileTreeIterator(repo));
        merger.setBase(srcCommit.getTree());
        merger.setCommitNames(new String[] {
            "BASE", ourName, revertName }); //$NON-NLS-1$

        String shortMessage = "Revert \"" + srcCommit.getShortMessage() //$NON-NLS-1$
            + "\""; //$NON-NLS-1$
        String newMessage = shortMessage + "\n\n" //$NON-NLS-1$
            + "This reverts commit " + srcCommit.getId().getName() //$NON-NLS-1$
            + ".\n"; //$NON-NLS-1$
        if (merger.merge(headCommit, srcParent)) {
          if (AnyObjectId.equals(headCommit.getTree().getId(), merger
              .getResultTreeId()))
            continue;
          DirCacheCheckout dco = new DirCacheCheckout(repo,
              headCommit.getTree(), repo.lockDirCache(),
              merger.getResultTreeId());
          dco.setFailOnConflict(true);
          dco.checkout();
          newHead = new Git(getRepository()).commit()
              .setMessage(newMessage)
              .setReflogComment("revert: " + shortMessage).call(); //$NON-NLS-1$
          revertedRefs.add(src);
          headCommit = newHead;
        } else {
          unmergedPaths = merger.getUnmergedPaths();
          Map<String, MergeFailureReason> failingPaths = merger
              .getFailingPaths();
          if (failingPaths != null)
            failingResult = new MergeResult(null,
                merger.getBaseCommitId(),
                new ObjectId[] { headCommit.getId(),
                    srcParent.getId() },
                MergeStatus.FAILED, strategy,
                merger.getMergeResults(), failingPaths, null);
          else
            failingResult = new MergeResult(null,
                merger.getBaseCommitId(),
                new ObjectId[] { headCommit.getId(),
                    srcParent.getId() },
                MergeStatus.CONFLICTING, strategy,
                merger.getMergeResults(), failingPaths, null);
          if (!merger.failed() && !unmergedPaths.isEmpty()) {
            String message = new MergeMessageFormatter()
            .formatWithConflicts(newMessage,
                merger.getUnmergedPaths());
            repo.writeRevertHead(srcCommit.getId());
            repo.writeMergeCommitMsg(message);
          }
          return null;
        }
View Full Code Here

    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));
      }
      ThreeWayMerger merger = new ResolveMerger(db) {
        @Override
        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
View Full Code Here

TOP

Related Classes of org.eclipse.jgit.merge.ResolveMerger

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.