当我在 Windows 上克隆带有符号链接的存储库时会发生什么?

2023-11-26

关于在 Windows 上添加符号链接的支持存在很多问题。但是,当我克隆时实际发生了什么带有符号链接的存储库在 Windows 上?


Since 版本1.5.3本机 Git 客户端git clone and git init将探测目标文件系统的符号链接支持并设置本地存储库配置core.symlinks相应地,即false适用于 FAT 或 NTFS。这使得符号链接被创建和提交,例如在 Linux 下显示为纯文本文件,其中包含 Windows 下的链接文本(参见core.symlinks 上的 git 配置文档了解详情)。

Since 适用于 Windows 的 Git 版本 2.10.2安装程序有启用符号链接支持的显式选项.

在旧版本的 Windows 版 Git 中,您可以手动设置core.symlinks to true这使得 Git 能够在以下约束下创建符号链接:

  • 符号链接仅在 Windows Vista 及更高版本上可用。
  • 符号链接仅适用于 NTFS,不适用于 FAT。
  • 您需要成为管理员和/或拥有SeCreateSymbolicLinkPrivilege特权。
  • 默认情况下禁用远程文件系统上的符号链接。
  • Windows 的符号链接是键入的。
  • 许多程序不理解符号链接(包括旧版本的 Windows 资源管理器)。

More details可在 Git for Windows wiki 中找到。

在旧版本的 Git for Windows 中手动设置core.symlinks手动到true克隆并重置工作树后,您会收到类似于以下内容的错误消息

$ git reset --hard HEAD
error: unable to create symlink directory (Function not implemented)
error: unable to create symlink linux-links/this_is_a_symbolic_link_to_file (Function not implemented)
fatal: Could not reset index file to revision 'HEAD'.

附带说明一下,JGit 客户端直到版本 3.3 才探测目标文件系统以获取符号链接支持,因此core.symlinks设置回退到系统/全局 Git 配置。从...开始3.3版本JGit 探测符号链接支持,但似乎过于保守,设置core.symlinks = false 在某些情况下,实际上会支持符号链接.

您可以结帐https://github.com/sschuberth/git-playground其中包含一堆在 Linux 上创建的用于测试的链接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我在 Windows 上克隆带有符号链接的存储库时会发生什么? 的相关文章

随机推荐