cvs2svnでCVSからSubversionに移行する
問題
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
コメント