Example usage for org.eclipse.jgit.api MergeResult getFailingPaths

List of usage examples for org.eclipse.jgit.api MergeResult getFailingPaths

Introduction

In this page you can find the example usage for org.eclipse.jgit.api MergeResult getFailingPaths.

Prototype

public Map<String, MergeFailureReason> getFailingPaths() 

Source Link

Document

Returns a list of paths causing this merge to fail as returned by org.eclipse.jgit.merge.ResolveMerger#getFailingPaths()

Usage

From source file:com.microsoft.gittf.core.tasks.PullTask.java

License:Open Source License

private TaskStatus merge(TaskProgressMonitor progressMonitor, int changeset, ObjectId commitId) {
    try {/*from  w w w . j  a  v  a 2 s .c o  m*/
        getMergeCommand().include(
                Messages.formatString("PullTask.Merge.CommitNameFormat", Integer.toString(changeset)), //$NON-NLS-1$
                commitId);

        MergeResult mergeResults = getMergeCommand().call();

        progressMonitor.endTask();

        switch (mergeResults.getMergeStatus()) {
        case ALREADY_UP_TO_DATE:
            progressMonitor.displayMessage(Messages.getString("PullTask.Merge.AlreadyUpToDate")); //$NON-NLS-1$
            break;

        case FAST_FORWARD:
        case MERGED:
            progressMonitor.displayMessage(Messages.formatString("PullTask.Merge.MergeSuccessfulFormat", //$NON-NLS-1$
                    ObjectIdUtil.abbreviate(repository, commitId)));
            break;

        case CONFLICTING:
            progressMonitor
                    .displayMessage(Messages.formatString("PullTask.Merge.MergeSuccessfulWithConflictsFormat", //$NON-NLS-1$
                            ObjectIdUtil.abbreviate(repository, commitId)));
            displayConflicts(progressMonitor, mergeResults.getConflicts());
            break;

        case FAILED:
        case NOT_SUPPORTED:
            progressMonitor.displayMessage(Messages.formatString("PullTask.Merge.FailedFormat", //$NON-NLS-1$
                    ObjectIdUtil.abbreviate(repository, commitId)));
            displayFailures(progressMonitor, mergeResults.getFailingPaths());
            break;
        }

        RepositoryUtil.fixFileAttributes(repository);
    } catch (Exception e) {
        log.error("An error occurred while merging.", e); //$NON-NLS-1$

        return new TaskStatus(TaskStatus.ERROR, e);
    }

    return TaskStatus.OK_STATUS;
}

From source file:com.rimerosolutions.ant.git.tasks.MergeTask.java

License:Apache License

@Override
public void doExecute() {
    try {//from www.  j  a v a2 s  .  c o m
        MergeCommand mergeCommand = git.merge().setSquash(squash);
        mergeCommand.include(mergeCommand.getRepository().getRef(branchname));

        setupCredentials(mergeCommand);
        MergeResult mergeResult = mergeCommand.call();

        if (!mergeResult.getMergeStatus().isSuccessful()) {

            if (mergeResult.getFailingPaths() != null && mergeResult.getFailingPaths().size() > 0) {
                throw new BuildException(String.format("%s - Failing paths: %s", MESSAGE_MERGE_FAILED,
                        mergeResult.getFailingPaths()));
            }

            throw new BuildException(
                    String.format(MESSAGE_MERGE_FAILED_WITH_STATUS, mergeResult.getMergeStatus().name()));
        }
    } catch (Exception e) {
        throw new GitBuildException(String.format(MESSAGE_MERGE_FAILED_WITH_URI, getUri()), e);
    }
}

From source file:org.eclipse.egit.ui.internal.dialogs.RevertFailureDialog.java

License:Open Source License

/**
 * Show dialog for failure result//from  w  w  w .  j  a v  a2  s  .  c  o  m
 *
 * @param shell
 * @param commit
 * @param result
 */
