aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src/org/eclipse/jgit/api
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit/src/org/eclipse/jgit/api')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/MergeResult.java53
2 files changed, 52 insertions, 3 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java
index 29ce00e448..39c079896b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java
@@ -229,7 +229,7 @@ public class MergeCommand extends GitCommand<MergeResult> {
new ObjectId[] {
headCommit.getId(), srcCommit.getId() },
MergeStatus.FAILED, mergeStrategy,
- lowLevelResults, null);
+ lowLevelResults, failingPaths, null);
} else
return new MergeResult(null,
merger.getBaseCommit(0, 1),
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeResult.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeResult.java
index ceef6e69a2..9d84c18443 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeResult.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeResult.java
@@ -53,6 +53,7 @@ import org.eclipse.jgit.merge.MergeChunk;
import org.eclipse.jgit.merge.MergeChunk.ConflictState;
import org.eclipse.jgit.merge.MergeStrategy;
import org.eclipse.jgit.merge.ResolveMerger;
+import org.eclipse.jgit.merge.ResolveMerger.MergeFailureReason;
/**
* Encapsulates the result of a {@link MergeCommand}.
@@ -116,6 +117,8 @@ public class MergeResult {
private MergeStrategy mergeStrategy;
+ private Map<String, MergeFailureReason> failingPaths;
+
/**
* @param newHead
* the object the head points at after the merge
@@ -127,10 +130,11 @@ public class MergeResult {
* all the commits which have been merged together
* @param mergeStatus
* the status the merge resulted in
+ * @param lowLevelResults
+ * merge results as returned by
+ * {@link ResolveMerger#getMergeResults()}
* @param mergeStrategy
* the used {@link MergeStrategy}
- * @param lowLevelResults
- * merge results as returned by {@link ResolveMerger#getMergeResults()}
*/
public MergeResult(ObjectId newHead, ObjectId base,
ObjectId[] mergedCommits, MergeStatus mergeStatus,
@@ -162,12 +166,44 @@ public class MergeResult {
MergeStrategy mergeStrategy,
Map<String, org.eclipse.jgit.merge.MergeResult<?>> lowLevelResults,
String description) {
+ this(newHead, base, mergedCommits, mergeStatus, mergeStrategy,
+ lowLevelResults, null, null);
+ }
+
+ /**
+ * @param newHead
+ * the object the head points at after the merge
+ * @param base
+ * the common base which was used to produce a content-merge. May
+ * be <code>null</code> if the merge-result was produced without
+ * computing a common base
+ * @param mergedCommits
+ * all the commits which have been merged together
+ * @param mergeStatus
+ * the status the merge resulted in
+ * @param mergeStrategy
+ * the used {@link MergeStrategy}
+ * @param lowLevelResults
+ * merge results as returned by
+ * {@link ResolveMerger#getMergeResults()}
+ * @param failingPaths
+ * list of paths causing this merge to fail abnormally as
+ * returned by {@link ResolveMerger#getFailingPaths()}
+ * @param description
+ * a user friendly description of the merge result
+ */
+ public MergeResult(ObjectId newHead, ObjectId base,
+ ObjectId[] mergedCommits, MergeStatus mergeStatus,
+ MergeStrategy mergeStrategy,
+ Map<String, org.eclipse.jgit.merge.MergeResult<?>> lowLevelResults,
+ Map<String, MergeFailureReason> failingPaths, String description) {
this.newHead = newHead;
this.mergedCommits = mergedCommits;
this.base = base;
this.mergeStatus = mergeStatus;
this.mergeStrategy = mergeStrategy;
this.description = description;
+ this.failingPaths = failingPaths;
if (lowLevelResults != null)
for (Map.Entry<String, org.eclipse.jgit.merge.MergeResult<?>> result : lowLevelResults
.entrySet())
@@ -245,6 +281,8 @@ public class MergeResult {
* @param lowLevelResult
*/
public void addConflict(String path, org.eclipse.jgit.merge.MergeResult<?> lowLevelResult) {
+ if (!lowLevelResult.containsConflicts())
+ return;
if (conflicts == null)
conflicts = new HashMap<String, int[][]>();
int nrOfConflicts = 0;
@@ -316,4 +354,15 @@ public class MergeResult {
public Map<String, int[][]> getConflicts() {
return conflicts;
}
+
+ /**
+ * Returns a list of paths causing this merge to fail abnormally as returned
+ * by {@link ResolveMerger#getFailingPaths()}
+ *
+ * @return the list of paths causing this merge to fail abnormally or
+ * <code>null</code> if no abnormal failure occurred
+ */
+ public Map<String, MergeFailureReason> getFailingPaths() {
+ return failingPaths;
+ }
}