Nil*_*nde 11 ubuntu http git apache-2.2
我一直在拼命尝试使用 git-http-backend 通过“smart-http”模式推动 git 工作。然而,经过数小时的测试和故障排除后,我仍然
error: Cannot access URL http://localhost/git/hello.git/, return code 22
fatal: git-http-push failed`
Run Code Online (Sandbox Code Playgroud)
我使用的是最新版本的 Ubuntu (12.04)、Apache2 (2.2.22) 和 Git (1.7.9.5) 并遵循了 Internet 上的不同教程,例如http://www.parallelsymmetry.com/howto/git .JSP。
我的 VHost 文件目前看起来像这样:
<VirtualHost *:80>
SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
DocumentRoot /var/www/git
ScriptAliasMatch \
"(?x)^/(.*?)\.git/(HEAD | \
info/refs | \
objects/info/[^/]+ | \
git-(upload|receive)-pack)$" \
/usr/lib/git-core/git-http-backend/$1/$2
<Directory /var/www/git>
Options +ExecCGI +SymLinksIfOwnerMatch -MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我已将/var/www/git文件夹的所有权更改root.www-data为我的测试存储库,并通过执行git config http.receivepack true. 我也尝试过使用经过身份验证的用户,但结果相同。
存储库是使用以下方法创建的:
sudo git init --bare --shared [repo-name]
在查看 apache2 access.log 时,在我看来,WebDAV 正在尝试使用,并且 git-http-backend 从未被触发:
127.0.0.1 - - [20/May/2012:23:04:53 +0200] "GET /git/hello.git/info/refs?service=git-receive-pack HTTP/1.1" 200 207 "-" "git/1.7.9.5"
127.0.0.1 - - [20/May/2012:23:04:53 +0200] "GET /git/hello.git/HEAD HTTP/1.1" 200 232 "-" "git/1.7.9.5"
127.0.0.1 - - [20/May/2012:23:04:53 +0200] "PROPFIND /git/hello.git/ HTTP/1.1" 405 563 "-" "git/1.7.9.5"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我正在使用的 git 和/或 apache 版本是否有问题?
顺便说一句:我已经阅读了关于 ServerFault 和 StackOverflow 的所有与 git http 相关的问题,但他们都没有为我提供解决方案,所以请不要将其标记为重复。
我认为 WebDAV 的使用意味着您的 CGI 内容配置不正确。
尝试按照您所说的教程中显示的方式使用 ScriptAlias 指令。
ScriptAlias /git /usr/lib/git-core/git-http-backend
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6490 次 |
| 最近记录: |