Git 和 OpenXML 文档

Posted

技术标签:

【中文标题】Git 和 OpenXML 文档【英文标题】:Git and OpenXML documents 【发布时间】:2013-06-04 14:43:30 【问题描述】:

由于 OpenXML 基本上是 zip 存档中的 XML 文件,我想知道 Git 是否可以处理 OpenXML 文档以进行版本控制和合并操作以及差异比较。 谢谢

【问题讨论】:

【参考方案1】:

您可以对任何压缩文件格式采取以下方法:在将文件存储到 repo 之前让 git 解压缩文件,然后在签出之前再次重新压缩文件。然后文本差异会起作用,因为 repo 中的大部分内容都是纯文本。

人们肯定在使用这种方法:见Uncompress OpenOffice files for better storage in version control

【讨论】:

【参考方案2】:

在 Git 中为非文本文件启用差异是通过 Git Attributes 实现的。

Pro Git book 中的Chapter 7.2 Customizing Git - Git Attributes 描述了如何配置.gitattributes。它提供了一个具体示例 (odt-to-txt),说明如何对 OpenDocument 文件执行此操作。由于 OpenDocument 也是一种压缩的 xml 格式,因此该示例对于 OpenXML 的修改应该相当简单。

【讨论】:

您确定这会启用合并吗?我对它的阅读表明它是在您向 git 询问差异时应用的过滤器。也就是说,修订历史仍然由 binary 文件组成,基于文本的合并仍然是不可能的;过滤只允许您生成人类可读的差异,但不能应用它。 (即它只是一个有点草率意义上的“差异”) @kampu 不,既然你提到了它,我不确定它是否能够合并,所以我从我的答案中删除了它。

以上是关于Git 和 OpenXML 文档的主要内容,如果未能解决你的问题,请参考以下文章

为啥openxml页脚不发布到文档

dotnet OpenXML PPT 动画框架入门

dotnet OpenXML PPT 动画框架入门

OpenXML - 将书签应​​用于 Word 文档中的段落

OpenXML读取文档

在Word2007中,如何通过Range.InsertXML方法将一个OpenXML插入到空白文档中?