我已经安装了Gitolite,就像在GitLab指示说,直到现在它是一切OK,回购的创造......但试图克隆或推时,它返回未找到回购 - 或者类似的东西。
但是,当我在我的远程设置为一样的完整路径git@server:22/~git/repositories/repo.git
它克隆,但是当试图推动,它抓住了一个错误:
git push origin master
ERROR: invalid repo name.
fatal: The remote end hung up unexpectedly
这里是什么地方?
该错误消息来自“ 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
,这个问题在这里描述 :
考虑git@server:repositories/reponame.git
。
克隆操作将工作-你正在使用的完整的路径,(假设默认$REPO_BASE
设置),所以外壳找到,你说这将是回购。
但是,当你推,gitolite的更新勾踢,而无法运行,因为一些环境变量,它期待的是不存在的。