有没有办法让 Git 遍历符号链接并将其视为目标文件?
- 我不想使用硬链接,它们不能跨文件系统工作,也不能用于目录。
- 我不想复制该文件,我必须手动保持两个文件同步。
- 我不想使用绑定安装。它需要 sudo,并且您必须进行编辑
fstab
才能使其永久。不适用于文件。 - 我不想使用修补过的 git 二进制文件。我想用标准 git 来做。
- 我不在乎这是否危险。我对风险没问题。
- 我有一个特定的用例,这是有意义的。它是什么并不重要。
- 这是偶然的事情,所以我并不是在寻找一种在全球范围内做到这一点的方法。
我知道 Git 开发人员本身并不认同这个想法。太糟糕了。我猜这排除了traverse_symlinks=True
在手册中找到某些选项的可能性。我预计解决方案将涉及某种神秘的诡计或黑魔法。没事儿。
答案1
不,那里没有。 Git 不支持这个。
Git 控制存储库的整个状态,该存储库必须驻留在一个文件系统上。当它将文件写入存储库或工作树时,它要么删除现有文件并替换它(对于大多数工作树文件),要么写入一个新文件O_EXCL
并将其重命名到位(对于.git
目录中的大多数文件)。作为 Git 贡献者,我不知道 Git 会通过正常打开文件来写入文件,因此没有机会遍历符号链接。
如何实现你的目标取决于你的实际目标是什么,但让 Git 遍历符号链接并不是这个解决方案,因为它不起作用。