我正在尝试收集基于编程命令行交互的合并冲突数据集。该程序应该在终端中运行,我可以使用外部工具,只要它们也是允许的和/或便宜的。
我现在使用的启发式方法是收集合并提交,其中至少有一个文件在运行时具有“MM”状态
git show commit --name-status
。根据我的理解,这应该表明文件在合并过程中被修改了。
但是,我意识到,“MM”也可能仅仅由于 git 使用的合并策略而发生,并且不足以识别实际包含冲突的提交子集。
我可以简单地尝试合并每个此类提交的父母以查找冲突,但这似乎成本高昂且乏味,我觉得必须有更好的解决方案。有没有比试错更方便的方法来回顾性地识别git创建过程中发生了哪些冲突的合并提交?此外,如果可能的话,我也有兴趣对樱桃采摘做同样的事情。
有一种方法更方便,但成本不一定更低。
您可以使用
来调查合并提交git show --remerge-diff <commit>
如果输出没有显示任何冲突标记,则自动合并没有发现冲突。但是,为了确保合并提交记录了自动合并的结果,根本不能有任何差异输出。 (如果提交是“邪恶合并”,则会引入其他更改,这些更改将显示在 diff 输出中。)
对精心挑选的提交做同样的事情是不可能的。你必须重复挑选才能知道是否存在冲突。