我的全局Git配置中有以下设置:
[transfer]
fsckobjects = true
[fetch]
fsckobjects = true
[receive]
fsckobjects = true
这些验证克隆数据库中的所有对象都是有效且可访问的。
但是,我要查看的某些回购邮件有错误,例如oh-my-zsh
:
git clone https://github.com/robbyrussell/oh-my-zsh.git .oh-my-zsh
Cloning into '.oh-my-zsh'...
remote: Counting objects: 15624, done.
error: object 2b7227859263b6aabcc28355b0b994995b7148b6: zeroPaddedFilemode: contains zero-padded file modes
fatal: Error in object
fatal: index-pack failed
有没有办法可以覆盖单个“git clone”操作的全局fsckobjects设置?
答案 0 :(得分:9)
使用git clone --config key=value
并传递您想要跳过的所有参数。对于oh-my-zsh
,看起来像这样:
git clone --config transfer.fsckobjects=false \
--config receive.fsckobjects=false \
--config fetch.fsckobjects=false \
git://github.com/robbyrussell/oh-my-zsh.git
答案 1 :(得分:1)
Git 2.19(2018年第三季度)现在可以克服该错误(转换为警告)。
可以通过git push
配置变量来自定义在“ receive.fsck.*
”接收端执行的防止不良对象进入存储库的测试。
现在,我们已经获得了在“ git fetch”方面执行相同操作的对手,
fetch.fsck.*
个配置变量。
请参见commit 8a6d052,commit 65a836f,commit d786da1,commit 1362df0,commit 8b55b9d,commit 720dae5,commit 456bab8,{{3} },commit b2558ab,commit 5180dd2(2018年7月27日)由commit 95d9d4b。
(由Ævar Arnfjörð Bjarmason (avar
)在Junio C Hamano -- gitster
--中合并,2018年8月17日)
fetch
:实施fetch.fsck.*
对
fetch.fsck.*
的现有支持receive.fsck.*
。这样就可以用 特定问题而无需关闭fetch.fsckObjects
。其中一个这样的存储库是commit f8ca718 使用克隆时,在此更改之前哪个将发出此错误
fetch.fsckObjects
:error: object 2b7227859263b6aabcc28355b0b994995b7148b6: zeroPaddedFilemode: contains zero-padded file modes fatal: Error in object fatal: index-pack failed
现在使用
fetch.fsck.zeroPaddedFilemode=warn
,我们会对此进行警告 问题,但克隆将成功:warning: object 2b7227859263b6aabcc28355b0b994995b7148b6: zeroPaddedFilemode: contains zero-padded file modes warning: object a18c4d13c2a5fa2d4ecd5346c50e119b999b807d: zeroPaddedFilemode: contains zero-padded file modes warning: object 84df066176c8da3fd59b13731a86d90f4f1e5c9d: zeroPaddedFilemode: contains zero-padded file modes
这样做的动机是能够跨一组计算机全局打开
fetch.fsckObjects
,但仍然可以通过将特定问题列入白名单或更好地将特定对象列入白名单而手动克隆各种旧版存储库。
答案 2 :(得分:0)
如果您只是需要最新版本 - 例如自动安装 - 我一直在我的脚本中使用它(参见例如install_ohmyzsh.sh#L70):
git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git
它不会克隆整个仓库历史记录,只是最新版本,无论如何都应该可以自动安装。
(我很确定自己没有提出这个问题,但我无法将其追溯到原始来源。)