From 2d63c481f71ed0c06a62e6eaec9bc2e0a4a230b9 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 21 Nov 2011 17:14:11 -0800 Subject: [PATCH] Provide merge result when revert command fails This allows callers to determine why the revert did not complete successfully Change-Id: Ie44bb8523cac388b63748bc69ebdd3c3a3665d06 Signed-off-by: Kevin Sawicki --- .../org/eclipse/jgit/api/RevertCommand.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) 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 6e27bf287..3475ed7d6 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.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.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 { private List revertedRefs = new LinkedList(); + private MergeResult failingResult; + /** * @param repo */ @@ -155,6 +160,15 @@ public RevCommit call() throws GitAPIException { .setReflogComment("revert: " + shortMessage).call(); revertedRefs.add(src); } else { + Map 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 RevertCommand include(String name, AnyObjectId commit) { public List getRevertedRefs() { return revertedRefs; } + + /** + * @return the result of the merge failure, null if no merge + * failure occurred during the revert + */ + public MergeResult getFailingResult() { + return failingResult; + } }