SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

cvs2svnでCVSからSubversionに移行する

問題

cvs2svnってどうやって使うの?

cvs2svn

答え

ある環境で使用した例。

1、インストール

http://cvs2svn.tigris.org/ に書いてある通りファイルをダウンロードして、その中のREADMEに書いてある通り、make installする。

cd /usr/local/src
svn co --username=guest --password="" http://cvs2svn.tigris.org/svn/cvs2svn/trunk cvs2svn-trunk
cd cvs2svn-trunk
make install

CentOS5環境では問題なく動作した。

2、CVSからSubversionのダンプを生成する

さっそくcvs2svnが使える。

直接SVNリポジトリに流し込むことも可能だけど、データベースのダンプ、リストアの手順に慣れていると、いったんファイルに出力する手順の方がなんとなく安心してしまう。

cvs2svn --dump-only --dumpfile=foo.dump /home/cvs/foo

SVNリポジトリに流し込むときは、–fs-type=fsfs の形式のオプションと、SVNリポジトリのパスを指定することになるでしょう。

3、Subversionのリポジトリに取り込む

svnadmin load コマンドでロードする。

svnadmin load --parent-dir foo /home/svn/repos < foo.dump

2,3の手順だと、指定したSVNリポジトリにfooというディレクトリがあって、その中にtrunk, tags, branches が作られることになる。以下のような構成向け。

svnroot/
        foo/
            trunk
            tags
            branches
        bar/
            trunk
            tags
            branches

メモ)いろんな CVS2SVN

文字コードの指定でおそらく主にコメントの文字化けが修正できると思う。

cvs2svn -v --fs-type=fsfs --fallback-encoding='EUC-JP' --dump-only --dumpfile=foo.dump /home/cvs/foo/
cvs2svn -v --fs-type=fsfs --encoding='shift_jis' --fallback-encoding='shift_jis' --dump-only --dumpfile=foo.dump /home/cvs/foo

テキストファイルの改行文字の違いが問題になったら指定できる。

cvs2svn -v --fallback-encoding='shift_jis' --dump-only --default-eol=LF --dumpfile=foo.dump /home/cvs/foo/
cvs2svn -v --fallback-encoding='shift_jis' --dump-only --default-eol=CRLF --dumpfile=foo.dump /home/cvs/foo/

リポジトリ1階層目直下にtrunk, tags, branches がある場合はこれでいい。

cvs2svn --dump-only --dumpfile=foo.dump /home/cvs/foo
svnadmin load /home/svn/repos < foo.dump

リポジトリ1階層目にプロジェクトが並んでその中にtrunk, tags, branches がある場合は、

cvs2svn --dump-only --dumpfile=foo.dump /home/cvs/foo
svnadmin load --parent-dir foo /home/svn/repos < foo.dump

リポジトリ1階層目にプロジェクトが並んで、いきなり内容があって、trunk, tags, branches がない場合は、trunkを自動生成させないで名前を指定して、そのtrunkのディレクトリのみを作るように指定する。

cvs2svn --dump-only --trunk-only --trunk=foo --dumpfile=foo.dump /home/cvs/foo
svnadmin load /home/svn/repos < foo.dump

関連するメモ

コメント