cvs2svn 設定 ファイル情報2007年02月21日 06時41分27秒

cvs2svn を使ってCVSリポジトリからSVN(Subversion)リポジトリへ移行(引越)した時、設定ファイルの内容が無かったのでまとめておいた。

auto-props.txt

[auto-props]

README = svn:eol-style=native
.cvsignore = svn:eol-style=native

mime-types.txt

application/mac-binhex40	hqx
application/mac-compactpro	cpt
application/msword		doc
application/octet-stream	bin dms lha lzh exe class so dll dmg jar properties
application/pdf			pdf
application/vnd.ms-excel	xls
application/vnd.ms-powerpoint	ppt
application/x-tar		tar
application/zip			zip
image/bmp			bmp
image/gif			gif
image/jpeg			jpeg jpg jpe
image/png			png
image/svg+xml			svg
image/tiff			tiff tif
image/x-icon			ico
image/x-portable-anymap		pnm
image/x-portable-bitmap		pbm
image/x-portable-graymap	pgm
image/x-portable-pixmap		ppm
image/x-rgb			rgb
image/x-xbitmap			xbm
image/x-xpixmap			xpm
image/x-xwindowdump		xwd
text/calendar			ics ifb
text/css			css
text/html			html htm
text/plain			asc txt jsp tld
text/richtext			rtx
text/rtf			rtf
text/sgml			sgml sgm
text/xml			xml
video/mpeg			mpeg mpg mpe
video/quicktime			qt mov
video/vnd.mpegurl		mxu m4u
video/x-msvideo			avi
video/x-sgi-movie		movie

cvs2svn2007年02月16日 06時26分10秒

Windows環境(CVSNT)で、CVS リポジトリを SVN (Subversion) リポジトリ に移行することにした。 移行できるのは当たり前なのかググってみても古いものが多かったので自力で実験開始。

必要なファイル入手

  1. cvs2svn 最新版ダウンロード cvs2svn-1.5.1.tar.gz
    • http://cvs2svn.tigris.org/
    • ドキュメントはこちら。(ここで問題発覚。CVSNTリポジトリはサポートしていないとのこと。だから情報が少ないことに納得しつつ実験なので続行)
  2. python2.2 or greater
    • Trac月をインストールしているので、すでに Python 2.4.4 がインストールされていた。
    • 本家 See http://www.python.org/
  3. co.exe
    • 元々CVSNTリポジトリを移行しようとしているのでCVSNTがインストールされていて、co.exe や cvs.exe が存在したためこのまま使うことにした。
    • パスは \Program Files\CVSNT\co.exe
  4. GNU sort

cvs2svn のインストール

cvs2svn Documentationには、"make install" でよいと書かれているが、今回はWindows上で実験するので展開したファイルをその場で使う方法にする。

移行方法の決定

cvs2svn Documentationでは次の方法が説明されている。

  • Top-skim (Doesn't require cvs2svn!)
  • Trunk only
  • Pick and choose
  • Full conversion
  • Smorgasbord
  • One project at a tim

対象にするCVSNT環境は複雑なこともしていないはずなので、"Full Conversion"で進めてみる(これがcvs2svnのデフォルト動作)。

それから、CVSリポジトリからSVNリポジトリへ直接移行する方法と、ファイルを経由(cvs2svnでファイルを作成して、svnadmin load で取り込む方法)する方法が使えるとのことであるが、ファイル経由でやることにした。

移行手順

  1. 作業場所の確保
    • cvs2svn-1.5.1.tar.gz を展開したディレクトリに移動。C:\cvs2svn とした。
  • 必要なコマンド類が作業場所で起動できるかチェック。PATHをきるのが面倒だったので、可能な限り UnxUtils.zip から得られた実行ファイルを作業場所へコピー。他のコマンドは元々見えているのでそのまま。
  1. CVSリポジトリのコピー
    • CVSリポジトリの最上位フォルダを作業場所へコピー。フォルダ名は C:\cvs2svn\CVSRep
  2. cvs2svn を実行
    • C:\cvs2svn>python cvs2svn --encoding=SJIS --use-cvs --cvs="C:\Program Files\CVSNT\cvs.exe" --auto-props-ignore-case --auto-props=auto-props.txt --eol-from-mime-type --no-default-eol --keywords-off --mime-types=mime-types.txt --dumpfile=svn1.dump CVSRep
    • オプション類はcvs2svn FAQを参考に試行錯誤してたどり着いたもの
      • --encoding=SJIS  エンコーディングに"SJIS"を指定
      • --use-cvs  cvs.exeを使う方法でうまくいったので指定
      • --cvs=PATH  cvs.exe のパスを指定
      • --auto-props-ignore-case  auto-props の指定で大文字小文字を区別しないように指定
      • --auto-props=FILE  特定のファイルに属性を設定するために指定
      • --eol-from-mime-type  --mime-types=FILE で特定された情報から、svn:eol-style=native を属性に設定するために指定
      • --no-default-eol  mime type が不明な場合は svn:eol-style=native を属性に設定しないために指定
      • --keywords-off  属性に svn:keywords を追加しないために指定
      • -mime-types=FILE  属性 svn:mime-type をFILE内容にしたがって追加するために指定
      • --dumpfile=FILE  コンバート結果をファイルへ出力するために指定
    • 2007/02/21:設定ファイル追加 => 設定ファイル
  3. 移行データ確認
    • TortoiseSVN のリポジトリブラウザで移行されているか確認=>OK!
    • Javaのサーブレットを使った Webアプリ(?)だったので、Eclipse(Subclipse)で扱えることを確認して終了。(WARファイルが作成されるまで。最終的には試行錯誤で属性の確認や動作確認をして完了。約1日。。。)

感想

ドキュメントにあったが、CVSNTリポジトリはサポート外ながら「成功している人もいるよ!」書いてあった通り移行できた!!これは運がいいということか!^^!

その他

cvs2svn の実行時間は数分といったところ(実行環境はPentiumD 3GHz, Memory1GB)。

処理中はたくさんのメッセージが表示されていたが、処理終了時には以下のようなメッセージが表示されていた。

Starting Subversion r264 / 265
Starting Subversion r265 / 265
Done.

cvs2svn Statistics:
------------------
Total CVS Files:               576
Total CVS Revisions:          2177
Total Unique Tags:               0
Total Unique Branches:           0
CVS Repos Size in KB:         7587
Total SVN Commits:             265
First Revision Date:    Tue Aug 22 22:49:47 2006
Last Revision Date:     Tue Oct 03 18:45:56 2006
------------------
Timings:
------------------
pass 1:     2 seconds
pass 2:     0 seconds
pass 3:     0 seconds
pass 4:     0 seconds
pass 5:     0 seconds
pass 6:     0 seconds
pass 7:     0 seconds
pass 8:     0 seconds
pass 9:   161 seconds
total:    164 seconds

C:\cvs2svn>