gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:42:03 26 4
gpt4 key购买 nike

我正在我的服务器上创建 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 的推/pull 调用(见下文),但 OP 希望保留直接调用。

Jiva怀疑 git-http-backend 未在推送时调用(wouldn't work well indeed)检查 for instance this configthis one .

另一项检查是 .gitconfig of the bare repo (http.receivepack)

因为这个thread illustrates ,问题可能是凭据问题(密码不正确,或密码中包含特殊字符,解释不正确)


原始答案。

与其依赖于 .htaccess/.htpasswd 每个 git 仓库,最好调用 gitolite ,一个authorization layer在 perl ( very easy to install ) 中,它可以根据 Apache 完成的身份验证授予对存储库的访问权限。

有关更多信息,请参阅“What is gitolite”。

查看我的 httd.conf for example (忽略@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 url(/projects 为你),/home/git/sbin/gitolite-shell 被调用.
如果 gitolite 授予用户对存储库的访问权限,它将调用 GIT_HTTP_BACKEND,这是 git/libexec/git-core/git-http-backend 所在的位置。

Gitolite 允许您设置 many access rules每个 repo,甚至每个分支或每个文件!

关于git-http-backend 导致通过 http 推送代码时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30658182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com