24

他の「クローンで git がハングアップする」という質問をいくつか読みましたが、私の環境や詳細と一致するものはありません。cygwin でビルドされた git (msys git はオプションではありません) を使用して、SSH 経由で Linux ホストからレポを複製しています。

git clone user@host:repo

他のプラットフォームで同じホストに対してテストしたところ、問題なく動作しましたが、この Windows マシンではクローンが無期限にハングします。設定GIT_TRACE=1しましたが、問題は次のコマンドにあるようです:

'ssh' 'user@host' 'git-upload-pack '\''repo'\'''

私の SSH キーは正しく設定されています: 正常に動作しssh user@hostます。コマンドを実行すると、次のような一連の出力が得られます。

...
003dbbd3db63763922ad75bbeefa3811dce001576851 refs/tags/start
0000

その後、20 分以上ハングします。これは、停止するまでに待った最長の時間です。

サーバーには OpenSSH 5.9p1 を使用する Git 1.7.11.7 があり、クライアントには OpenSSH 6.1p1 を使用する Git 1.7.9 があります。

それは git-upload-pack 出力の終わりになるはずですか? これは Git または私の構成のバグですか?

4

6 に答える 6

2

今後の git1.8.5 (2013 年第 4 四半期) では、スマート http プロトコルについて詳しく説明します。Shawn O. Pearceによるコミット 4c6fffe2ae3642fa4576c704e2eb443de1d0f8a1
を 参照してください。

その詳細なドキュメントを使用して、git クライアントとサーバーの間で行われる Web リクエストを監視し、それらが以下に記載されている内容に準拠しているかどうかを確認することが考えられます。

これは、サービスが「ハング」している場所を特定するのに役立ちます。


ファイルは次のDocumentation/technical/http-protocol.txtように主張しています。

  • スマート サービス git-upload-pack

    • クライアントは、最初に ' ' を使用して ref 検出を実行する必要があり$GIT_URL/info/refs?service=git-upload-packます。

      C: POST $GIT_URL/git-upload-pack HTTP/1.0
      S: 200 OK
      S: Content-Type: application/x-git-upload-pack-result
      S: Cache-Control: no-cache
      S:
      S: ....ACK %s, continue
      S: ....NAK
      
    • クライアントは、キャッシュされた応答を再利用または再検証してはなりません。

    • サーバーは、応答のキャッシュを防ぐために十分な Cache-Control ヘッダーを含める必要があります。
    • サーバーは、ここで定義されたすべての機能をサポートする必要があります。
    • クライアントは、リクエスト本文で少なくとも 1 つの「want」コマンドを送信する必要があります。
    • クライアントは、サーバーが機能「allow-tip-sha1-in-want」をアドバタイズしない限り、ref ディスカバリーによって取得された応答に表示されなかった「want」コマンドの ID を参照してはなりません (MUST NOT)。
  • ネゴシエーション」アルゴリズム

    (c) Send one $GIT_URL/git-upload-pack request:
    C: 0032want <WANT #1>...............................
    
于 2013-11-07T08:17:03.917 に答える
1

tmux でウィンドウ タイトルを設定するために、このようなジャズを ssh 構成に追加した後、同じ問題が発生しました。

Host *
PermitLocalCommand yes
LocalCommand if [[ $TERM == screen* ]]; then printf "\033k%h\033\\"; fi

それを取り除くと、私のgitが修正されました。

于 2013-12-17T06:04:40.830 に答える
1

古い PuTTy もこれを引き起こす可能性があります。システムが として使用しplink.exeている可能性がありますGIT_SSH

これが問題でないことを確認するために、 http: //www.chiark.greenend.org.uk/~sgtatham/putty/download.html から最新の開発ビルドをインストールできます。

于 2016-08-22T17:23:13.610 に答える