it-swarm-ja.com

HTTP / HTTPSを介してGitリポジトリからプルすることはできませんが、SSHを使用してプルすることはできます

Gitリポジトリを保存するために使用するgit.example.comでNginxを実行しているDebianがあります。

git clone [email protected]/git/my_repoを実行すると、SSH経由でプル/プッシュ/クローンを作成できます。 (gitは、/mnt/primary_storage/gitを指すホームディレクトリ内のシンボリックリンクです)

ただし、HTTP(S)を使用してクローン/プルすると、次のエラーが発生します。

fatal: http://git.example.com/my_repo.git/info/refs not valid: is this a git repository?

実際のリポジトリのクローンを作成しているかどうかに関係なく、このエラーが発生します

Nginx構成の関連部分は次のとおりです。

server {
  listen       80;
  server_name  git.example.com;

  root /mnt/primary_storage/git;


  location ~ (/.*) {
    auth_basic "Login";
    auth_basic_user_file /mnt/primary_storage/.htpasswd;
    include       fastcgi_params;
    fastcgi_param REMOTE_USER $remote_user;
    fastcgi_param SCRIPT_FILENAME     /usr/lib/git-core/git-http-backend;
    fastcgi_param GIT_HTTP_EXPORT_ALL "";
    fastcgi_param GIT_PROJECT_ROOT    /mnt/primary_storage/git;
    fastcgi_param PATH_INFO           $1;
    fastcgi_pass localhost:9000;
  }   
}

厄介なのは、Ubuntuを搭載した別のサーバーでまったく同じセットアップを実行していて、正常に動作したことです。だから私はこれを引き起こしているのか分かりません。この1つの問題を除けば、サーバー上のすべてが正常に実行されています。

はい、StackExchangeサイトにこのような同様の質問がいくつかありますが、どれも私を助けてくれません。たとえば、一部はGithubを扱っており、最初にリポジトリを設定していませんでした。他の人はGitアドレスが間違っていました。そして他の人は私が役に立たなかったgit config --global http.proxyを実行するべきだと言いました。

また、すべてのフォルダー/ファイルのアクセス許可をトリプルチェックしました。これらはすべてNginxユーザーから読み取りおよび書き込みが可能です。

1
KNejad

このエラーメッセージは、「リポジトリが存在しません」と同じです。

使用しているURLがコマンドの[フェッチとプッシュ]の下に表示されているかどうかを確認します。

git remote show Origin

これにより、[email protected]:[REPO-NAME].gitのような結果が得られるはずです。

URLが間違っている場合は、次のコマンドで修正できます。

git remote set-url Origin [REPO-URL]
1
harrymc

HTTP(またはパッキングをサポートするその他のプロトコル)を適切にプルするには、手動でパッキングを行う必要があります。

これを行うには、リポジトリディレクトリでgit update-server-infoを実行します。

これをリポジトリのpost-update Gitフックに入れると便利な場合があるため、プッシュすると自動的に実行されます。

[email protected]:/srv/git/puppet.git/hooks$ cat post-update 
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".

exec git update-server-info
1
mtak

アクセスしようとしているgitリポジトリがHTTPSプロトコルをサポートしていることを確認しますか?

また、リポジトリ名では大文字と小文字が区別されることに注意してください。

また、リポジトリのURLがネットワークから到達可能であることを確認してください。たぶん、ポート443の問題(https)があります。

プロキシの背後にいる場合は、プロキシがgit用に正しく設定されていることを確認してください。

git config --global http.proxy

こちらの情報も参照してください:https://confluence.atlassian.com/bbkb/info-refs-not-valid-is-this -a-git-repository-313467635.html

お役に立てれば。

0
user1448914