2008-10-14
Subversion Windows上で大量ファイルを扱う際のフリーズ回避法
Windows上でTortoiseSVNを使っていて、インポートやコミットなどで大量のファイルを扱った際に、PCがフリーズすることが何度かありました。どうしたもんかと思って先輩に聞いてみると、「私もなるけど、まぁちょっとずつコミットすればいいんじゃない」とのこと。んー、でもそれではやっぱり非効率なので、何かいい方法がないものか調べてみました。
みけメモ: TortoiseSVNがマルチコアCPU上で動かすと止まる??? http://mikememo.cocolog-nifty.com/blog/2008/03/tortoisesvnga.html low level life - Subversion (※下のほうの記事)*1 http://www.lowlevellife.com/?s=Subversion
2番目の記事の、
ってのがもっとも手短な解決方法のように思えましたので、早速実践。
svnコマンドの確認
コマンドプロンプトを起動し、「svn help」など打ってみてsvnコマンドが使えるか確かめます。
C:\>svn help 'svn' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
こんなのが出た場合は、以下サイトからWindows用の「CollabNet Subversion」をダウンロード。
- subversion.tigris.org
- http://subversion.tigris.org/
インストール後、実行ファイルを環境変数のPathに設定します*2。
C:\>svn help usage: svn <subcommand> [options] [args] Subversion command-line client, version 1.5.2. ...
こんな感じで出れば大丈夫。
コマンド実行例
インポートコマンドを実行してみた例です。
C:\test>svn import http://192.168.0.*/svn/test svn: Could not use external editor to fetch log message; consider setting the $S VN_EDITOR environment variable or using the --message (-m) or --file (-F) option s svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and no 'editor-cmd' run-time configuration option was found
エラーになりました。ログメッセージを指定しないとだめなようです。
C:\test>svn import http://192.168.0.*/svn/test -m "import test." Adding test.txt Committed revision 1.
引数「-m」で指定してやればOK。
実際に大量のファイル*3をインポートしてみたところ、別作業を行いながらでもフリーズすることなく一発で済みました。
補足
↑の実行例ででエラーになったのは、厳密には、「ログメッセージが指定されてないので、メッセージ入力用の外部エディタを開こうとしたけど開けなかった」というものみたいです。
「C:\Documents and Settings\[username]\Application Data\Subversion\config」をエディタで開き、helperのセクション(27行目くらい)を以下のように変更します。
# editor-cmd = %SystemRoot%\system32\notepad.exe
↓
editor-cmd = %SystemRoot%\system32\notepad.exe
これでメッセージなしの場合であっても、メモ帳が開いて処理が続くようになります。
参考
Windows環境にCUIのSubversion(svn)をインストールするメモ - Knowledge Database IT http://it.kndb.jp/entry/show/id/1084
関連記事:
- 74 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4SKPB_jaJP206JP206&q=tortoisesvn+freeze
- 63 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&q=PHP 大量のファイル 書き出し とまる&btnG=?%A
- 47 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http://d.hatena.ne.jp/deeeki/20081014&rct=j&q=svnは内部コマンド&ei=MZC3TZ_BM4SqvQP6l7SiAw&usg=AFQjCNEfOX3ZgA513MSpPEucXpnshTYq9g
- 39 http://www.google.co.jp/search?q='svn'+は、内部コマンドまたは外部コマンド&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:offic
- 35 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCQQFjAA&url=http://d.hatena.ne.jp/deeeki/20081014&ei=i8U0T-fRGsmNmQWhw9mBAg&usg=AFQjCNEfOX3ZgA513MSpPEucXpnshTYq9g&sig2=lbRM2nLyNfWAxQ4bkYqycA
- 27 http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=SVN+フリーズ&num=50
- 24 http://www.google.co.jp/search?hl=ja&lr=lang_ja&tbs=lr:lang_1ja&q='svn'+は、内部コマンドまたは外部コマンド、&aq=f&aqi=g1&aq
- 23 http://www.google.co.jp/search?hl=ja&q='svn'+は、内部コマンドまたは外部コマンド、&btnG=Google+検索&lr=&aq=f&oq=
- 21 http://www.google.co.jp/search?hl=ja&q=SVN+フリーズ&lr=&aq=f&oq=
- 20 http://search.yahoo.co.jp/search?p='svn'+は、内部コマンドまたは外部コマンド、&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-



