如何在git功能分支工作流中处理xml/html?

我们的项目在相当接近代码的范围内工作(在相当小的代码地理区域内并行发生了许多更改),我们基于功能分支的git工作流非常适合我们的java代码

但是xml/html的东西并没有很好地工作。简单的不相关的更改(设计师添加了一个周围的div,开发人员更改了其中一个元素的id)会带来非常糟糕的合并

我意识到在如何处理这个问题上可能有几种选择。一个好的git-xml合并将是最佳的,或者对xml/html代码的重新格式化施加限制。不在如此近距离内工作是另一个(不可接受的)选择

你如何有效地解决这个问题

Git允许通过每个路径的gitattributes选择自定义合并驱动程序(例如,对于所有*.xml文件)

您需要找到一个支持XML的合并驱动程序,还可能需要编写一个简单的脚本来在Git约定和所述合并驱动程序约定之间进行转换。例如,有一个XML::Merge Perl模块。有XyDiff,但它似乎缺少三方合并(我想对于XML来说,从diff构建三方合并,就像在正式的Diff3研究论文(PDF)中描述的那样,是行不通的)。您还可以阅读匹配、差异和合并XML博客文章(或其中引用的文章)

另一个解决方案是取消XML文件的合并属性(它们将被视为二进制文件wrt.merge conflicts),并使用一些图形化的合并工具来解决合并冲突,可能是通过git mergetool

发表评论