我正在使用JGit
执行项目的所有合并方案(如下所示),但它们仅在第一次执行时执行。在第二次执行中,getMergeScenarios()
返回一个空列表。
List<RevCommit> list = getMergeCommits();
for (RevCommit mergeCommit : list) {
RevCommit leftParent = mergeCommit.getParent(0);
RevCommit rightParent = mergeCommit.getParent(1);
CheckoutCommand ckoutCmd = git.checkout();
ckoutCmd.setName(leftParent.getName());
ckoutCmd.setStartPoint(leftParent);
ckoutCmd.call();
MergeCommand mergeCmd = git.merge();
mergeCmd.setCommit(false);
mergeCmd.include(rightParent);
MergeResult mResult = mergeCmd.call();
if(mResult.getMergeStatus()==MergeStatus.CONFLICTING){
// do whatever I want
}
// reset the index and work directory to HEAD
Git.wrap( repository ).reset().setMode( ResetType.HARD ).call();
}
我还尝试使用repository.writeMergeCommitMsg( null );
和repository.writeMergeHeads( null );
来删除冲突合并的结果,因此我可以执行新的合并。但是,我得到了相同的结果:getMergeCommits()
的以下执行中的空列表。似乎有关合并存在的信息已被删除。
我该怎么做才能跑出我想要的次数?在寻找答案时,我觉得我应该做一些类似于git merge --abort
或类似的事情。可以在JGit
中找到吗?我在上面的代码片段中缺少什么,或者从JGit合并场景中获取冲突行的最佳方法是什么?