清理大裸git存储库失败


1

我无法清理git repo。如果我尝试,我收到此错误消息:

$ git gc
Counting objects: 8828, done.
fatal: Cannot handle files this big
error: failed to run repack

如果我谷歌它,实际上只有2个结果:这个问题和作为pastebin条目的错误消息,我在这里首次发布此问题后2分钟提交。所以没有其他人似乎有这个问题。

当然,有一个4.8 GB的文件跟踪git和git在我的笔记本电脑上运行时需要大约8到9 GiB的虚拟内存 git gc,我的raspi只有1 GB的物理ram。但是,它通常具有1 GiB交换,我只是添加了30 GiB交换来执行此操作。所以它应该有足够的内存。

不幸的是,错误消息不包含清理命令无法处理大文件的原因。所以我不知道我的系统的限制属性是什么。

有什么问题,是否可以对覆盆子pi进行清理? (将它转移到台式计算机似乎不是一个很好的解决方案。)

我实际上计划使用我的raspi清理一些更大的回购,因为它仍然运行,这样我可能不需要让我的电脑运行几个小时。

我认为也许克隆回购将产生一个清理回购。但是,我得到了这个输出:

$ git clone ../Documents
Cloning into 'Documents'...
done.
fatal: Cannot handle files this big   
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry the checkout with 'git checkout -f HEAD'

但是,添加 --bare 到clone命令立即返回,没有错误。 (可能有些ext4魔法正在进行,因此文件会在写入时被复制。)不用说,没有进行清理。但这可能包含一条线索,所以我让你知道。


是否有什么阻止你将回购复制到另一台机器,在那里做,并将其复制回去?
ethanwu10

这就像使用我的笔记本电脑通过ssh访问文件进行清理一样。 (不要将此与通过ssh登录并从那里运行命令混淆。)但我认为没有任何理由这是不可能的。这里的限制是什么?它不能是ram,因为我的笔记本电脑只有16 GB而且没有交换,我的raspi现在比包含交换的时候多一倍。它不能是CPU能力,因为它只需要更长的时间。
UTF-8

如果你只是需要完成工作,你不必在RPi上运行gc命令,但如果你的问题是关于在Pi上执行它,那么你可能想澄清一下
ethanwu10

删除该文件怎么样?你可以做到 git gc 然后再添加它(如果需要)。不是最优雅的方式,而是务实。
duenni

@duenni我不想删除该文件。它是我在计算机上最重要的文件之一,当然我希望它在git中,因为它会不时变化。只是因为我怀疑跟踪这个文件使git因为某种原因无法清理我的raspi上的git repo。不过我真的不知道。错误消息不是很具描述性。它也可能是一个大的目标文件。有一个4.8 GB的目标文件,可能只保存一个4.8 GB的文件,并且有一个6 GB的文件 objects/pack
UTF-8

Answers:


1

这是git中的一个bug。我告诉git邮件列表中的人们有关问题并修复了问题。补丁是最新的几个版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.