4

我有一个安装了 Gitolite 的服务器来托管我的存储库我昨天和今天创建了一个新的存储库,当我尝试将更多提交推送到我得到的服务器时:

fatal: object 86eeaa0c5a154ff3df34d6a43669930b9c6c7f59 is corrupted
error: unpack failed: unpack-objects abnormal exit
error: failed to push some refs to

由于 repo 很新,我并不太担心丢失以前的提交,所以我删除了本地和远程 repo,但仍然遇到相同的错误。

正如我所说,我不太关心维护我的提交历史,我只想让它再次工作!

4

1 回答 1

5

如评论中所见,任何额外的回购在其创建过程中都会出现问题(即,当使用声明新回购gitolite-admin的文件推回回购时)gitolite.conf

我之前没有注意到这一点,但是当我创建一个新的仓库时,我收到以下错误:

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 - 远程:致命:'keydir/' 的指纹识别失败”中提到的:

在 6.8 版中,OpenSSH 中的密钥指纹格式发生了变化:

FingerprintHash选项添加到ssh(1)and sshd(8),并将等效的命令行标志添加到其他工具,以控制用于密钥指纹的算法。默认从 MD5 更改为 SHA256,格式从 hex 更改为 base64。

指纹现在预先添加了哈希算法。
新格式的示例:

SHA256:mVPwvezndPv/ARoIadVY98vAC0g+P/5633yTC4d/wXE

请注意,视觉主机键也会有所不同。

自 2015 年 3 月 18 日以来,gitolite的最新 git checkout 已意识到这种新格式。

于 2012-05-24T19:26:15.373 回答