4

Ubuntuを実行している新しいデスクトップがあります。以前のコンピューターから新しいコンピューターに大量のgitリポジトリを同期しました。これらすべてで問題なく押したり引いたりできます。ただし、git clone新しいリポジトリ(gitoliteとgitflowを使用)でを実行すると、git pushハングします。rsyncedプロジェクトを正常にプッシュできたとしても、gitolitegit cloneからプロジェクトを実行することは成功しますが、プッシュできないプロジェクトになります。ファイルは.git/config同一です。

ぼくのコンピュータ:

$ uname -a
Linux ovid-desktop 3.0.0-16-generic #29-Ubuntu SMP Tue Feb 14 12:48:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

Gitプッシュ出力(またはstrace出力を読み取る):

GIT_TRACE=1 git push -vv origin users/ovid
trace: built-in: git 'push' '-vv' 'origin' 'users/ovid'
Pushing to gitolite:libs/perl/ThirdParty-Sync
trace: run_command: 'ssh' 'gitolite' 'git-receive-pack '\''libs/perl/ThirdParty-Sync'\'''
trace: run_command: 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
trace: exec: 'git' 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
trace: built-in: git 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
Counting objects: 53, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (21/21), done.
Writing objects: 100% (28/28), 2.59 KiB, done.
Total 28 (delta 13), reused 0 (delta 0)

そして、それはTotal 28 (delta...ラインの後に永遠にぶら下がっています。

同じプロジェクトから、ただしrsyncedディレクトリからのプッシュが成功すると、次のようになります。

To gitolite:libs/perl/ThirdParty-Sync                                                                                                                 
   8c056a5..0321b35  users/ovid -> users/ovid

私が考えることができる唯一の症状(赤いニシン?)はこれです:

$ ssh gitolite
PTY allocation request failed on channel 0

それを機能させるには、-Tを追加する必要があります。

繰り返しますが、rsyncedThirdPart-Syncディレクトリにいる場合は正常にプッシュできます。失敗するのは、gitoliteサーバーからそのプロジェクトのクローンを再作成しようとした場合のみです。

更新:それは永遠にハングしないことが判明しました。しばらくすると、次のTotal 28行が表示されます。

Write failed: Broken pipe
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly

Update Running straceは、何が起こっているのかを教えてくれません。レポではプッシュできません:

wait4(4122, Counting objects: 53, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (18/18), done.
Writing objects: 100% (28/28), 11.62 KiB, done.
    Total 28 (delta 3), reused 28 (delta 3)
[{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 4122
--- SIGCHLD (Child exited) @ 0 (0) ---
read(3, 

プッシュできるレポでstraceを実行すると、ほぼ同じ場所からこれが得られます。

write(9, "^0321b3501969dead78a83a0d3234724"..., 42) = 42
write(9, "b9cbbc6cc37100baf706746205e7a4c4"..., 41) = 41
close(9)                                = 0
wait4(4632, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 4632
--- SIGCHLD (Child exited) @ 0 (0) ---
read(6, "000e", 4)                      = 4
read(6, "unpack ok\n", 10)              = 10
read(6, "001d", 4)                      = 4
read(6, "ok refs/heads/users/ovid\n", 25) = 25
read(6, "0000", 4)                      = 4
futex(0x7f8a49c619d0, FUTEX_WAIT, 4631, NULL) = 0
4

4 に答える 4

3

OPOvidはコメントで述べています

VonC:地獄の後で、私はdsa sshキーからsshキーに切り替えrsaすべてが機能し始めました。

Gitoliteのドキュメント「gitoliteがsshを使用する方法」では、 rsaキーについてのみ言及しています。
したがって、その特定の種類のキーを使い続けるのは安全のようです。

チェックユーティリティ(gitoiteにパッケージ化)sshkeys-lintは、rsa(またはdss)のみを解析します

于 2012-03-14T11:41:51.520 に答える
1

リポジトリをGitoliteにプッシュできますか?それとも、rsyncしなかったものだけですか?

〜/ .gitconfigはどうですか?

私があなたの状況にあったら、私は2つのことを試みます:

  • straceを使用して、git-push/sshが待機しているものを特定します。

  • 〜/ .ssh/configのControlMaster/ControlPath SSHを使用して共有SSH接続を作成し、ssh-Tgitoliteの実行後にプッシュしてみてください。

于 2012-03-14T09:37:40.753 に答える
1

次の手順を試してください。

   $git pull
   $git push origin branch
于 2012-03-14T10:51:05.333 に答える
0

新しいリポジトリの構成を比較してみてください。デフォルトはgitバージョン間で変わります。

于 2012-03-14T11:22:07.163 に答える