背景
現場でsvnからgitへの移行を行ったのだが、約6日もかかってしまった・・・
リビジョンも1400程度だったので、自分の感覚だとせいぜい半日ぐらいだと考えていた。
とにかく遅かったのはgit svn fetch。
svnの1つのcommitをfetchするのになにやら数分かかっているような状態。
解決策
なにか方法は無いかと探したところ、「git svn clone」「git svn fetch」のオプションに「--log-window-size=」というのがあり、
こちらに値を設定して実行すると、速くなるという情報を見つけた。
公式:https://git-scm.com/docs/git-svn#Documentation/git-svn.txt---log-window-sizeltngt
日本語訳
Subversionの履歴をスキャンするときに、リクエストごとに個のログエントリを取得します。デフォルトは100です。非常に大きなSubversionリポジトリの場合、クローン / フェッチを適切な時間内に完了させるには、より大きな値が必要になることがあります。ただし、値が大きすぎると、メモリ使用量が増え、タイムアウトが発生する可能性があります。
ということでメモリ使用量を鑑みて調整してあげれば良いと理解するが、
適当に10000ぐらいにして実行。
結果
svnのcommit数が1400程度のうち、600程度が4日経過して終わったのが、
約800はオプション付与の実行後1晩で終わった・・・
「--log-window-size」を使用している日本語のページはあまり発見できなかったので、あまり使用されていないのか?
正直、オプションの仕様を理解しきれていないが、無事移行出来たのでこのページが誰かのためになると幸い。
参考:http://blog.leneghan.com/2012/03/experiences-of-using-git-svn-on-large.html