Git是否会跟踪资源派生文件?

5
每当我替换版本控制下的 Photoshop .psd 文件时,我就会问自己这个问题。
您可以使用 ls -l 命令看到 PS 在资源 fork 中创建了一个缩略图标。

在你的评论后更新了我的答案,删除了过时的信息。 - VonC
2个回答

5

Git 不会追踪元数据,因为这些资源不是文件内容的一部分(所以你的答案是“否”)。

在他的“跨平台版本控制”条目中,Jakub Narębski 评论道:

额外的元数据问题不符合 SCM 标准,并且不同的文件系统可以或不能存储它们。
例如包括完整的 Unix 权限、Unix 所有权(以及文件所属的组),其他权限相关的元数据,例如某些 Linux 文件系统上的 EA(扩展属性)或 MacOS 上(不)著名的资源表单(MacOS 上的资源 fork 与 Linux 上的 xattrs:Eric Sink article 中的第 5 个问题)。

这不是源代码管理系统(SCM)需要解决的问题。无差别地保留额外的元数据可能会导致权限和所有权等方面的问题。因此,SCM只保留有限的、SCM友好的子集元数据。如果你需要保留额外的元数据,可以使用(在良好的SCMs中)钩子来实现,例如etckeeper在Git中使用metastore

Thomas Tempelmann评论中指出:

实际上,自macOS 10.12以来,textClippings也将信息存储在数据叉中,以plist格式,具有与资源叉内容相同的键和值。

唯一无法使用的是QuickLook,如果rsrc丢失,但打开这些文件将显示内容。
因此,在Git中存储.textClipping文件并非没有希望。


第二个要点已经过时约15年了,现在PS只会把你不想要的无意义东西放入RF中。你的“否定”是正确的,但前面的部分似乎与此相矛盾。 - Rhythmic Fistman
1
Adobe Photoshop 3.0.4软件开发工具包,版权所有1991-1995年,Adobe Systems。 - VonC
从技术上讲,资源叉是文件数据的第二个(并行)流。资源叉也不一定是元数据。例如,“.textClipping”文件仅在资源叉中存储其信息,而数据叉保持为空,内容肯定不是元数据。 - Thomas Tempelmann
1
@ThomasTempelmann,好观点(12年后),谢谢。也许这就是为什么有一个建议忽略macOS.gitignore中的.textClipping的PR(https://github.com/github/gitignore/pull/3550)。 - VonC
实际上,自 macOS 10.12 起,textClippings 将信息以 plist 格式存储在数据 fork 中,并具有与资源 fork 内容相同的键和值。唯一无法使用的是 QuickLook(如果 rsrc 缺失),但打开这些文件将显示内容。因此,在 git 中存储 .textClipping 文件并非没有希望。 - Thomas Tempelmann
1
@ThomasTempelmann 很有趣。我已经将您的评论包含在答案中,以增加其可见性。 - VonC

2

简短的回答是不会

在Mac上,默认情况下,git不会跟踪资源叉、xattrs或查找器信息。

git将直接削减您的资源叉,这正是我想要的。

其他工具,如cprsync已在Mac上进行了补丁处理,以保留此元数据,有时很方便,有时很烦人。

git目前既不烦人也不方便,这取决于您的观点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接