5

我们都知道用于将压缩文件视为文件夹的第三方工具或内置于操作系统的工具。但是有谁知道如何做相反的事情:欺骗操作系统认为包含一些文件的标准文件夹实际上是一个压缩文件?正在寻找适用于 Windows、Linux 和 Mac 的解决方案(尽管我意识到没有一种解决方案可以在所有这些平台上运行)。

问题的背景是让源代码版本控制系统(如 SVN、Git 或 Mercurial)更有效地存储实际上是压缩文件夹的文档版本之间的差异(保存各种 XML 文件、一些元数据和一两个缩略图),例如 ODT 和 DOCX。

我已经知道 Zipdoc 和类似的实用程序,它们使用 Git 和 Mercurial 编码/解码钩子来将数据转换进出存储库。这是解决问题的好方法,但我发现自己想浏览包含文档未压缩文件夹内容的存储库,并单独区分其中的文件。

这意味着必须将未压缩的内容添加到存储库,而不是文档的 tar'd 或 zipped-without-compression 版本。这反过来意味着从存储库中签出会生成一个未压缩的文件夹,其中包含代表文档的文件。因此,我原来的问题。

我设想的神话产品会检测一个名称包含“注册”扩展名(例如“docx”)的文件夹,然后将其“重新安装”为同名的压缩文件。

或者,有谁知道如何利用 Git/Mercurial 编码/解码钩子来实现这个梦想?

4

2 回答 2

2

为了以一种好的方式解决这个问题,您可以使用带有 nsmux 的 Hurd 翻译器 - 尽管更改内核可能是其中的一大步 :)

http://www.gnu.org/software/hurd/hurd/translator/nsmux.html

您也许可以调整 tarfs 翻译器。这将允许您通过folder,,zip.

但这需要相当多的工作。

(这是一个非常简单的用例指向一个相当复杂的问题的一个很好的例子)

于 2012-07-02T10:02:59.573 回答
0

该程序可以帮助您:

https://bitbucket.org/htilabs/ooxmlunpack/downloads/OoXmlUnpack.exe

源代码:

https://bitbucket.org/htilabs/ooxmlunpack

您必须配置该程序将处理所有文件的路径。
执行程序后会

  • 解压所有office文件(xlsx, xlsm, docx, ...)
  • 再次压缩它而不压缩(= TAR 球)

毕竟你有现在需要更多磁盘空间的“相同”文件(但仍然使用 Word/Excel)。但是在这种状态下,这些文件的更改只需要存储库中的最小磁盘空间(因为它们不再是“二进制”)。
作为废品,您还拥有可以在必要时删除的提取内容。

另请参阅版本控制压缩文件(docx、odt)

于 2019-10-23T05:05:59.267 回答