public static void show(Shell shell, RevCommit commit, MergeResult result) {
    String message;
    Map<String, MergeFailureReason> reasons = result != null ? result.getFailingPaths() : null;
    if (reasons != null && !reasons.isEmpty())
        message = MessageFormat.format(UIText.RevertFailureDialog_Message, commit.abbreviate(7).name());
    else
        message = MessageFormat.format(UIText.RevertFailureDialog_MessageNoFiles, commit.abbreviate(7).name());

    RevertFailureDialog dialog = new RevertFailureDialog(shell, message, reasons);
    dialog.setShellStyle(dialog.getShellStyle() | SWT.SHEET | SWT.RESIZE);
    dialog.open();
}

From source file:org.eclipse.emf.compare.git.pgm.internal.app.LogicalMergeApplication.java

License:Open Source License

/**
 * Builds the message to display to the user when the merge ends on a FAILED status.
 * /*www  .j  a  va2 s  .  c  om*/
 * @param mergeResult
 *            The merge result.
 * @return a message.
 */
private String getFailedMessage(MergeResult mergeResult) {
    final StringBuilder errorMessage = new StringBuilder();
    List<String> dirtyFiles = Lists.newArrayList();
    List<String> notDeletedFiles = Lists.newArrayList();
    for (Entry<String, MergeFailureReason> mergeFailure : mergeResult.getFailingPaths().entrySet()) {

        switch (mergeFailure.getValue()) {
        case DIRTY_INDEX:
        case DIRTY_WORKTREE:
            dirtyFiles.add(mergeFailure.getKey());
            break;
        case COULD_NOT_DELETE:
            notDeletedFiles.add(mergeFailure.getKey());
            break;
        default:
            break;
        }
    }
    if (!dirtyFiles.isEmpty()) {
        errorMessage.append("Your local changes to the following files would be overwritten by merge:" + EOL);
        errorMessage.append(Joiner.on(EOL).join(dirtyFiles));
        errorMessage.append("Please, commit your changes or stash them before you can merge.");
    }
    if (!notDeletedFiles.isEmpty()) {
        errorMessage.append("Could not delete following files:" + EOL);
        errorMessage.append(Joiner.on(EOL).join(notDeletedFiles));
    }
    errorMessage.append("Aborting." + EOL);
    return errorMessage.toString();
}

From source file:org.eclipse.ptp.internal.rdt.sync.git.core.GitSyncService.java

License:Open Source License

private void doSyncRL(JGitRepo localRepo, GitRepo remoteRepo, IProgressMonitor monitor)
        throws RemoteSyncException, MissingConnectionException {
    RecursiveSubMonitor subMon = RecursiveSubMonitor.convert(monitor, 90);

    try {/*from www  . j  a  v  a  2  s  .  c o m*/
        // Commit remote changes
        subMon.subTask(Messages.GitSyncService_13);
        remoteRepo.commitRemoteFiles(subMon.newChild(40));

        // Download remote changes
        subMon.subTask(Messages.GitSyncService_14);
        try {
            localRepo.fetch(remoteRepo, subMon.newChild(40));
        } catch (TransportException e) {
            // Fetch can fail simply because the remote branch isn't set up yet. So just return in that case and throw an
            // exception otherwise.
            // Even for the first case, however, a proceeding merge will fail (remote ref is not created), so be sure to
            // always abort and not attempt a merge.
            if (e.getMessage().startsWith("Remote does not have ")) { //$NON-NLS-1$
                return;
            } else {
                throw new RemoteSyncException(e);
            }
        }

        // Merge remote changes into local repository
        subMon.subTask(Messages.GitSyncService_15);
        try {
            org.eclipse.jgit.api.MergeResult mergeResult = localRepo.merge(subMon.newChild(10));
            if (mergeResult.getFailingPaths() != null) {
                String message = Messages.GitSyncService_16;
                for (String s : mergeResult.getFailingPaths().keySet()) {
                    message += System.getProperty("line.separator") + s; //$NON-NLS-1$
                }
                throw new RemoteSyncException(message);
            }
            if (localRepo.inUnresolvedMergeState()) {
                throw new RemoteSyncMergeConflictException(Messages.GitSyncService_8);
                // Even if we later decide not to throw an exception, it is important not to proceed after a merge conflict.
                // return;
            }
        } catch (GitAPIException e) {
            throw new RemoteSyncException(e);
        } catch (IOException e) {
            throw new RemoteSyncException(e);
        }
    } finally {
        if (monitor != null) {
            monitor.done();
        }
    }
}

