安装Big Sur后,无法再通过HTTPS通过git克隆大型回购协议

安装Big Sur后,无法再通过HTTPS通过git克隆大型回购协议,git,macos-big-sur,Git,Macos Big Sur,每当我尝试克隆大型回购时,都会发生以下情况: $ git clone https://github.com/yarnpkg/berry.git Cloning into 'berry'... remote: Enumerating objects: 60762, done. remote: Counting objects: 100% (1155/1155), done. remote: Compressing objects: 100% (588/588), done. Receiving o

每当我尝试克隆大型回购时,都会发生以下情况:

$ git clone https://github.com/yarnpkg/berry.git
Cloning into 'berry'...
remote: Enumerating objects: 60762, done.
remote: Counting objects: 100% (1155/1155), done.
remote: Compressing objects: 100% (588/588), done.
Receiving objects:   5% (3454/60762), 13.86 MiB | 4.60 MiB/ (etc etc)
fatal: fetch-pack: invalid index-pack output
我没有安装杀毒软件,也没有VPN。我尝试连接到另一个网络,但这并没有解决它,所以一定是大苏尔引起的。我不知道还能尝试什么

macOS 11.4,APFS+文件系统,git 2.31.1

我已经尝试过更改压缩设置,弄乱了包大小设置,但也没有帮助。我之所以发布这篇文章,是因为我已经尝试了所有我在互联网上看到的东西,但没有任何效果。

这应该是一条评论(因为它不是答案),但我需要一些格式和大量空间。简短的版本是,您需要找出为什么
git index pack
行为不正常或失败。(通过智能协议获取通常检索所谓的瘦包,
git-fetch
需要使用
git-index-pack--fix-thin
来“充实”它)

如果
git index pack
的输出与
git fetch pack
的预期不匹配,则会出现“无效索引包输出”错误:

这是从
fetch pack.c
运行的,它使用基于大量变量的参数运行
git index pack
。如果将环境变量
git_TRACE
设置为1运行
git克隆
,则可以观察git运行
git索引包
。只有在设置了
do\u keep
时,才会调用
index\u pack\u lockfile
,这最初是基于
args->keep\u pack
,但是如果包头的
hdr\u条目
值等于或超过
unpack\u limit
(参见第859行)

您可以使用
fetch.unpackLimit
和/或
transfer.unpackLimit
控制
unpackLimit
值。默认值为100。您可能可以使用这些解决索引包的一些问题,但索引包不应该以任何方式出现故障。请注意,如果要强制使用
git-fetch
来代替
git-unpack-objects
,还必须禁用对象检查(
fsck\u-objects

直接在由
git fetch
检索的数据上运行
git index pack
可能也很有趣。(考虑安装一个shell脚本来代替普通的
git索引包
,脚本在其中打印其参数,然后在自己的进程组上使用
kill-STOP
,以便您可以检查临时文件。)

解决了

TL;DR:
ulimit
限制了我文件系统上的最大文件大小。为什么这在卡塔利纳从来都不是问题,谁知道呢。

我的shell启动脚本中有以下内容:

ulimit -n 65536 65536
第二个参数是错误的。它将最大文件大小限制为32MB。奇怪的是,我在卡塔琳娜有着完全相同的背景,它没有任何限制。一定是有人提供了这个设置,而我只是复制了它,却不理解其中的含义

我运行了
ulimit-n unlimited
,现在一切都好了

关于ulimit从Catalina到Big Sur变化的有趣注释:

我在Catalina安装中运行了以下操作:

$ ulimit -a                                                   
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              65536
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       11136
-n: file descriptors                65536
$ mkfile 500m whoa                                             
$ 
看那个!创建500MB文件没有问题,显然忽略了ulimit的65536块文件大小限制

但在Big Sur上,使用相同的ulimit设置:

$ mkfile 500m whoa                                                                                                                               
[1]    22267 file size limit exceeded  mkfile 500m whoa

你能更具体地说明你正在使用的操作系统、文件系统和git版本吗?这能回答你的问题吗@奥兹诺格,我想没有。这个问题的答案基本上是“Git的老版本的问题”和“RAM不足”。没有任何东西可以解释为什么升级操作系统版本会导致这样的问题。你有没有尝试过停用帖子中的spoted之类的东西?还有那个?@matt“你是说任何一个拥有Big-Sur的人都会经历这种情况吗?”不。Big-Sur改变了某些设置中打破Git的东西,而不是其他设置,这是完全合理的。类似的错误经常发生。
$ mkfile 500m whoa                                                                                                                               
[1]    22267 file size limit exceeded  mkfile 500m whoa