21

我一直将 Subversion 作为我公司的工程文档存储库进行管理。它运行得相当好,但是我有一个关于 Subversion 如何(应该)处理 MS Office 2007 格式的问题。

我正在查看工作副本中的 Excel 2007 电子表格(扩展名 .xlsx),Subversion 已应用svn:mime-type属性application/octet-stream。这意味着 Subversion 被视为二进制,对吗?

我希望 Subversion 能有效地存储新的 MS Office 文档格式。我的理解是,每次提交该文件时都会生成二进制文件的完整副本,而如果文件是text,则对文件的小幅更改将导致将少量额外数据添加到存储库中(在至少是典型的情况)。

我不太了解 XML 的很多细节,但我认为 XML 文件是文本,因此 Subversion 可以有效地存储它。

是否可以配置 Subversion 以便有效地存储 MS Office OpenXML 文档?

追问(2009-11-09):我发现Office文档可以使用Office 2003 XML文档格式(Excel:XML Spreadsheet 2003;Word:Word XML Document )存储为纯文本。有丢失的警告的格式,但我还没有遇到任何明显的格式丢失。

4

4 回答 4

28

来自维基百科上的 OpenXML 文章

Office Open XML 文件是与 ZIP 兼容的 OPC 包,其中包含 XML 文档和其他资源。

换句话说,OpenXML 文件实际上是包含 XML 文件的 zip 文件。压缩或加密会“扰乱”数据,破坏 subversion 在修订之间生成增量的能力。这与svn:mimetype. Subversion 在生成 delta 时认为所有文件都是二进制文件。

在荷兰语中,我们有一句谚语“测量就是知道”。下图显示了我在 SVN 1.6 存储库(修订版 1)中导入了 500K OpenXML 文档的实验结果。然后我从另一个文档中添加了一段,保存并提交。重复 5 次(修订 2 至 6)。

如您所见,提交一个仅添加一个段落的新 docx 修订版将花费您大约 150K 的磁盘空间。这仍然比在没有版本控制系统帮助的情况下仅存储每个修订的副本更有效。

我还通过解压缩 docx 的每个修订版来使用单独的测试存储库重复实验。如您所见,如果不进行压缩,文档修订的存储效率会高得多。有趣的是,subversion 自己的数据压缩与 zip 一样有效。在 subversion 中存储未压缩 docx 的第一个修订版占用的空间与原始 docx 大致相同。

YMMV。

于 2009-08-24T10:46:46.080 回答
9

Subversion 可以很好地处理二进制文件。它不会每次提交存储完整副本,而仅存储有效的二进制差异。

请参阅有关此问题的常见问题解答

于 2009-08-24T06:12:33.043 回答
3

遗憾的是,您目前无法使用 Subversion 执行此操作,但围绕此进行了一些讨论:

http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=651443

于 2009-08-24T06:10:04.483 回答
-2

您是否尝试过在文本编辑器中打开 OpenXML 文件?

简而言之:它不是文本,它仍然是二进制的。所以不,你不能让 Subversion 处理它有任何不同。

于 2009-08-24T06:00:29.900 回答