我已经安装了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
它有什么用?
答案 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 = 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的更新钩子会启动,并且无法运行,因为它所期望的某些环境变量不存在。