如何解决'无效回购名称'Git错误?

时间:2013-03-13 21:30:37

标签: git gitolite gitlab

我已经安装了Gitolite,就像在GitLab说明中说的那样,直到现在一切正常,创建了repo ...但是当试图克隆或推送时,它返回NO repo found - 或类似的东西。

但是当我将我的遥控器设置为git@server:22/~git/repositories/repo.git之类的完整路径时,它会克隆,但是当尝试推送时,它会发现错误:

git push origin master
ERROR: invalid repo name.
fatal: The remote end hung up unexpectedly

它有什么用?

1 个答案:

答案 0 :(得分:2)

该错误消息来自“gitolite-shell.parse_soc()

sub parse_soc {
    my $soc = $ENV{SSH_ORIGINAL_COMMAND};
    $soc ||= 'info';

    my $git_commands = "git-upload-pack|git-receive-pack|git-upload-archive";
    if ( $soc =~ m(^($git_commands) '/?(.*?)(?:\.git(\d)?)?'$) ) {
        my ( $verb, $repo, $trace_level ) = ( $1, $2, $3 );
        $ENV{D} = $trace_level if $trace_level;
        _die "invalid repo name: '$repo'" if $repo !~ $REPONAME_PATT;
        trace( 2, "git command", $soc );
        return ( $verb, $repo );
    }

REPONAME_PATT为:

$REPONAME_PATT = qr(^\@?[0-9a-zA-Z][-0-9a-zA-Z._\@/+]*$);

gitolite地址不应包含任何路径,如下所示:

git@server:22/repo

而不是git@server:22/~git/repositories/repo.git,这个问题是described here

  

考虑git@server:repositories/reponame.git   克隆操作将起作用 - 您正在使用完整的Unix路径(假设默认为$REPO_BASE设置),因此shell会找到您所说的repo。
  但是,当你推动时,gitolite的更新钩子会启动,并且无法运行,因为它所期望的某些环境变量不存在。