【问题标题】:What should be the Subversion properties for a *.xml file?*.xml 文件的 Subversion 属性应该是什么?
【发布时间】:2009-08-19 11:24:47
【问题描述】:

在 Subversion 中分配给 *.xml 文件的正确/最佳属性是什么?

我对@9​​87654323@ 和svn:needs-lock 的属性特别感兴趣。

我认为有两个答案,但我不确定该选择哪一个。第一个是将 XML 文件视为文本文件,让 Subversion 管理其中的文本合并。为此,我将使用svn:mime-type=text/xml,而使用svn:needs-lock

第二个是将 XML 文件视为二进制文件,防止 Subversion 执行自动合并并坚持编辑前锁定行为。为此,我将使用svn:mime-type=application/xml 并设置svn:needs-lock

如果 XML 文件是在文本编辑器中直接编辑的那种 XML 文件,我认为将其视为文本是可以的,因为这样用户就可以手动解决任何最终的合并冲突。但是,工具生成的 XML 文件不容易手动编辑,因此 Subversion 不应自动合并,以免用户陷入必须解决(本质上)二进制文件中的冲突的情况。

保守地说,我将 XML 文件视为二进制文件。但我总是不得不向那些宁愿直接编辑一些 XML 文件而不需要事先获得锁的开发人员解释这一点。

我想知道其他人对此有何看法,以及工具生成的 XML 文件是否真的存在危险。

后澄清:

看了前三个回复后,我意识到上面的问题还不够清楚。

我的疑问是应该为 Subversion 配置文件 (~/.subversion/config) 的 [auto-props] 部分中的 *.xml 文件配置哪些属性?

问题是只能有一种配置。那么,我应该保守一点,将所有 XML 文件视为二进制文件,还是应该取悦手动编辑 XML 文件的用户,默认将所有 XML 文件视为文本?

【问题讨论】:

标签: xml svn mime-types


【解决方案1】:

我们在 Subversion 存储库中同时使用 text/xml 和 application/xml。 XML 是手动编辑的、人类可读的,因此可以有效地合并,我们将其视为文本。这包括 maven pom 文件、build.xml 文件、docbook 文件、xhtml 文档等。

svn:eol-style=native
svn:mime-type="text/xml; charset=utf-8"  /* so apache sends the right encoding */

对于某些工具的复杂文件格式 XML,我们将其视为二进制文件。例如 *.fodt(平面 ODT)、OmniGraffle 文件、XMI(UML 模型)等。不能合理地期望用户合并这样的文件,实际上,即使是微不足道的更改,差异通常也会很大而且很混乱。

svn:mime-type="application/xml"
svn:needs-lock="*"

做出这种区分对我们很有帮助。

【讨论】:

  • 好点。阅读您的答案后,我编辑了我的问题。我也喜欢charset=utf-8 提示。
【解决方案2】:

如果生成了 XML,你首先要问为什么它在 Subversion 中。我和这个开发人员在一起,但如果你是一个明显的解决方案 必须对生成的文件进行版本控制是给它们提供.xml以外的扩展名。

【讨论】:

  • 好点。作为对版本化有意义的“生成的 XML”的示例,我想到了诸如 FODT、DIA 和 XMI 文件之类的东西。但是,这些具有不同的扩展名,不会造成任何问题。不过,恐怕有些工具会生成扩展名为 .xml 的 XML 文件。但我真的不知道...
【解决方案3】:

如果 XML 是人类可读且易于理解的,那么将其与任何其他文本一样对待也没有什么坏处。如果它只是机器可读的或者你的开发人员没有很好理解的东西,你必须将它视为二进制数据;您的理解水平和手动操作它的能力将是相同的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    相关资源
    最近更新 更多