質問: gitを使ってウェブサービス運用を続けていたら年月を重ねたせいかGitリポジトリが肥大化して数ギガバイトを超えるほどに成長しました。 リポジトリの内訳としてはプログラム、画像等のリソース、テキストの設定ファイル等です。 尚、コミット数は数万以上あり、ブランチも多くあるとします。 この大きくなってしまったリポジトリを毎回Cloneするのはとても時間がかかるのでどうにかしたいと考えます。 条件としては * なるべく過去の歴史を捨てずに保持したい * 画像リソースは外部に移動してもよい といった場合にどのようにアプローチを行えば素早く、軽いリポジトリにできるのでしょうか?
回答: mattnさんが git gc についてはもう既に書いてますが、--aggressive オプションをつける、または ``` git repack -a -d --depth=250 --window=250 ``` など試されましたか? 結局やっていることは、--aggressiveは計算済みdeltaの再選択、repackは普通以上の深度でのdelta再計算で、必ずしも減る訳ではないらしいですが、普段は緩く比べ、出来るだけdeltaを再利用してるので、効果があるかもしれません。ちなみに二つ目のはLinusがgccのメーリングリストで言ってたやつで、overnightとか言ってるのでかなり時間がかかると思われますが、--aggressiveと違いちゃんと計算し直すのでやるならこっちだとか。-fオプションを足すと、古いdeltaを再利用しないようにも出来るのでこれもつけた方がいいらしいです。