git count对象警告:没有相应的。包:
来自git count objects-v的此警告是什么意思?谷歌只给了我git本身的来源git count对象警告:没有相应的。包:,git,Git,来自git count objects-v的此警告是什么意思?谷歌只给了我git本身的来源 warning: no corresponding .pack: .git/objects/pack/pack-fdd1d6e3161128d4fe4b38849cf0.idx ... (many lines of the same warning) count: 4715 size: 37151 in-pack: 426048 packs: 22 size-pack: 656437 prune-pac
warning: no corresponding .pack: .git/objects/pack/pack-fdd1d6e3161128d4fe4b38849cf0.idx
... (many lines of the same warning)
count: 4715
size: 37151
in-pack: 426048
packs: 22
size-pack: 656437
prune-packable: 137
garbage: 92
size-garbage: 5893
这是否意味着这些对象可以被压缩,正如
我如何判断我是应该重新打包还是用gc访问我的存储库(显然,重新打包和gc之间有区别)?它到底是必要的还是有害的
为什么git有这么多行话 这可能是因为包文件太大 在Git2.30(2021年第1季度)之前,代码没有准备好处理大于4GB的pack
.idx
文件
参见,,(2020年11月13日)by.(于2020年11月25日合并) :使用
size\u t
存储数据包.idx
字节偏移量
签字人:杰夫·金
我们有时将偏移量作为“无符号长”存储到pack.idx
文件中,但pack.idx
文件的mmap'd大小可能超过4GB
这在像Linux这样的LP64系统上就足够了,但在像Windows这样的LLP64系统上就太小了,因为“unsigned long”仍然只有32位
让我们使用size\t,
这是一种更好的内存缓冲区偏移类型
影响
:正确计算大于4GB的idx文件的校验和
签字人:杰夫·金
在检查.idx
文件的尾随校验和散列时,我们将整个缓冲区(减去尾随散列)传递到对\u hash\u algo->update\u fn()的单个调用中
但我们将其转换为“unsigned int”。
这来自于(“当我们真正指的是文件偏移量时,使用off\u t
”,2007-03-06,Git v1.5.1-rc1--)。该提交开始将index\u size
变量存储为off\t,
,但从那时起,我们的mozilla-sha1实现被限制为更小的大小。
大概cast是一种说明我们希望.idx
文件很小的方式,因此我们不需要循环(就像我们对任意大的.pack文件所做的那样)。尽管作为旁白,它仍然是错误的,因为mozilla函数实际上使用了带符号的int
现在,我们的散列更新函数被定义为采用size\t,
,因此我们可以直接传递整个缓冲区。演员阵容实际上导致了一个错误的截断
不过,在这里,让我们首先去掉令人困惑的off\t
变量。我们不是从文件系统中获取大小,而是从p->index\u size,
中获取大小,这是一个size\u t
。事实上,我们可以通过删除本地变量replicationp->index\u size,
来提高代码的可读性,取而代之的是存储实际索引数据的大小,减去尾随散列
(复制到剪贴板)
您的系统上是否存在文件.git/objects/pack/pack-fdd1d6e311128d4fe4b38849cf0.pack
?该消息听起来像是您有一个*.idx
文件,但没有匹配的*.pack
文件。是的,pack文件存在,这一警告令人惊讶。“为什么git有这么多行话”-因为Torvalds