@ -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 ;
}
}