繁体   English   中英

git-http-backend导致在通过HTTP推送代码时出现问题

[英]git-http-backend causing issue in pushing the code over http

我正在服务器上创建git存储库。 我的要求是我必须在服务器上创建多个git存储库,并且必须使用用户名和密码来保护它们。

由于创建了多个git存储库,因此我将.htpasswd和.htaceess放入每个git存储库文件夹中以保护它们。

下面是我正在做的整个流程。

a)使用git -bare创建git存储库。
b)在该文件夹中创建了.htpasswd和.htaccess进行身份验证。c)现在,我可以使用用户名和密码在任何位置克隆该仓库。

但是,当我尝试从克隆的存储库中推送时,抛出一个错误:错误:无法访问URL http://192.168.1.2/projects/gitcreation/gitrepos/6/project6/ ,返回代码22致命:git-http-push失败了

任何帮助将不胜感激。

我最初建议删除对gitolite的推/拉调用(请参见下文),但OP希望保留直接调用。

Jiva怀疑git-http-backend没有在push上调用(这确实不能正常工作,例如检查此配置 配置

另一个检查是 http.receivepackhttp.receivepack )的http.receivepack

如该线程所示 ,该问题可能是一个凭据(错误的密码,或其中包含特殊字符的密码,错误地解释了该密码)


原始答案。

最好不要调用gitolite (perl中的授权层非常容易安装 )),它可以基于Apache进行的身份验证来授予对存储库的访问权限,而不是为每个git存储库都依赖.htaccess / .htpasswd

有关更多信息,请参见“ 什么是乙醇钠 ”。

例如,请参阅我的httd.conf (忽略@xxx@ ,它们是模板占位符,稍后将由实际值替换)

<VirtualHost @FQN@:@PORT_HTTP_HGIT@>
    ServerName @FQN@
    ServerAlias @HOSTNAME@
    SetEnv GIT_PROJECT_ROOT @H@/repositories
    SetEnv GIT_HTTP_EXPORT_ALL
    SetEnv GITOLITE_HTTP_HOME @H@
    ScriptAlias /hgit/ @H@/sbin/gitolite-shell/
    SetEnv GIT_HTTP_BACKEND "@H@/usr/local/apps/git/libexec/git-core/git-http-backend"
    <Location /hgit>

在这里,对于任何/hgit网址(适合您的/projects ),都会调用/home/git/sbin/gitolite-shell
如果gitolite授予用户访问存储库的权限,它将调用GIT_HTTP_BACKEND ,这是git/libexec/git-core/git-http-backend所在的位置。

Gitolite允许您为每个仓库(甚至每个分支或每个文件)设置许多访问规则

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM