【问题标题】:git-http-backend causing issue in pushing the code over httpgit-http-backend 导致通过 http 推送代码时出现问题
【发布时间】:2015-06-05 04:06:39
【问题描述】:

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

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

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

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

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

我们将不胜感激。

【问题讨论】:

    标签: git http backend


    【解决方案1】:

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

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

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

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


    原始答案。

    不要为每个 git repo 依赖 .htaccess/.htpasswd,最好调用 gitolite,一个在 perl (very easy to install) 中的 authorization layer,它可以基于在 Apache 完成的身份验证中,授予对 repo 的访问权限。

    请参阅“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 授予用户对 repo 的访问权限,它将调用 GIT_HTTP_BACKEND,这是 git/libexec/git-core/git-http-backend 所在的位置。

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

    【讨论】:

    • Vonc - 唯一面临的最后一个问题是我们无法将代码推送到 git,即 git-http-backend 没有被调用或有些丢失。否则每件事都会得到照顾。 gitolite 还提供了一个 Web 界面。所以这对我们来说是最重要的。
    • @Jiva gitolite 不提供网络界面,因此它应该仍然是一个有效的选项。
    • 好的,但是我们现在必须改变我们所有的实现来实现它。我们只是停留在最后一点,我们的 git-http-backend 没有被调用。
    • 推送错误时出现错误:无法访问 URL 192.168.1.2/projects/data/git/myrepo.git,返回代码 22 致命:git-http-push failed 你能帮忙吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 2011-05-01
    • 2023-03-30
    • 2018-09-30
    • 1970-01-01
    相关资源
    最近更新 更多