この文書は既存の CVS リポジトリから Subversion のリポジトリへ移行する際の メモ書きである. 変換には cvs2svn を使用する. cvs2svn 自体は環境に応じて適宜 install されたい.
Debian の場合は cvs2svn パッケージとして提供されているので,
% sudo apt-get install cvs2svn
で install される.
単一モジュールを管理している CVS リポジトリを SVN リポジトリに変換する場合には
$ cvs2svn -v --fs-type=fsfs \ --encoding='EUC-JP' --fallback-encoding='EUC-JP' \ -s /GFD_Dennou_Club/ftp/arch/hoge/svnroot \ /GFD_Dennou_Club/ftp/arch/hoge/cvsroot/project_name
で良いだろう.
もしくは --dump-only を指定して, リポジトリの dump を作成した後に, 作成した SVN リポジトリへ load する.
$ svnadmin create --fs-type=fsfs /GFD_Dennou_Club/ftp/arch/hoge/svnroot $ cvs2svn -v --fs-type=fsfs \ --encoding='EUC-JP' --fallback-encoding='EUC-JP' \ --dump-only /GFD_Dennou_Club/ftp/arch/hoge/cvsroot/project_name \ --dumpfile=project_name-dump $ svnadmin load < project_name-dump
cvs2svn で svn リポジトリに変換すると trunk/tags/branches は svnroot 直下に置かれる. これをそのまま load すると
svnroot/trunk/project1 project2 ... /tags/project1/tag_01 /tag_02 ... project2/tag_01 /tag_02 ... /branches/project1/branchA branchB ... /project2/branchA branchB ....
という配置になる. これを
svnroot/project1/trunk /tags /branches /project2/trunk /tags /branches ...
としたい場合には cvs2svn にて一度 dump ファイルを作成した後, 親ディレクト リを指定して svn リポジトリへ load する. 親ディレクトリは先に作成しておく必要がある.
$ svnadmin create --fs-type=fsfs /GFD_Dennou_Club/ftp/arch/hoge/svnroot #=>リポジトリ作成 $ svn mkdir file:///GFD_Dennou_Club/ftp/arch/hoge/svnroot/projectA \ -m "Create Project A directory" #=>projectA の作成 $ cvs2svn -v --fs-type=fsfs \ --encoding='EUC-JP' --fallback-encoding='EUC-JP' \ --dump-only /GFD_Dennou_Club/ftp/arch/hoge/cvsroot/projectA \ --dumpfile=projectA-dump #=>dump の作成 $ svnadmin load /GFD_Dennou_Club/ftp/arch/hoge/svnroot \ --parent-dir projectA < projectA-dump #=>dump の load
Subversion で管理したいモジュールの数だけ, 上記操作をくりかえすと良い.
これとは別に単一の dump を作成した後に dump 内の Node-path を手で修正する方法もあるが, 書き換えが煩雑すぎるのでここでは触れない.