summaryrefslogtreecommitdiffstatsabout
diff options
context:
space:
mode:
authorKevin Sawicki2011-11-21 20:14:11 (EST)
committer Kevin Sawicki2011-11-21 20:14:11 (EST)
commit2d63c481f71ed0c06a62e6eaec9bc2e0a4a230b9 (patch)
tree11b627d962272124a8a4c5f0b16f7bfe2219b966
parent3ee3811afb4f1077c3c991a589e37725585c7e06 (diff)
downloadjgit-2d63c481f71ed0c06a62e6eaec9bc2e0a4a230b9.zip
jgit-2d63c481f71ed0c06a62e6eaec9bc2e0a4a230b9.tar.gz
jgit-2d63c481f71ed0c06a62e6eaec9bc2e0a4a230b9.tar.bz2
Provide merge result when revert command failsrefs/changes/61/4661/1
This allows callers to determine why the revert did not complete successfully Change-Id: Ie44bb8523cac388b63748bc69ebdd3c3a3665d06 Signed-off-by: Kevin Sawicki <kevin@github.com>
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/RevertCommand.java22
1 files changed, 22 insertions, 0 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/RevertCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/RevertCommand.java
index 6e27bf2..3475ed7 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/RevertCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/RevertCommand.java
@@ -46,8 +46,10 @@ import java.io.IOException;
import java.text.MessageFormat;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import org.eclipse.jgit.JGitText;
+import org.eclipse.jgit.api.MergeResult.MergeStatus;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.MultipleParentsNotAllowedException;
import org.eclipse.jgit.api.errors.JGitInternalException;
@@ -62,6 +64,7 @@ import org.eclipse.jgit.lib.Ref.Storage;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.merge.MergeStrategy;
import org.eclipse.jgit.merge.ResolveMerger;
+import org.eclipse.jgit.merge.ResolveMerger.MergeFailureReason;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.treewalk.FileTreeIterator;
@@ -81,6 +84,8 @@ public class RevertCommand extends GitCommand<RevCommit> {
private List<Ref> revertedRefs = new LinkedList<Ref>();
+ private MergeResult failingResult;
+
/**
* @param repo
*/
@@ -155,6 +160,15 @@ public class RevertCommand extends GitCommand<RevCommit> {
.setReflogComment("revert: " + shortMessage).call();
revertedRefs.add(src);
} else {
+ Map<String, MergeFailureReason> failingPaths = merger
+ .getFailingPaths();
+ if (failingPaths != null)
+ failingResult = new MergeResult(null,
+ merger.getBaseCommit(0, 1),
+ new ObjectId[] { headCommit.getId(),
+ srcParent.getId() },
+ MergeStatus.FAILED, MergeStrategy.RESOLVE,
+ merger.getMergeResults(), failingPaths, null);
return null;
}
}
@@ -210,4 +224,12 @@ public class RevertCommand extends GitCommand<RevCommit> {
public List<Ref> getRevertedRefs() {
return revertedRefs;
}
+
+ /**
+ * @return the result of the merge failure, <code>null</code> if no merge
+ * failure occurred during the revert
+ */
+ public MergeResult getFailingResult() {
+ return failingResult;
+ }
}