我有一台安装了 Gitolite 的服务器来托管我的存储库,我昨天和今天创建了一个新的存储库,当我尝试将更多提交推送到我得到的服务器时:
fatal: object 86eeaa0c5a154ff3df34d6a43669930b9c6c7f59 is corrupted
error: unpack failed: unpack-objects abnormal exit
error: failed to push some refs to
由于存储库非常新,我不太担心丢失以前的提交,所以我删除了我的本地和远程存储库,但仍然收到相同的错误。
正如我所说,我不太关心维护我的提交历史记录,我只想让它再次工作!
如注释所示,任何其他存储库在创建过程中都存在问题(即在使用声明新存储库的gitolite.conf
文件推回gitolite-admin
存储库时)
我以前没有注意到这一点,但是当我创建一个新的存储库时,我收到以下错误:
remote: line 1 too long: command="/home/git/gitolite/src/gitolite...
remote: FATAL: fingerprinting failed for /tmp/Cdug9Itivq
但它正在创建存储库
/home/git/repositories
此操作发生在名为 ssh-authkeys
的编译后触发器中:
sub fp_file {
return $selinux++ if $selinux; # return a unique "fingerprint" to prevent noise
my $f = shift;
my $fp = `ssh-keygen -l -f '$f'`;
chomp($fp);
_die "fingerprinting failed for '$f'" unless $fp =~ /([0-9a-f][0-9a-f](:[0-9a-f][0-9a-f])+)/;
$fp = $1;
return $fp;
}
这意味着ssh-keygen -l -f <path_to_public_key.pub>
没有遵循正确的模式,如"自助服务密钥管理"所示。
确保您的密钥生成如下:
ssh-keygen -t rsa -f "${H}/.ssh/git" -C "Gitolite Admin access (not interactive)" -q -P ""
2015 年 4 月更新:
正如Starfry在"Gitolite - remote: FATAL:'keydir/'的指纹识别失败"中提到的:
在 6.8 版中,OpenSSH 中的密钥指纹格式发生了更改:
FingerprintHash
选项添加到ssh(1)
和sshd(8)
,并将等效的命令行标志添加到其他工具中,以控制用于密钥指纹的算法。默认值从 MD5 更改为 SHA256,格式从十六进制更改为 base64。指纹现在预置了哈希算法。
新格式的示例:
SHA256:mVPwvezndPv/ARoIadVY98vAC0g+P/5633yTC4d/wXE
请注意,可视主机密钥也将有所不同。
自 15 年 3 月 18 日以来,Gitolite 的最新 git 结账就知道这种新格式。