我有一台安装了Gitolite的服务器来托管我的存储库我昨天创建了一个新的repo,今天当我尝试将更多提交推送到我得到的服务器时:
fatal: object 86eeaa0c5a154ff3df34d6a43669930b9c6c7f59 is corrupted
error: unpack failed: unpack-objects abnormal exit
error: failed to push some refs to
Run Code Online (Sandbox Code Playgroud)
由于回购是相当新的,我不会因为丢失以前的提交而烦恼所以我删除了我的本地和远程仓库,但仍然得到相同的错误.
正如我所说,我不太关心维护我的提交历史,我只想让它再次运行!
正如评论中所见,任何额外的回购在创建过程中都会出现问题(即当gitolite-admin使用gitolite.conf声明新回购的文件推回回购时)
之前我没有注意到这一点,但是当我创建一个新的repo时,我收到以下错误:
remote: line 1 too long: command="/home/git/gitolite/src/gitolite...
remote: FATAL: fingerprinting failed for /tmp/Cdug9Itivq
Run Code Online (Sandbox Code Playgroud)
但它正在创建回购
/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;
}
Run Code Online (Sandbox Code Playgroud)
这意味着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 ""
Run Code Online (Sandbox Code Playgroud)
2015年4月更新:
正如starfry在" Gitolite - remote:FATAL:指纹识别'keydir /'失败"中所提到的:
版本6.8中OpenSSH中的密钥指纹格式发生了变化:
将
FingerprintHash选项添加到ssh(1)和sshd(8),以及等效命令行标志到其他工具以控制用于关键指纹的算法.默认值从MD5更改为SHA256,格式从十六进制到base64.指纹现在具有前置的哈希算法.
新格式的一个示例:
SHA256:mVPwvezndPv/ARoIadVY98vAC0g+P/5633yTC4d/wXE
Run Code Online (Sandbox Code Playgroud)
请注意,可视主机键也会有所不同.
自15年3月18日以来,最新的gitolite git结账了解这种新格式.