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>

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://makai.asablo.jp/blog/2007/02/16/1187795/tb