1

我已经连续两天这样做了,我放弃了自己寻找解决方案。我正在尝试在服务器上设置 Redmine - 那部分进展顺利。我也在尝试安装一个 git 存储库,但是虽然我已经能够通过 SSH 完美地克隆和拉取,但我在通过 HTTP 做同样的事情时遇到了困难。

首先,这是详细的 git push 错误:

==================================================== ===============

$ GIT_CURL_VERBOSE=1 git push http://192.168.0.13/gitweb/Project master * 在_netrc文件中找不到主机192.168.0.13;使用默认值 * 即将 connect() 到 192.168.0.13 端口 80 (#0) * 正在尝试 192.168.0.13... * 0x20ab4f0 在发送管头!* 连接到 192.168.0.13 (192.168.0.13) 端口 80 (#0)

GET /gitweb/Project/info/refs?service=git-receive-pack HTTP/1.1 User-Agent: git/1.7.4.3282.g844cb Host: 192.168.0.13 Accept: / Pragma: no-cache

  • 请求的 URL 返回错误:403
  • 过期清除
  • 关闭连接 #0
  • 在 _netrc 文件中找不到主机 192.168.0.13;使用默认值
  • 即将 connect() 到 192.168.0.13 端口 80 (#0)
  • 尝试 192.168.0.13... * 0x20ab4f0 在发送管头!
  • 连接到 192.168.0.13 (192.168.0.13) 端口 80 (#0)

    GET /gitweb/Project/info/refs HTTP/1.1 用户代理:git/1.7.4.3282.g844cb 主机:192.168.0.13 接受:/ Pragma:无缓存

  • 请求的 URL 返回错误:403

  • 关闭连接 #0 错误:请求的 URL 返回错误:403 访问http://192.168.0.13 /gitweb/Project/info/refs

致命:HTTP 请求失败

==================================================== ===============

因此,尽管我暂时将存储库文件夹更改为 777,但显然存在一些错误配置的权限。

我想你也会对 apache 的配置感兴趣:

==================================================== ===============

ServerAdmin webmaster@localhost

[...snip...]

PerlLoadModule Apache::Redmine
SetEnv GIT_PROJECT_ROOT /var/cache/git/
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/

<Location "/git/">
    DAV on
    AuthType Basic
    AuthName "Git Repository"
    Require valid-user

    PerlAccessHandler Apache::Authn::Redmine::access_handler
    PerlAuthenHandler Apache::Authn::Redmine::authen_handler

    RedmineDSN "DBI:mysql:database=redmine;host=localhost"
    RedmineDbUser "redmine" 
    RedmineDbPass "XXXXXXX" 
    RedmineGitSmartHttp yes
</Location>

Alias /gitweb/ "/var/cache/git/public/"
<Location "/gitweb/">
    Order deny,allow
    Deny from all
    <Limit GET PROPFIND OPTIONS REPORT>
       Options Indexes FollowSymLinks MultiViews
       Allow from 127.0.0.1
       Allow from localhost
    </Limit>
</Location>

==================================================== ===============

所以如果有人好心给我一个关于做什么的提示,我真的很感激。提前致谢!

4

2 回答 2

2

好的,问题解决了 :) 这是要遵循的教程:

http://www.redmine.org/projects/redmine/wiki/HowTo_configure_Redmine_for_advanced_git_integration

就我而言,最终条目如下所示:

PerlLoadModule Apache::Redmine

Alias /git/ "/var/cache/git/public/"
<Directory "/git/">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<Location "/git/">
    DAV on
    AuthType Basic
    AuthName "My Git Repository"
    Require valid-user

    PerlAccessHandler Apache::Authn::Redmine::access_handler
    PerlAuthenHandler Apache::Authn::Redmine::authen_handler

    RedmineDSN "DBI:mysql:database=redmine;host=localhost"
    RedmineDbUser "redmine" 
    RedmineDbPass "XXXXXXX" 
    RedmineGitSmartHttp yes
</Location>
于 2011-02-22T19:15:02.553 回答
0

您似乎没有使用任何身份验证。默认情况下,git 只允许在使用身份验证时通过 smart-http 推送。

您应该能够将用户名添加到您正在使用的 url,它会提示您输入密码,或者您可以在 _netrc 文件中设置用户名和密码。

于 2011-02-22T17:52:31.000 回答