From source file:org.exist.git.xquery.Pull.java

License:Open Source License

@Override
public Sequence eval(Sequence[] args, Sequence contextSequence) throws XPathException {

    try {//from w w  w  . j  a v a  2  s . com
        String localPath = args[0].getStringValue();
        if (!(localPath.endsWith("/")))
            localPath += File.separator;

        Git git = Git.open(new Resource(localPath), FS);

        PullResult answer = git.pull().setCredentialsProvider(
                new UsernamePasswordCredentialsProvider(args[1].getStringValue(), args[2].getStringValue()))
                .call();

        MemTreeBuilder builder = getContext().getDocumentBuilder();

        int nodeNr = builder.startElement(PULL, null);
        builder.addAttribute(IS_SUCCESSFUL, Boolean.toString(answer.isSuccessful()));

        MergeResult merge = answer.getMergeResult();

        if (merge != null) {
            builder.startElement(MERGE, null);
            builder.addAttribute(STATUS, merge.getMergeStatus().toString());
            builder.addAttribute(IS_SUCCESSFUL, Boolean.toString(merge.getMergeStatus().isSuccessful()));

            for (ObjectId commit : merge.getMergedCommits()) {
                builder.startElement(COMMIT, null);

                builder.addAttribute(ID, commit.name());

                builder.endElement();
            }
            builder.endElement();

            if (merge.getConflicts() != null) {
                for (Entry<String, int[][]> entry : merge.getConflicts().entrySet()) {
                    builder.startElement(CHECKOUT_CONFLICT, null);
                    builder.addAttribute(PATH, entry.getKey());

                    builder.endElement();
                }

            }

            if (merge.getCheckoutConflicts() != null) {
                for (String path : merge.getCheckoutConflicts()) {
                    builder.startElement(CHECKOUT_CONFLICT, null);
                    builder.addAttribute(PATH, path);

                    builder.endElement();
                }
            }

            if (merge.getFailingPaths() != null) {
                for (Entry<String, MergeFailureReason> entry : merge.getFailingPaths().entrySet()) {
                    builder.startElement(FAILING_PATH, null);
                    builder.addAttribute(PATH, entry.getKey());
                    builder.addAttribute(REASON, entry.getValue().name());

                    builder.endElement();
                }
            }
        }

        RebaseResult rebase = answer.getRebaseResult();

        if (rebase != null) {
            builder.startElement(REBASE, null);
            builder.addAttribute(STATUS, rebase.getStatus().toString());
            builder.addAttribute(IS_SUCCESSFUL, Boolean.toString(rebase.getStatus().isSuccessful()));

            //rebase.getConflicts()

            if (rebase.getFailingPaths() != null) {
                for (Entry<String, MergeFailureReason> entry : rebase.getFailingPaths().entrySet()) {
                    builder.startElement(FAILING_PATH, null);
                    builder.addAttribute(PATH, entry.getKey());
                    builder.addAttribute(REASON, entry.getValue().name());

                    builder.endElement();
                }
            }
            builder.endElement();
        }

        return builder.getDocument().getNode(nodeNr);
    } catch (Throwable e) {
        e.printStackTrace();
        throw new XPathException(this, Module.EXGIT001, e);
    }
}

From source file:org.flowerplatform.web.git.GitUtils.java

License:Open Source License

