4

私の ubuntu ラップトップでは、rev-list コマンドに到達すると git pull がフリーズします。以下の出力を参照してください。

GIT_TRACE=1 GIT_CURL_VERBOSE=1 git pull --verbose
trace: exec: 'git-pull' '--verbose'
trace: run_command: 'git-pull' '--verbose'
trace: built-in: git 'rev-parse' '--git-dir'
trace: built-in: git 'rev-parse' '--is-bare-repository'
trace: built-in: git 'rev-parse' '--show-toplevel'
trace: built-in: git 'ls-files' '-u'
trace: built-in: git 'symbolic-ref' '-q' 'HEAD'
trace: built-in: git 'config' '--bool' 'branch.upgrade-to-rails3.rebase'
trace: built-in: git 'config' '--bool' 'pull.rebase'
trace: built-in: git 'rev-parse' '-q' '--verify' 'HEAD'
trace: built-in: git 'fetch' '-v' '--update-head-ok'
trace: run_command: 'ssh' 'my_repo@mydomain.com' 'git-upload-pack '\''/home/mana/git/chc.git'\'''
trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'

まったく同じネットワーク上の他のコンピューター (windows と mac) は、同じリポジトリ (プライベートサーバー上にある) からプルできます。次に、ラップトップを別のネットワークに接続しましたが、正常に動作しました!

私が試したこと:

  • eth0 の MTU を 1492 に設定します (一部の人々にとっては、デフォルトの 1500 が問題を引き起こしていることがわかりました)。
  • サーバーに正常にsshできることを確認しています。
  • ハングした sshd プロセスを以前のハング試行からクリアしています。
  • リモートサーバー上の git gc

それで、1つのネットワークのルーターで、私の特定のバージョンのubuntuと組み合わせて、これを引き起こしている可能性があります.どうすればデバッグできますか?

4

2 に答える 2

2

ssh で何か疑わしい場合は、スクリプト my-ssh を作成してみてください:

#!/bin/sh

ssh -v $@

それから

env GIT_SSH='./my-ssh' git pull

そうすれば、プロセスがハングしている ssh の場所を特定できます。

(これはコメントのはずですが、コードをフォーマットできませんでした!)

于 2013-09-26T18:22:06.523 に答える
1

私のMacでも同様の問題がありました.sshの特定のgitコマンドは機能し、他のコマンドは応答なしでターミナルでハングしているように見えました.

git remote -v show origin  -- would hang
git push origin            -- would work

Swithing router, 私の電話をワイヤレスアクセスポイントとして使用することで、両方のコマンドが機能しました...

解決:

  1. 存在しない場合は、ユーザーディレクトリにファイルを作成します(私のファイルは存在しませんでした)

    /Users/[your_user]/.ssh/config
    
  2. それに入る:

    Host *
      IPQoS 0x00
    
  3. ssh プロセスの再起動が必要かどうかはわかりませんが、必要ないと思います。

なんで?

ルーターのサービス品質のデフォルト設定。http://forthescience.org/blog/tag/ssh/で解決策と説明を見つけました

于 2014-03-10T10:15:02.930 に答える