| /* |
| * Copyright (C) 2013, Christian Halstrick <christian.halstrick@sap.com> and others |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Distribution License v. 1.0 which is available at |
| * https://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| package org.eclipse.jgit.errors; |
| |
| import java.io.IOException; |
| import java.text.MessageFormat; |
| |
| import org.eclipse.jgit.internal.JGitText; |
| import org.eclipse.jgit.merge.RecursiveMerger; |
| |
| /** |
| * Exception thrown if a merge fails because no merge base could be determined. |
| * |
| * @since 3.0 |
| */ |
| public class NoMergeBaseException extends IOException { |
| private static final long serialVersionUID = 1L; |
| |
| private MergeBaseFailureReason reason; |
| |
| /** |
| * An enum listing the different reason why no merge base could be |
| * determined. |
| */ |
| public enum MergeBaseFailureReason { |
| /** |
| * Multiple merge bases have been found (e.g. the commits to be merged |
| * have multiple common predecessors) but the merge strategy doesn't |
| * support this (e.g. ResolveMerge) |
| */ |
| MULTIPLE_MERGE_BASES_NOT_SUPPORTED, |
| |
| /** |
| * The number of merge bases exceeds {@link RecursiveMerger#MAX_BASES} |
| */ |
| TOO_MANY_MERGE_BASES, |
| |
| /** |
| * In order to find a single merge base it may required to merge |
| * together multiple common predecessors. If during these merges |
| * conflicts occur the merge fails with this reason |
| */ |
| CONFLICTS_DURING_MERGE_BASE_CALCULATION |
| } |
| |
| |
| /** |
| * Construct a NoMergeBase exception |
| * |
| * @param reason |
| * the reason why no merge base could be found |
| * @param message |
| * a text describing the problem |
| */ |
| public NoMergeBaseException(MergeBaseFailureReason reason, String message) { |
| super(MessageFormat.format(JGitText.get().noMergeBase, |
| reason.toString(), message)); |
| this.reason = reason; |
| } |
| |
| /** |
| * Construct a NoMergeBase exception |
| * |
| * @param reason |
| * the reason why no merge base could be found |
| * @param message |
| * a text describing the problem |
| * @param why |
| * an exception causing this error |
| */ |
| public NoMergeBaseException(MergeBaseFailureReason reason, String message, |
| Throwable why) { |
| super(MessageFormat.format(JGitText.get().noMergeBase, |
| reason.toString(), message)); |
| this.reason = reason; |
| initCause(why); |
| } |
| |
| /** |
| * Get the reason why no merge base could be found |
| * |
| * @return the reason why no merge base could be found |
| */ |
| public MergeBaseFailureReason getReason() { |
| return reason; |
| } |
| } |