From: Kevin Sawicki Date: Tue, 22 Nov 2011 01:14:11 +0000 (-0800) Subject: Provide merge result when revert command fails X-Git-Tag: v1.2.0.201112221803-r~24^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2d63c481f71ed0c06a62e6eaec9bc2e0a4a230b9;p=jgit.git 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 --- 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 6e27bf2872..3475ed7d64 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 { private List revertedRefs = new LinkedList(); + private MergeResult failingResult; + /** * @param repo */ @@ -155,6 +160,15 @@ public class RevertCommand extends GitCommand { .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 class RevertCommand extends GitCommand { 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; + } }