我正在尝试使用来自发生冲突的项目的项目中的所有合并方案执行JGit。
是否有可能在实际合并之前获得冲突?换句话说,是否可以模拟与JGit的合并?
我的目标是访问项目所有合并方案的每个文件的冲突行。
答案 0 :(得分:2)
您可以使用其中一个ThreeWayMerger
来确定是否可以合并两个提交。
默认情况下,JGit MergeCommand
使用递归合并策略。因此,您可能希望使用此合并。
确保在核心合并中创建(将newMerger
的第二个参数设置为true
)。在此模式下,合并不会触及工作目录。
ThreeWayMerger merger = MergeStrategy.RECURSIVE.newMerger( repository, true );
boolean canMerge = merger.merge( headCommit, commitToMerge );
如果给定的提交可以合并,则merge方法返回true
,否则返回false
。
可以使用setBase
显式设置基本提交,也可以使用共同的祖先。
ResolveMerger
和RecursiveMerger
还提供了查询哪些文件无法合并的方法。