Svn Subversion能否有效地存储OpenXML Office文档?

Svn Subversion能否有效地存储OpenXML Office文档?,svn,ms-office,openxml,configuration-management,Svn,Ms Office,Openxml,Configuration Management,我一直在为我的公司管理Subversion作为工程文档存储库。它工作得相当好,但是我有一个关于Subversion如何(应该)处理MS Office 2007格式的问题 我正在查看工作副本中的Excel2007电子表格(extension.xlsx),Subversion应用了svn:mime-typeproperty-application/octet流。这意味着Subversion被视为二进制,对吗 我希望Subversion能够有效地存储新的MS Office文档格式。我的理解是,每次提交

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

我正在查看工作副本中的Excel2007电子表格(extension.xlsx),Subversion应用了svn:mime-typeproperty-application/octet流。这意味着Subversion被视为二进制,对吗

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

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

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


后续(2009-11-09):我发现Office文档可以使用Office 2003 XML文档格式以纯文本形式存储(Excel:XML电子表格2003;Word:Word XML文档。有一个关于格式丢失的警告,但我还没有遇到任何明显的格式丢失。

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


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

遗憾的是,你目前不能用Subversion来处理它,但有一些关于这方面的讨论:


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

有关这一点,请参见以下内容中的

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差不多。存储FIRsubversion中未压缩docx的t修订版占用的空间与原始docx大致相同


YMMV.

+1以获取有用的链接。请注意,讨论说明使用了二进制差异,但指出差异可能相当大。您失去的主要功能是能够轻松跟踪版本之间的更改。TortoiseSVN在Word和Excel文件上的差异非常好。从Office 2007开始,不再支持PowerPoint差异不过,这是一个很好的实验!在Word 2007中,如果我选择“另存为…”->其他格式,其中一个选项就是Word XML文档(*.XML)。此选项将文件保存为可在写字板中查看的XML文档。Word XML格式似乎与解压缩DOCX OPC包不同。有人对使用Word XML格式的优缺点有何看法吗?我将重复wcoenen对Word XML格式文档的实验,以确定这一点。根据我过去的经验在使用OpenXML包的几周中,关键的区别在于.docx可以存储任意(读:OLE)或OpenXML包(读:other.docx&.xlsx)容器中的数据。仅使用WordprocessingML,您将不具备这种能力。@这在技术上是不正确的。开放式XML平面包格式可以很好地存储二进制部分——它们被序列化为base64。您自己看看。一个.docx包可以做的任何事情,OPC也可以做。它可能是Word 2003 Wordpro您正在考虑的cessingML格式(两者不相同)。可能措辞不太恰当,但这正是我所说的。DOCX可以存储二进制数据,而WordprocessingML本身无法。在阅读了wcoenen的响应后,我不禁怀疑Subversion是否可以更高效地存储Office 2003文档。wcoenen的数据显示,存在一个副本(或几乎是一个副本)正在生成数据文件的副本(假设是由于数据压缩)。由于Subversion可以很好地处理普通的二进制文件,所以它有兴趣重复wcoenen对Office 2003格式文档的实验,我将尝试这样做。这个答案实际上没有太大帮助,因为它没有澄清RjOllos对为什么要使用“XML”文档的困惑应该是二进制的…这有误导性:XML文件是文本-问题是.docx文件实际上是XML文件(和其他东西)的zip存档。另请参见:@0xA3您正在应用吗?请注意“Word XML文档”不是2003年的XML文件格式,也就是2007年的Open XML flat package格式,当保存为这种格式时,数据不可能丢失,因为它可以完成.docx所能做的一切。另一方面,Excel 2003格式确实会带来los风险