【发布时间】:2011-04-15 11:14:36
【问题描述】:
有些格式实际上是伪装的 zip 文件,例如docx 或 odt。如果我将它们直接存储在版本控制中,它们将作为二进制文件处理。我理想的解决方案是
- 有一个钩子,在提交之前为每个
foo.docx文件创建一个foo.docx/目录,将所有文件解压缩到其中 - 可选地,有一个重新缩进 xml 文件的钩子
- 有一个挂钩,可在更新后从存储的文件中重新创建
foo.docx
我不希望 docx 文件本身受版本控制。 (我知道 related question 建议使用自定义差异的不同方法。)
这可行吗?这对 mercurial 可行吗?
更新:
我知道钩子。我对细节感兴趣。这是一个演示预期行为的会话。
> hg add foo.docx
> hg status
A foo.docx
> hg commit
> # Change foo.docx with external editor
> hg status
M foo.docx
> hg diff
+++ foo.docx/word/document.xml
- <w:t>An idea</w:t>
+ <w:t>A much better idea</w:t>
【问题讨论】:
-
git具有允许这样做的钩子行为,但我不知道 hg -
关于您的第二点:请注意,这些文档格式(尤其是 .xslx 和 ODF)不会按照 XML 标准的规定处理空格,但 - 主要是出于实际目的 - 保留空格,即使这是未注明。因此重新缩进文件可能会改变内容。
-
您为什么不希望将 zip 格式的文件放入修订控制中。你想解决什么问题?
-
@Rudi - 我想看到有意义的变化。我不想要一个庞大的存储库,因为我每天都对一个 docx 文件进行小的更改。
标签: version-control mercurial zip openoffice.org docx