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は全体の容量を減らしてるから違うとかそんな感じなのかなと思っている。
正直この問題を深く追いかけるつもりはない。
解決策
1
以下の設定をクライアント側に追加する
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
2
3