Gitでclone中
fatal: early EOF, The remote end hung up unexpectedly, index-pack failed
というエラーが発生したので原因を調査しました。
目次
early EOF, The remote end hung up unexpectedly, index-pack failed
WindowsのGitクライアント
Git SCMをコマンドラインで使っています。
Gitで作ったリポジトリをcloneしている途中でエラーが発生しました。
1 2 3 4 5 6 7 8 9 |
# git clone ssh://xxx@aa.bb.cc.dd/var/lib/git/repository.git Cloning into 'repository.git'... xxx@aa.bb.cc.dd's password: remote: Counting objects: 36758, done remote: Compressing objects: 100% (18032/18032), done Write failed: Connection reset by peer10.23 MiB | 2.14 MiB/s fatal: early EOF fatal: The remote end hung up unexpectedly fatal: index-pack failed |
何度やっても同じエラーが発生します。
TortoiseGitを使っても Network error: Software caused connection abort
Git SCMがよくないのかなと思って、TortoiseGitをインストールして
TortoiseGitで試してみました。
remote: Counting objects: 36990, done.
Write failed: Connection reset by peer
fatal: early EOF
remote: Compressing objects: 100% (14813/14813), done
fatal: The remote end hung up unexpectedly.
fatal: index-pack failed
git did not exit cleanly (exit code 128)
画面の通り、カメがコケた感じです。
何度もやってみて感じたことは、
remote: Compressing objects: 100% done
の後で
Receiving objects: 9%(5404/59493), 46.60 MiB | 5.97 MiB/s
と表示されて、データがサーバーから転送されるのですが、データ転送途中でsshが切断されているような印象です。
sshのクライアントを変更
これは、TortoiseGitの設定画面です。
Networkのところで、SSH clientとして、デフォルトでは、以下のようになっています。
C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
sshの切断が原因と仮定するなら、いろいろ試してみようということで、sshのクライアントを変更してみました。
C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
(TortoiseGit付属のデフォルトのsshクライアント)
C:\Program Files\TortoiseGit\bin\TortoisePlink.exe
(TortoiseGit付属で、互換性保持のためのインストールされる古いsshクライアント)
C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe
(TortoiseSVN付属のsshクライアント)
C:\Program Files (x86)\Git\bin\ssh.exe
(Git SCM付属のsshクライアント)
結果は。。。
すべてNGでした。
サーバーでgit gc、git repackで解決
解決策がよくわからず調べてみたところ、とりあえず、
サーバー側でGC(ガーベッジコレクション)してrepackせよ
と、書いてありました。
納得しないけれど他に解決策がないのでサーバー側でgcしてみました。
1 2 |
# git gc # git repack -a -f -d --window=250 --depth=250 |
時間かかりましたが、リポジトリが超絶に小さくなりました。
そして、さきほどまで何度やっても失敗していた
git cloneを実行すると。。。。。。。
無事にclone出来ました。
Subversionではリポジトリの肥大化に苦労していましたが、さすがはGit。
素晴らしい出来です。
調べる限り、git、は時々自動でgcを行うようですが、
注意点として、サイズによっては時間がかかることと
「Out of memory」することがあるようです。
Gitについてのおすすめの本
↓Gitについてのおすすめの本はコチラ
コメント