public String handleMergeResult(MergeResult mergeResult) {
    StringBuilder sb = new StringBuilder();
    if (mergeResult == null) {
        return sb.toString();
    }//from   w  w w .j a  v a 2 s  . c o  m
    sb.append("Status: ");
    sb.append(mergeResult.getMergeStatus());
    sb.append("\n");

    if (mergeResult.getMergedCommits() != null) {
        sb.append("\nMerged commits: ");
        sb.append("\n");
        for (ObjectId id : mergeResult.getMergedCommits()) {
            sb.append(id.getName());
            sb.append("\n");
        }
    }
    if (mergeResult.getCheckoutConflicts() != null) {
        sb.append("\nConflicts: ");
        sb.append("\n");
        for (String conflict : mergeResult.getCheckoutConflicts()) {
            sb.append(conflict);
            sb.append("\n");
        }
    }

    if (mergeResult.getFailingPaths() != null) {
        sb.append("\nFailing paths: ");
        sb.append("\n");
        for (String path : mergeResult.getFailingPaths().keySet()) {
            sb.append(path);
            sb.append(" -> ");
            sb.append(mergeResult.getFailingPaths().get(path).toString());
            sb.append("\n");
        }
    }
    return sb.toString();
}

From source file:org.kabir.github.merges.model.GitRepositoryManager.java

License:Open Source License

public void mergeFFOnlyLocalTestingToLocalMain() {
    BranchManager manager = branchStatus.getManager();
    try {/*w  ww  .  j a  va 2 s  . co m*/
        MergeResult result = manager.mergeBranch(manager.getLocalMainName(), manager.getLocalTestingName(),
                FastForwardMode.FF_ONLY);
        if (!result.getMergeStatus().isSuccessful()) {
            facesContext.addMessage(null, new FacesMessage("Error merging " + result.getFailingPaths()));
        }
    } catch (GitAPIException e) {
        facesContext.addMessage(null, new FacesMessage("Error merging " + e.getMessage()));
    }
}

From source file:org.kabir.github.merges.model.MergeManager.java

License:Open Source License

public String closeAndPushMerge() {
    BranchManager mgr = gitRepositoryManager.getBranchStatus().getManager();
    try {/*from w w w  .j a v a  2s . c  o m*/
        MergeResult result = mgr.mergeBranch(mgr.getLocalMainName(), mgr.getLocalTestingName(),
                FastForwardMode.FF_ONLY);
        if (!result.getMergeStatus().isSuccessful()) {
            facesContext.addMessage(null, new FacesMessage("Error merging " + mgr.getTestingName() + " to "
                    + mgr.getMainName() + " testing branch: " + result.getFailingPaths()));
            return "error";
        }
    } catch (GitAPIException e) {
        facesContext.addMessage(null, new FacesMessage("Error merging " + mgr.getTestingName() + " to "
                + mgr.getMainName() + " testing branch: " + e.getMessage()));
        return "error";
    }
    try {
        mgr.pushBranch(mgr.getLocalMainName(), false);
    } catch (GitAPIException e) {
        facesContext.addMessage(null,
                new FacesMessage("Error pushing " + mgr.getMainName() + " branch: " + e.getMessage()));
    }

    Properties props = setActiveMergeState(MergeState.MERGED);
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmz");
    File activeMergeFile = getActiveMergeFile();
    File replaced = new File(activeMergeFile.getParentFile(), MERGE_PREFIX + format.format(new Date()));
    activeMergeFile.renameTo(replaced);

    List<Integer> ids = readIdsFromProperty(props);
    for (Integer id : ids) {
        try {
            gitRepositoryManager.getGitHubHelper().closeMergedPullRequest(id);
        } catch (IOException e) {
            facesContext.addMessage(null, new FacesMessage("Error closing pr " + id + ": " + e.getMessage()));
        }
    }
    return "closed";
}

From source file:org.n52.wps.repository.git.GitAlgorithmRepository.java

License:Open Source License

private void printMergeSummary(PullResult pullResult) {
    StringBuilder sb = new StringBuilder();
    MergeResult result = pullResult.getMergeResult();
    sb.append("Merge failed with status ").append(result.getMergeStatus().name());
    result.getFailingPaths().entrySet().stream().forEach(
            failed -> sb.append(failed.getKey()).append(" -> ").append(failed.getValue()).append("\n"));
}