【发布时间】:2023-10-25 04:08:01
【问题描述】:
我们都知道用于将压缩文件视为文件夹的第三方工具或操作系统内置工具。但是有谁知道如何做相反的事情:欺骗操作系统认为包含一些文件的标准文件夹实际上是一个压缩文件?正在寻求适用于 Windows、Linux 和 Mac 的解决方案(尽管我意识到没有一种解决方案可以在所有这些平台上运行)。
问题的背景是让源代码版本控制系统(如 SVN、Git 或 Mercurial)更有效地存储实际上是压缩文件夹的文档版本之间的差异(保存各种 XML 文件、一些元数据和一个缩略图或两个),例如 ODT 和 DOCX。
我已经知道 Zipdoc 和类似的实用程序,它们使用 Git 和 Mercurial 编码/解码钩子来将数据转换进出存储库。这是解决问题的好方法,但我发现自己想浏览包含文档未压缩文件夹内容的存储库,并单独比较其中的文件。
这意味着必须将未压缩的内容添加到存储库,而不是文档的 tar'd 或 zipped-without-compression 版本。这反过来意味着从存储库中签出会生成一个未压缩的文件夹,其中包含代表文档的文件。这就是我最初的问题。
我设想的神话产品会检测名称包含“已注册”扩展名(例如“docx”)的文件夹,然后将其“重新挂载”为同名的压缩文件。
另外,有谁知道如何利用 Git/Mercurial 编码/解码钩子来实现这个梦想?
【问题讨论】:
-
我一定是误解了你,因为我不明白你为什么需要欺骗操作系统认为文件夹已被压缩。为什么不在 repo 中包含常规的未压缩目录(没有特殊扩展名),让操作系统认为它是未压缩的。因为它是。
-
这个问题很笼统。如果你能更具体一些,你可能会得到更好的回应。
-
@BenLee:因此,双击“重新解释”文件将为该类型/扩展名的文件打开相应的注册应用程序。我在这里描绘了一个驾驶员级别的设施。
-
一个驱动程序级工具:现在让我意识到,当需要将修改提交回存储库时,Mercurial(或 Git)无法判断它真的是一个文件夹。哦,好吧,我还是想知道你是否可以让一个文件夹在操作系统中显示为一个压缩文件。
-
即使它是“驱动程序级别”,我也可以想象某种方式,比如用户界面中的右键单击上下文菜单,在提交之前将文件卸载回普通文件夹回购。