3

我知道互联网上有一些与此主题相关的问题,但在挖掘出来后我仍然无法解决问题。

在服务器端,我有一个存储库位于:/opt/gitrepo/kindtest.git,在 /etc/apache2/conf.d/git 中,我写道:

Alias /gitrepo /opt/gitrepo
SetEnv GIT_PROJECT_ROOT /opt/gitrepo/
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
ScriptAliasMatch \
    "(?x)^/gitrepo/(.*/(HEAD | \
                    info/refs | \
                    objects/(info/[^/]+ | \
                             [0-9a-f]{2}/[0-9a-f]{38} | \
                             pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
                    git-(upload|receive)-pack))$" \
    "/usr/lib/git-core/git-http-backend/$1"
<Location /gitrepo>
    Options +Indexes +FollowSymLinks +ExecCGI
    #AuthType Basic
    #AuthName "git repository"
    #AuthUserFile /var/git/.htpasswd
</Location>

重新启动 apache 后,我可以通过 http:///gitrepo/ 在浏览器中查看我的 git 存储库。但是,当我尝试使用 eclipse 对 http:///gitrepo/kindtest.git 进行 http 推送时,我总是收到一条错误消息,提示远程不支持智能 http 推送。

额外信息:我还通过 /etc/apache2/conf.d/gitweb 启用了 gitweb:

Alias /gitweb /usr/share/gitweb
<Directory /usr/share/gitweb>
    Options FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi

    AuthType Basic
    AuthName "Gitweb"
    AuthUserFile /home/.htpasswd
    Require valid-user
</Directory>

服务器端:git 版本 1.7.9.5,在 kindtest.git/config 中:

[core] 
    repositoryformatversion = 0
    filemode = true
    bare = true
[http] 
    getanyfile = true
    uploadpack = true
    receivepack = true

客户端:使用 egit 进行 eclipse

有什么我错过的吗?

4

1 回答 1

2

我终于想通了,是 git-http-backend 没有运行,所以智能 http 总是被禁用。我删除了与第二个 ScriptAlias 重叠的“Alias /gitrepo /opt/gitrepo”行。现在我可以使用 egit 将源推送到远程服务器。

于 2013-05-01T12:05:40.110 回答