有没有办法在 macOS 中解决 git repo 中的长路径的“PATH_MAX”?

Posted

技术标签:

【中文标题】有没有办法在 macOS 中解决 git repo 中的长路径的“PATH_MAX”?【英文标题】:Is there any way to work around `PATH_MAX` in macOS for long paths in a git repo? 【发布时间】:2021-08-19 17:21:13 【问题描述】:

在 macOS 中,路径不能超过 1024 字节:

command cc -dM -E -xc - <<< '#include <sys/syslimits.h>' | grep -i ' [NP]A.._MAX'
#define NAME_MAX 255
#define PATH_MAX 1024

如何克隆路径超过此限制的 git 存储库?

【问题讨论】:

这是,我认为,文件系统限制,而不是操作系统硬限制,因此请尝试创建具有更长路径的文件系统(例如在可移动驱动器上)。您也可以尝试在虚拟机或容器中运行的真实操作系统中进行克隆。 @phd APFS 的限制是否更好? "它看起来像一个 255 个字符且没有路径限制的文件名。" 发现于 en.wikipedia.org/wiki/Comparison_of_file_systems#Limits 发现于 sqa.stackexchange.com/questions/44763/… 发现于google.com/search?hl=en&pws=0&q=APFS+max+path+length 【参考方案1】:

您可以克隆这样的存储库,但无法在 macOS 上查看它。 PATH_MAX(如果已定义)指定操作系统支持的最大路径长度。可能 APFS 本身没有最大路径长度,但 macOS 有。如果您能以某种方式将这个文件系统挂载到 Linux 上,您就可以利用它更长的 PATH_MAX。

您可以使用 Linux 虚拟机来处理此存储库,或者您可以使用 Git 管道命令或 libgit2 在裸存储库上操作,以避免需要在您的系统上检查它(如果这是您的用例的选项)。

【讨论】:

以上是关于有没有办法在 macOS 中解决 git repo 中的长路径的“PATH_MAX”?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法列出终端中的所有 git 存储库?

使用hg convert将git repo转换为mercurial时出错

有没有办法检查远程 git repo 是不是有更改,而无需实际获取更改?

git

在詹金斯作业中使用 git repo 名称作为 ENV 变量

事后有没有办法将svn历史导入git?