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 <kevin@github.com>
This commit is contained in:
parent
3ee3811afb
commit
2d63c481f7
|
@ -46,8 +46,10 @@
|
||||||
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.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 RevCommit call() throws GitAPIException {
|
||||||
.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 RevertCommand include(String name, AnyObjectId commit) {
|
||||||
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…
Reference in New Issue