Browse Source

Merge "Provide merge result when revert command fails"

stable-1.2
Shawn Pearce 13 years ago committed by Code Review
parent
commit
d8497abe78
  1. 22
      org.eclipse.jgit/src/org/eclipse/jgit/api/RevertCommand.java

22
org.eclipse.jgit/src/org/eclipse/jgit/api/RevertCommand.java

@ -46,8 +46,10 @@ import java.io.IOException;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map;
import org.eclipse.jgit.JGitText; 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.GitAPIException;
import org.eclipse.jgit.api.errors.MultipleParentsNotAllowedException; import org.eclipse.jgit.api.errors.MultipleParentsNotAllowedException;
import org.eclipse.jgit.api.errors.JGitInternalException; 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.lib.Repository;
import org.eclipse.jgit.merge.MergeStrategy; import org.eclipse.jgit.merge.MergeStrategy;
import org.eclipse.jgit.merge.ResolveMerger; import org.eclipse.jgit.merge.ResolveMerger;
import org.eclipse.jgit.merge.ResolveMerger.MergeFailureReason;
import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk; import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.treewalk.FileTreeIterator; import org.eclipse.jgit.treewalk.FileTreeIterator;
@ -81,6 +84,8 @@ public class RevertCommand extends GitCommand<RevCommit> {
private List<Ref> revertedRefs = new LinkedList<Ref>(); private List<Ref> revertedRefs = new LinkedList<Ref>();
private MergeResult failingResult;
/** /**
* @param repo * @param repo
*/ */
@ -155,6 +160,15 @@ public class RevertCommand extends GitCommand<RevCommit> {
.setReflogComment("revert: " + shortMessage).call(); .setReflogComment("revert: " + shortMessage).call();
revertedRefs.add(src); revertedRefs.add(src);
} else { } 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; return null;
} }
} }
@ -210,4 +224,12 @@ public class RevertCommand extends GitCommand<RevCommit> {
public List<Ref> getRevertedRefs() { public List<Ref> getRevertedRefs() {
return revertedRefs; 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;
}
} }

Loading…
Cancel
Save