【问题标题】:Version Control with XML diff and merge带有 XML 差异和合并的版本控制
【发布时间】:2011-03-26 00:06:02
【问题描述】:

我正在寻找一种可以区分和合并 XML 文件的开源版本控制工具。

我必须找到这样一个工具的困难在于,我需要正确合并一个比较节点而不是行的 XML 文件。

有什么想法吗? 谢谢!

【问题讨论】:

标签: xml merge controls diff version


【解决方案1】:

我过去使用的东西是diffxml。您也许可以将其用作 svn 或 git 等 VCS 的 diff 命令。

【讨论】:

    【解决方案2】:

    很遗憾,对于这个问题,没有万能的解决方案。 XML diffing 对您认为不同的内容非常敏感。在一种情况下,子节点的顺序可能很重要,而在另一种情况下(甚至可能在同一个文件中),它可能无关紧要。

    看看XMLUnit。尽管它是针对单元测试的,但它是一个完整的 XML 差异引擎。您必须(在代码中)告诉它如何确定两个节点有资格进行比较,然后如何处理发现的所有潜在差异(即它们在您的应用程序中是否真实)。它检测到“差异事件”的详尽列表,包括

    • 属性顺序
    • 属性数
    • 子节点顺序
    • 子节点数
    • 隐式与显式属性值
    • 评论差异
    • 文档类型差异
    • 命名空间差异

    还有更多。其中任何一个对您的应用程序可能重要或不重要,只有您可以决定。值得一看,但需要一些工作才能得到你想要的。

    【讨论】:

      【解决方案3】:

      您正在寻找一个差异工具,它只是 VCS 的一个子集。所有 VCS 都可以使用外部程序来区分文件。由于外部 diff-tool 可以是任何东西,也可以是您编写的脚本,专门用于解析和比较两个 xml 文档。

      我不知道这是否能让您更轻松地找到所需内容,但它可能会。

      【讨论】:

        【解决方案4】:

        正如其他人指出的那样,您只需要一个好的 diff 工具而不是 vcs。

        不幸的是,我还没有听说过任何支持 xml 的图形差异工具。所以我会使用像(winmerge 或 k3diff)这样的常规 diff 工具,然后我会使用你喜欢的任何 xml 验证工具来验证合并产生的 xml。

        【讨论】:

          【解决方案5】:

          对于傻瓜/懒惰的用户来说,它应该是一个简单的多合一工具。 API 或控制台程序不适合。看起来它在开源世界中确实不存在。

          Clearcase 可以,但是太贵了。 Oxygen 可以合并,但也不是免费的。

          【讨论】:

          • 你应该把它变成一个问题更新部分。这不是答案。
          • 控制台程序只要一个命令就完美了
          【解决方案6】:

          Project: Merge 旨在解决这个确切的问题:通过 SCM 软件比较和合并 XML 文件。

          恐怕它也不是免费的,但它比其他声称能够比较和合并 XML 的工具便宜得多。

          【讨论】:

            猜你喜欢
            • 2019-05-25
            • 2018-11-13
            • 2017-05-19
            • 2010-10-19
            • 1970-01-01
            • 2012-12-29
            • 2016-02-20
            • 2012-10-12
            • 1970-01-01
            相关资源
            最近更新 更多