如何在与 JGit 合并之前发生冲突?

How to get conflicts before merge with JGit?

我正在尝试使用 JGit 执行一个有冲突的项目的所有合并方案。

是否可以在实际合并之前获取冲突?换句话说,是否可以用 JGit 模拟合并?

我的目标 是为项目的所有合并方案访问每个文件的冲突行。

您可以使用 ThreeWayMerger 之一来确定是否可以合并两个提交。

默认情况下,JGit 的MergeCommand 使用递归 合并策略。因此,您可能希望使用此合并。

确保创建一个in core合并(将newMerger的第二个参数设置为true)。在此模式下,合并不会触及工作目录。

ThreeWayMerger merger = MergeStrategy.RECURSIVE.newMerger(repository, true);
boolean canMerge = merger.merge(headCommit, commitToMerge);

合并方法 returns true 如果可以合并给定的提交,否则 false

基本提交可以使用 setBase 显式设置或使用共同祖先。

ResolveMergerRecursiveMerger也提供查询哪些文件不能合并的方法。