CVS2SVN その2
2006.03.18 Saturday 21:21
CVS2SVNを使って実際に変換してみようとしたが,細かいことがいろいろと引っかかってなかなか進まなかったが,丸一日以上欠けて何とか完成に持って行けそうだ.
cvs2svnは公開版1.3.0ではなくリポジトリの最新を使うべし.新オプション--auto-propsと10倍以上の高速化の恩恵が受けられる.
cygwinのsvnは変なので,windows nativeなツールを使った方がいい.
ファイルにmimetype=text/plain;charset=SHIFT_JISとセミコロンを含む値を設定するためにはcvs2svnの改造が必要.
abstract
cvs2svnは公開版1.3.0ではなくリポジトリの最新を使うべし.新オプション--auto-propsと10倍以上の高速化の恩恵が受けられる.
cygwinのsvnは変なので,windows nativeなツールを使った方がいい.
ファイルにmimetype=text/plain;charset=SHIFT_JISとセミコロンを含む値を設定するためにはcvs2svnの改造が必要.
cygwinではまる
最初はインストールの面倒くささを嫌ってcygwinでやろうとした.python,sort, rcsがインストール済みであるのがその理由だ.日本語で書かれたlogを扱うためにJapaneseCodecのインストールを
python setup.py install
で行ってから実行.一見うまくできたように見える.しかし色々調べるとcygwin版のSVNはどうも動きがおかしいらしいと判明.vs2svnがはき出したdumpファイルを見てみると何故か全部にexecutable属性が付いている.
以前のメモを元に,WinCVSごった煮版に入っているco.exeとGnuWin32のCoreUtilに入っているsort.exe (dependencyファイル:libiconv2.dll, libintl3.dllも必要)を同じディレクトリに入れてやってみると,こちらは変なexecutable属性が付かない.てなわけでcygwinはやめることにした
オプション
CVSではタグ名にピリオドが使えない関係で番号をアンダーバーで区切っていたが,この際なので--symbol-transformを使って変換.
意味のないタグは--excludeで除外.その際symbol-transformの対象になるラベルは変換後のパターンに対して除外設定が必要.
Verbose設定
-vを付けると途中経過が表示されるようになる.リポジトリが大きいと1つのリビジョンだけでも長時間黙りこくってよくわからないので-vを付けることにする.また後から結果を確認するためにcoreutilに入っていたteeを使ってログをファイルに落としておく
python cvs2svn オプションs | tee aaa.log
propertyとcharset
ViewVCでは文書にUTF-8以外の文字コードが使われていてログが日本語だと,ページとしてはログに合わせてUTF-8になるので肝心のファイルの中身が文字化けする.
Tracではmime-typesにcharsetを設定しておくとUTF-8に変換するらしいので,そのうちViewVCも対応してくれるだろうと期待して予め変換時に設定することにした.
--auto-propsを使って実施しようとしたが,リリース版にはまだ入っていないオプションのためSVNから最新版を取得.しかしトライするも全体を""で囲んでもセミコロンをプロパティの一部と認識してくれない.
ソースコードを確認したら単純にセミコロンで分離しているだけで,全然細工していない.しょうがないのでその部分の区切りをセミコロン2つに変更して,configファイルも同様に変更する.
def _add_pattern(self, pattern, value):
props = value.split(';;')
実行
いろいろ設定していよいよ実行.最終的に使ったオプションは以下の通り.
-v --dump-only --dumpfile --encoding --symbol-transform
--auto-props --auto-props-ignore-case
前回の実行時間が3800秒(63分)だったので今回も寝る直前に,と思ったら妙に流れが速い.373秒で終わった.リリース版から10倍以上高速化されているようだ.
Comments