如何将未压缩的文件夹视为压缩文件?

时间:2012-02-13 06:08:10

标签: git mercurial docx odt

我们都知道有关第三方或内置于操作系统的工具,用于将压缩文件视为文件夹。但有没有人知道如何反过来:欺骗操作系统认为包含一些文件的标准文件夹实际上是一个压缩文件?寻求Windows,Linux和Mac的解决方案(尽管我发现没有一种解决方案可以在所有这些平台上运行)。

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

我已经知道Zipdoc和类似的utils使用Git和Mercurial编码/解码钩子来将数据转换成存储库。这是解决问题的一个很好的解决方案,但我发现自己想要浏览包含文档未压缩文件夹内容的存储库,并单独区分文件。

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

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

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

2 个答案:

答案 0 :(得分:2)

要以一种很好的方式解决这个问题,你可以使用带有nsmux的Hurd转换器 - 尽管改变你的内核可能是一大步:)

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

您可以调整tarfs转换器。这样您就可以通过folder,,zip打开文件夹。

但这需要做一些工作。

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

答案 1 :(得分:0)

该程序可以为您提供帮助:

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

源代码:

https://bitbucket.org/htilabs/ooxmlunpack

您必须配置一个路径,该程序将在该路径中处理所有文件。
执行程序后,它将

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

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

另请参阅Version-controlling zipped files (docx, odt)