[英]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.receivepack
( http.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.