Package org.eclipse.jgit.api

Examples of org.eclipse.jgit.api.MergeResult


        String prefixedHotfixName = gfConfig.getPrefixValue(JGitFlowConstants.PREFIXES.HOTFIX.configKey()) + hotfixName;

        requireLocalBranchExists(prefixedHotfixName);
        requireCleanWorkingTree();

        MergeResult developResult = new MergeResult(null,null,new ObjectId[] { null, null }, MergeResult.MergeStatus.ALREADY_UP_TO_DATE, MergeStrategy.RESOLVE,null);
        MergeResult masterResult = new MergeResult(null,null,new ObjectId[] { null, null }, MergeResult.MergeStatus.ALREADY_UP_TO_DATE,MergeStrategy.RESOLVE,null);
        try
        {
            if (fetch)
            {
                RefSpec developSpec = new RefSpec("+" + Constants.R_HEADS + gfConfig.getDevelop() + ":" + Constants.R_REMOTES + "origin/" + gfConfig.getDevelop());
                RefSpec masterSpec = new RefSpec("+" + Constants.R_HEADS + gfConfig.getMaster() + ":" + Constants.R_REMOTES + "origin/" + gfConfig.getMaster());

                git.fetch().setRemote(Constants.DEFAULT_REMOTE_NAME).setRefSpecs(masterSpec).call();
                git.fetch().setRemote(Constants.DEFAULT_REMOTE_NAME).setRefSpecs(developSpec).call();
                git.fetch().setRemote(Constants.DEFAULT_REMOTE_NAME).call();
            }

            if (GitHelper.remoteBranchExists(git, prefixedHotfixName, reporter))
            {
                requireLocalBranchNotBehindRemote(prefixedHotfixName);
            }

            if (GitHelper.remoteBranchExists(git, gfConfig.getMaster(), reporter))
            {
                requireLocalBranchNotBehindRemote(gfConfig.getMaster());
            }

            if (GitHelper.remoteBranchExists(git, gfConfig.getDevelop(), reporter))
            {
                requireLocalBranchNotBehindRemote(gfConfig.getDevelop());
            }

            Ref hotfixBranch = GitHelper.getLocalBranch(git, prefixedHotfixName);
            RevCommit hotfixCommit = GitHelper.getLatestCommit(git, prefixedHotfixName);
       
        /*
        try to merge into master
        in case a previous attempt to finish this release branch has failed,
        but the merge into master was successful, we skip it now
         */
            if (!GitHelper.isMergedInto(git, prefixedHotfixName, gfConfig.getMaster()))
            {
                git.checkout().setName(gfConfig.getMaster()).call();

                masterResult = git.merge().setFastForward(MergeCommand.FastForwardMode.NO_FF).include(hotfixBranch).call();
            }

            if (!noTag && masterResult.getMergeStatus().isSuccessful())
            {
            /*
            try to tag the release
            in case a previous attempt to finish this release branch has failed,
            but the tag was successful, we skip it now
            */
                String tagName = gfConfig.getPrefixValue(JGitFlowConstants.PREFIXES.VERSIONTAG.configKey()) + hotfixName;
                if (!GitHelper.tagExists(git, tagName))
                {
                    reporter.infoText(
                        getCommandName(),
                        String.format(
                            "tagging hotfix with name: <%s>. On branch (%s). merge status (%s)",
                            tagName,
                            git.getRepository( ).getFullBranch(),
                            masterResult.getMergeStatus( )
                        )
                    );
                    git.tag().setName(tagName).setMessage(getScmMessagePrefix() + message).call();
                }
            }
       
        /*
        try to merge into develop
        in case a previous attempt to finish this release branch has failed,
        but the merge into develop was successful, we skip it now
         */
            if (!GitHelper.isMergedInto(git, prefixedHotfixName, gfConfig.getDevelop()))
            {
                git.checkout().setName(gfConfig.getDevelop()).call();

                developResult = git.merge().setFastForward(MergeCommand.FastForwardMode.NO_FF).include(hotfixBranch).call();
            }

            if (push && masterResult.getMergeStatus().isSuccessful() && developResult.getMergeStatus().isSuccessful())
            {
                //push to develop
                RefSpec developSpec = new RefSpec(gfConfig.getDevelop());
                git.push().setRemote(Constants.DEFAULT_REMOTE_NAME).setRefSpecs(developSpec).call();

                //push to master
                RefSpec masterSpec = new RefSpec(gfConfig.getMaster());
                git.push().setRemote(Constants.DEFAULT_REMOTE_NAME).setRefSpecs(masterSpec).call();

                if (!noTag)
                {
                    git.push().setRemote(Constants.DEFAULT_REMOTE_NAME).setPushTags().call();
                }

                if (GitHelper.remoteBranchExists(git, prefixedHotfixName, reporter))
                {
                    RefSpec branchSpec = new RefSpec(prefixedHotfixName);
                    git.push().setRemote(Constants.DEFAULT_REMOTE_NAME).setRefSpecs(branchSpec).call();
                }
            }

            if (!keepBranch && masterResult.getMergeStatus().isSuccessful() && developResult.getMergeStatus().isSuccessful())
            {
                git.checkout().setName(gfConfig.getDevelop()).call();
                git.branchDelete().setForce(true).setBranchNames(prefixedHotfixName).call();

                if (push && GitHelper.remoteBranchExists(git, prefixedHotfixName, reporter))
View Full Code Here


            RevCommit developCommit = GitHelper.getLatestCommit(git, gfConfig.getDevelop());
            RevCommit featureCommit = GitHelper.getLatestCommit(git, prefixedBranchName);

            List<RevCommit> commitList = IterableHelper.asList(git.log().setMaxCount(2).addRange(developCommit, featureCommit).call());

            MergeResult mergeResult = null;

            if (commitList.size() < 2)
            {
                mergeResult = git.merge().setFastForward(MergeCommand.FastForwardMode.FF).include(featureBranch).call();
            }
            else
            {
                if (squash)
                {
                    mergeResult = git.merge().setSquash(true).include(featureBranch).call();
                    git.commit().call();
                    this.forceDeleteBranch = true;
                }
                else
                {
                    mergeResult = git.merge().setFastForward(MergeCommand.FastForwardMode.NO_FF).include(featureBranch).call();
                }
            }

            if (null == mergeResult || mergeResult.getMergeStatus().equals(MergeResult.MergeStatus.FAILED) || mergeResult.getMergeStatus().equals(MergeResult.MergeStatus.CONFLICTING))
            {
                FileHelper.createParentDirs(mergeBase);
                FileUtils.createNewFile(mergeBase);
                FileHelper.writeStringToFile(gfConfig.getDevelop(), mergeBase);
                throw new MergeConflictsNotResolvedException("merge conflicts exist, please resolve!");
View Full Code Here

        String prefixedReleaseName = gfConfig.getPrefixValue(JGitFlowConstants.PREFIXES.RELEASE.configKey()) + releaseName;

        requireLocalBranchExists(prefixedReleaseName);
        requireCleanWorkingTree();

        MergeResult developResult = new MergeResult(null,null,new ObjectId[] { null, null }, MergeResult.MergeStatus.ALREADY_UP_TO_DATE, MergeStrategy.RESOLVE,null);
        MergeResult masterResult = new MergeResult(null,null,new ObjectId[] { null, null }, MergeResult.MergeStatus.ALREADY_UP_TO_DATE,MergeStrategy.RESOLVE,null);
        try
        {
            if (fetch)
            {
                RefSpec developSpec = new RefSpec("+" + Constants.R_HEADS + gfConfig.getDevelop() + ":" + Constants.R_REMOTES + "origin/" + gfConfig.getDevelop());
View Full Code Here

        String prefixedHotfixName = gfConfig.getPrefixValue(JGitFlowConstants.PREFIXES.HOTFIX.configKey()) + hotfixName;

        requireLocalBranchExists(prefixedHotfixName);
        requireCleanWorkingTree();

        MergeResult developResult = new MergeResult(null,null,new ObjectId[] { null, null }, MergeResult.MergeStatus.ALREADY_UP_TO_DATE, MergeStrategy.RESOLVE,null);
        MergeResult masterResult = new MergeResult(null,null,new ObjectId[] { null, null }, MergeResult.MergeStatus.ALREADY_UP_TO_DATE,MergeStrategy.RESOLVE,null);
        try
        {
            if (fetch)
            {
                RefSpec developSpec = new RefSpec("+" + Constants.R_HEADS + gfConfig.getDevelop() + ":" + Constants.R_REMOTES + "origin/" + gfConfig.getDevelop());
View Full Code Here

    w.close();
    git.add().addFilepattern(file.getName()).call();
    git.commit().setMessage(file.getName() + " test").call();

    // merge the tip of the mergetest branch into master with --no-ff
    MergeResult mergeResult = git.merge().setFastForward(FastForwardMode.NO_FF).include(mergeTip.getId()).call();
    assertEquals(MergeResult.MergeStatus.MERGED, mergeResult.getMergeStatus());

    // push the merged master to the origin
    Iterable<PushResult> results = git.push().setCredentialsProvider(cp).setRemote("origin").call();

    for (PushResult result : results) {
View Full Code Here

      mergeCmd.include(src);

    if (message != null)
      mergeCmd.setMessage(message);

    MergeResult result;
    try {
      result = mergeCmd.call();
    } catch (CheckoutConflictException e) {
      result = new MergeResult(e.getConflictingPaths()); // CHECKOUT_CONFLICT
    }

    switch (result.getMergeStatus()) {
    case ALREADY_UP_TO_DATE:
      if (squash)
        outw.print(CLIText.get().nothingToSquash);
      outw.println(CLIText.get().alreadyUpToDate);
      break;
    case FAST_FORWARD:
      ObjectId oldHeadId = oldHead.getObjectId();
      outw.println(MessageFormat.format(CLIText.get().updating, oldHeadId
          .abbreviate(7).name(), result.getNewHead().abbreviate(7)
          .name()));
      outw.println(result.getMergeStatus().toString());
      break;
    case CHECKOUT_CONFLICT:
      outw.println(CLIText.get().mergeCheckoutConflict);
      for (String collidingPath : result.getCheckoutConflicts())
        outw.println("\t" + collidingPath); //$NON-NLS-1$
      outw.println(CLIText.get().mergeCheckoutFailed);
      break;
    case CONFLICTING:
      for (String collidingPath : result.getConflicts().keySet())
        outw.println(MessageFormat.format(CLIText.get().mergeConflict,
            collidingPath));
      outw.println(CLIText.get().mergeFailed);
      break;
    case FAILED:
      for (Map.Entry<String, MergeFailureReason> entry : result
          .getFailingPaths().entrySet())
        switch (entry.getValue()) {
        case DIRTY_WORKTREE:
        case DIRTY_INDEX:
          outw.println(CLIText.get().dontOverwriteLocalChanges);
          outw.println("        " + entry.getKey()); //$NON-NLS-1$
          break;
        case COULD_NOT_DELETE:
          outw.println(CLIText.get().cannotDeleteFile);
          outw.println("        " + entry.getKey()); //$NON-NLS-1$
          break;
        }
      break;
    case MERGED:
      String name;
      if (!isMergedInto(oldHead, src))
        name = mergeStrategy.getName();
      else
        name = "recursive"; //$NON-NLS-1$
      outw.println(MessageFormat.format(CLIText.get().mergeMadeBy, name));
      break;
    case MERGED_NOT_COMMITTED:
      outw.println(CLIText.get().mergeWentWellStoppedBeforeCommitting);
      break;
    case MERGED_SQUASHED:
    case FAST_FORWARD_SQUASHED:
    case MERGED_SQUASHED_NOT_COMMITTED:
      outw.println(CLIText.get().mergedSquashed);
      outw.println(CLIText.get().mergeWentWellStoppedBeforeCommitting);
      break;
    case ABORTED:
      throw die(CLIText.get().ffNotPossibleAborting);
    case NOT_SUPPORTED:
      outw.println(MessageFormat.format(
          CLIText.get().unsupportedOperation, result.toString()));
    }
  }
View Full Code Here

    writeTrashFile("d/1", "side");
    git.commit().setAll(true).setMessage("modified d/1 on side").call();

    git.rm().addFilepattern("d/1").call();
    git.rm().addFilepattern("d").call();
    MergeResult mergeRes = git.merge().setStrategy(strategy)
        .include(masterCommit).call();
    assertEquals(MergeStatus.CONFLICTING, mergeRes.getMergeStatus());
    assertEquals(
        "[d/1, mode:100644, stage:1, content:orig][d/1, mode:100644, stage:2, content:side][d/1, mode:100644, stage:3, content:master]",
        indexState(CONTENT));
  }
View Full Code Here

    writeTrashFile("d/1", "1\n2\n3side");
    git.commit().setAll(true).setMessage("modified d/1 on side").call();

    git.rm().addFilepattern("d/1").call();
    git.rm().addFilepattern("d").call();
    MergeResult mergeRes = git.merge().setStrategy(strategy)
        .include(masterCommit).call();
    assertEquals(MergeStatus.MERGED, mergeRes.getMergeStatus());
    assertEquals("[d/1, mode:100644, content:1master\n2\n3side\n]",
        indexState(CONTENT));
  }
View Full Code Here

        .call();

    // Untracked directory e shall not conflict with merged e/1
    writeTrashFile("e/2", "d two");

    MergeResult mergeRes = git.merge().setStrategy(strategy)
        .include(masterCommit).call();
    assertEquals(MergeStatus.MERGED, mergeRes.getMergeStatus());
    assertEquals(
        "[d/1, mode:100644, content:1][e/1, mode:100644, content:4][f/1, mode:100644, content:5]",
        indexState(CONTENT));
  }
View Full Code Here

    // Untracked empty directory hierarcy e/1 shall not conflict with merged
    // e/1
    FileUtils.mkdirs(new File(trash, "e/1"), true);

    MergeResult mergeRes = git.merge().setStrategy(strategy)
        .include(masterCommit).call();
    assertEquals(MergeStatus.MERGED, mergeRes.getMergeStatus());
    assertEquals(
        "[d/1, mode:100644, content:1][e, mode:100644, content:4][f/1, mode:100644, content:5]",
        indexState(CONTENT));
  }
View Full Code Here

TOP

Related Classes of org.eclipse.jgit.api.MergeResult

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.