概要
- git-svnで少し楽になろうと思ったらOut of memoryが出てわけわかめになったという話。
- 結局git-svn、SourceTreeでは解決できず。
- smartgitを使用することでローカルにgitリポジトリが作れました。
環境
Windows 7 Professional git version 1.9.4.msysgit.2
事象
- コマンド
$ mkdir svngit $ cd svngit $ git svn init -s --prefix=svn/ https://xxx/yyy $ git svn fetch -r 50000:HEAD
- 出力
hogehoge.sql
は当然、こんなに大きなサイズではありません。
(略) A hoge/huga/piyo/hogehoge.sql Out of memory during request for 156 bytes, total sbrk() is 251326464 bytes!
解決方法
概要でも書きましたが、smartgitを使用することで解決。
↓のコメントが決め手になりました。(引用元)
単体でもすぐれたGUIクライアントなのですが、SVN連携にはgit-svnより強力な連携機構を独自実装しているのでこちらならエラーなく取り込めるかもしれません。
- smartgitのインストール、設定などは特に問題ないかと思いますが、ここが参考になりそうです。
解析(予想)
- 使用しようとしているリポジトリのファイルを全て合わせると数ギガとかなりでかい事が原因か。
- git内で使用されているperl内で発生してるっぽい。
- タスクマネージャで見ててもperlのメモリが256M位になると発生する。
- 以下のスクリプトで発生してるっぽい。
- 「$read」にファイル読んで入れてる所が原因?
C:\Program Files (x86)\git\lib\perl5\site_perl\Git\SVN.pm
- 「sbrk()」はCの関数らしい
試したこと
.git/config
の編集。- メモリの設定項目を適当に上げてみた。
[core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true hideDotFiles = dotGitOnly packedGitWindowSize = 1024m packedGitLimit = 1024m [pack] threads = 2 windowMemory = 1024m deltaCacheSize = 512m packSizeLimit = 1024m [svn-remote "svn"] url = https://xxx/yyy fetch = hoge/huga/trunk:refs/remotes/svn/trunk branches = hoge/huga/branches/*:refs/remotes/svn/* tags = hoge/huga/tags/*:refs/remotes/svn/tags/*