Edited at

GitでCloneしようとするとearly EOFエラーが発生した

More than 3 years have passed since last update.

Gitで自宅サーバに置いていたレポジトリをWindows PCへCloneしようとしていた時の事


事象

以下のようなエラーが発生した

fatal: early EOF

fatal: The remote end hung up unexpectedly
fatal: index-pack failed


原因

調べていくと原因はレポジトリがでかすぎることっぽい。

解決策は大体以下3つなのかなと思った。

1.gitのhttp通信制限を増やす

2.サーバー側でgc&repackする

3.そもそも一度にcloneする量を減らす

事象の原因によって1~3のどれで直るかは違う模様。

筆者は1を試したがダメで、3を試してうまくいった。

各解決策がどういった詳細な原因と結びついているのか、については調べていない。

1は1つのファイルに対する制限で、3は全体の容量を減らしてるから違うとかそんな感じなのかなと思っている。

正直この問題を深く追いかけるつもりはない。


解決策


以下の設定をクライアント側に追加する

git config --global http.postBuffer 524288000


2

以下のコマンドをサーバ側のレポジトリで打つ

git gc

git repack -a -f -d --window=250 --depth=250


3

以下のコマンドでclone&Fetchする。

git clone --depth 1 <my_repo_URI>

git fetch --unshallow

最初のfetchからいきなりunshallowしなくて、以下のように徐々にdepth増やすのでも良い。

git fetch --depth 2

git fetch --depth 3
git fetch --depth 4


参考サイト

どうでもいいんだけど3のサイトの人「(internet speed is slow in our country; working on high speed internet is my dream ;-)」のカッコ書きが泣ける。


1

http://every-studio.com/wordpress/?p=18


2

http://urashita.com/archives/2293


3

https://cithukyaw.wordpress.com/2014/09/08/fix-for-the-fatal-error-early-eof-on-git-clone/