我需要在Subversion中管理XML文档,但不想管理格式,这可能会因编辑文件的人而有所不同。
我看到两个解决方案: 在签入之前,每次使用已知格式设置文件格式。 或者给svn一个diff程序,主动解析diff算法的格式。最终,diff应该支持三向合并,主动忽略XML格式。
你推荐什么?
(相同的推理通常适用于代码源文件,但问题更加困难。)
答案 0 :(得分:3)
我对这样的设置没有太多的个人经验。
对于第二种方法(自定义差异),我发现的是一个示例"API description for Netopeer repository library",它是使用Subversion进行设置的详细说明,其中包括xmldiff。< / p>
对于另一种方法,在存储Subversion之前转换为已知格式,我建议使用Canonical XML作为格式。例如,xmllint工具可以转换为以下格式:
% cat complique.xml
<?xml version="1.0" encoding="utf-8"?>
<toto >
<truc a="1" >Machin C </truc >café</toto>
% xmllint --c14n complique.xml
<toto>
<truc a="1">Machin C </truc>café</toto>
要与Subversion集成,您可以在预提交中测试提交的文件是否等于规范文件。可能的此类脚本是my pre-commit using xmllint。有关示例,另请参阅the enforcer script。
答案 1 :(得分:1)
您认为以下两个xml片段是否相同......?
片段1:
<foo xmlns="http://foo.com/foo">
<bar>Hello</bar>
</foo>
Fragment2:
<ns1:foo xmlns:ns1="http://foo.com/foo">
<ns1:bar>Hello</ns1:bar>
</ns1:foo>
...因为如果你这样做(因为这些片段具有相同的xml信息集),那么你需要考虑编写自己的差异工具。
答案 2 :(得分:0)
答案 3 :(得分:0)
让您的所有开发人员都在同一页面上。无论如何,他们都应该编码到相同的标准。如果您的编码人员都使用不同的格式标准,那么您需要解决更大的问题。