cvs2svn ― 2007年02月16日 06時26分10秒
Windows環境(CVSNT)で、CVS リポジトリを SVN (Subversion) リポジトリ に移行することにした。 移行できるのは当たり前なのかググってみても古いものが多かったので自力で実験開始。
必要なファイル入手
- cvs2svn 最新版ダウンロード cvs2svn-1.5.1.tar.gz
- http://cvs2svn.tigris.org/
- ドキュメントはこちら。(ここで問題発覚。CVSNTリポジトリはサポートしていないとのこと。だから情報が少ないことに納得しつつ実験なので続行)
- python2.2 or greater
- Trac月をインストールしているので、すでに Python 2.4.4 がインストールされていた。
- 本家 See http://www.python.org/
- co.exe
- 元々CVSNTリポジトリを移行しようとしているのでCVSNTがインストールされていて、co.exe や cvs.exe が存在したためこのまま使うことにした。
- パスは \Program Files\CVSNT\co.exe
- GNU sort
- see http://www.gnu.org/software/coreutils/. Binaries for Win32 can be found at http://unxutils.sourceforge.net/. Windows sort.exe is not adequate.
- と、説明があったので UnxUtils.zip を探しいった。が、ここからはダウンロードできずForbidden 。 しかたがないのでUnxUtils.zipをググって他のサイトから入手。
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 で取り込む方法)する方法が使えるとのことであるが、ファイル経由でやることにした。
移行手順
- 作業場所の確保
- cvs2svn-1.5.1.tar.gz を展開したディレクトリに移動。C:\cvs2svn とした。
- 必要なコマンド類が作業場所で起動できるかチェック。PATHをきるのが面倒だったので、可能な限り UnxUtils.zip から得られた実行ファイルを作業場所へコピー。他のコマンドは元々見えているのでそのまま。
- CVSリポジトリのコピー
- CVSリポジトリの最上位フォルダを作業場所へコピー。フォルダ名は C:\cvs2svn\CVSRep
- 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:設定ファイル追加 => 設定ファイル
- 移行データ確認
- 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: http://makai.asablo.jp/blog/2007/02/16/1187795/tb
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。