Gitがhttpを介してプッシュし(git-http-backendを使用)、Apacheが機能しない


11

私はgit-http-backendを使用して "smart-http"モードでgitのプッシュを必死にしようとしていました。しかし、何時間もテストとトラブルシューティングを行った後、私はまだ残っています

error: Cannot access URL http://localhost/git/hello.git/, return code 22
fatal: git-http-push failed`

Ubuntu(12.04)、Apache2(2.2.22)、Git(1.7.9.5)の最新バージョンを使用しており、インターネット上にあるさまざまなチュートリアル(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>

/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"

私は何を間違えていますか?おそらく使用しているgitやapacheのバージョンの問題ですか?

ところで:私はServerFaultとStackOverflowに関するすべてのgit http関連の質問を読みました、そして、それらのどれも私に解決策を提供しなかったので、これを重複としてマークしないでください。


私はまったく同じ問題に直面していますが、解決策はありましたか?
リシKulshreshtha

@RishiKulshreshtha:申し訳ありませんが、解決策が見つかりませんでした。代わりにGitHubに移動しました...それは、Deepikaのソリューションを試したことがないということです。誰かがそれが機能することを確認できれば、私はその答えを受け入れます。
ニルスマグネランデ

OK、Deepikaのソリューションを試しましたが、成功しませんでした。
ニルスマグネランデ

Deepikaのソリューションを試してみたところ、それでもうまくいきませんでした。
リシKulshreshtha

回答:


1

WebDAVが使用されているという事実は、CGIが適切に構成されていないことを意味すると思います。

あなたがフォローしていると言ったチュートリアルでScriptAliasディレクティブを表示するように使用してみてください。

ScriptAlias /git /usr/lib/git-core/git-http-backend

こんにちは。ScriptAliasディレクティブの使用を開始しましたが、機能しませんでした。
ニルスマグネランデ

ここで同じ問題。解決策を見つけましたか?
theV0ID 14年

@ theV0IDいいえ、解決策は見つかりませんでした。ローカルGitサーバーの代わりにGitHubを使用するようになりました。
ニルスマグネランデ14年

0

これを修正するには、2ステップを使用してApacheサーバーでWebDavを有効にする必要があります

  1. Apacheのvhostファイルで有効にします

SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER

DocumentRoot /var/www/git

<Directory /var/www/git>
        Options +ExecCGI +SymLinksIfOwnerMatch -MultiViews

        AllowOverride None
        Order allow,deny
        allow from all
        Dav On
</Directory>

  1. コマンドプロンプトでこのコマンドを実行します

    a2enmod dav_fs

  2. 次に、Apacheサーバーを再起動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.