有些格式实际上是伪装的 zip 文件,例如 docx 或 odt。如果我将它们直接存储在版本控制中,它们将作为二进制文件处理。我理想的解决方案是
- 有一个钩子,在提交之前
foo.docx/
为每个文件创建一个目录,将所有文件解压缩到其中foo.docx
- 可选地,有一个重新缩进 xml 文件的钩子
- 有一个钩子,
foo.docx
可以在更新后从存储的文件中重新创建
我不希望 docx 文件本身受版本控制。(我知道一个相关的问题,其中建议使用自定义差异的不同方法。)
这是可行的吗?这对 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>