我一直在管理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文档。有关于格式化丢失的警告,但我还没有遇到任何明显的格式丢失。
答案 0 :(得分:28)
来自OpenXML article on wikipedia:
Office Open XML文件是一个 ZIP兼容的OPC包含 XML文档和其他资源。
换句话说,OpenXML文件实际上是包含XML文件的zip文件。压缩或加密“扰乱”数据,破坏了subversion在修订版之间生成增量的能力。这与svn:mimetype
无关。 Subversion在生成增量时将所有文件视为二进制文件。
在荷兰语中,我们有一种说法是“衡量就是知道”。下图显示了我在SVN 1.6存储库(修订版1)中导入500K OpenXML文档的实验结果。然后我添加了另一个文档的段落,保存并提交。重复5次(修订版2至6)。
正如您所看到的,提交仅添加段落的新docx修订版将花费您大约150K的磁盘空间。这比仅在没有版本控制系统的帮助下存储每个版本的副本更有效。
我还通过解压缩docx的每个修订版,使用单独的测试存储库重复实验。如您所见,如果未压缩文档修订版的存储效率会更高。有趣的是, subversion自己的数据压缩与zip 一样高效。在subversion中存储未压缩docx的第一个版本与原始docx的版本大致相同。
因人而异。
答案 1 :(得分:9)
Subversion很好地处理二进制文件。 不为每次提交存储完整副本,但只有一个有效的二进制差异。
请参阅FAQ了解相关信息。
答案 2 :(得分:3)
可悲的是,你现在无法用Subversion做到这一点,但是围绕这个问题进行了一些讨论:
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=651443
答案 3 :(得分:-2)
您是否曾尝试在文本编辑器中打开OpenXML文件?
简而言之:不是文本,它仍然是二进制文件。所以不,你不能让Subversion处理它。