git可以主要自动合并XML顺序不敏感的文件吗?

Lia*_*son 12 xml git

合并Lightswitch分支时,同事通常会向我也修改过的实体添加属性,这会导致合并冲突,因为新的XML条目被添加到lsml文件中的相同位置.

我可以有效地总是通过不按特定顺序接受左右来解决这些问题,因此一个在另一个之上,因为在这些特定情况下顺序并不重要.在极少数情况下这是无效的,无论如何这会在项目中产生错误,我接受这是一种风险(但没有遇到).

有没有办法(最好是文件扩展名)让git自动接受同一位置的源和目标更改,只需将一个放在另一个之下?

tor*_*rek 13

这一般来说非常难.

有些人试图使用Git的联合合并(现在比以前更容易访问;因为在那个问题中,你只需要添加merge=union一个.gitattributes文件),但这一般不起作用.它有时可能有效.如果你的XML总是被结构化,以便天真的面向行的联合合并产生有效的XML(基本上,将整个XML子元素全部保存在一行上),并且你总是添加全新的XML子代码,那么它的工作原理很多.元素.

可能的,在Git中,编写自定义合并的驱动程序.为XML编写有用的文件很难.

首先,我们需要一个XML diff引擎,例如SylvainThénault的xmldiff,为三个XML文件构建两个字符串到字符串(或树到树)编辑(合并基础,本地或--ours其他或--theirs文件:diff基础) -vs-local和base-vs-ours).这个特殊的看起来它与Python的difflib类似.(但是,由于引用的论文,它看起来像生成树移动/嵌套级操作以及简单的插入和删除.这对于树到树编辑算法来说是一个自然而合理的事情,并且可能这里真的很可取.)

然后,给定两个这样的差异,我们需要代码来组合它们.union 方法是忽略所有删除:只需将所有添加添加到基本版本(或者,等效地,将"其他"添加添加到"本地",或将"本地"添加添加到"其他").我们还可以将树插入/删除操作与"真实"(非联合样式)合并相结合,甚至可以声明冲突.(并且允许不同的树嵌套级别更改处理可能会很好,这可能会像DTD一样模糊不清.)

据我所知,这些最后的部分不是在任何地方完成的.除此之外,我在这里链接的Python xmldiff是一个相当大的代码块(我没有仔细阅读它,也没有尝试安装它,我只是下载并浏览 - 它实现了类似Myers的算法,并且来自斯坦福大学论文的发烧友"快速匹配/编辑脚本"算法).

  • 这听起来像是每个人都需要的东西,所以可能已经解决了。有谁知道一个很好的开源吗? (3认同)