[ 地球流体電脳倶楽部 / 計算情報環境資源 / Subversion 手引き / SIGEN.htm ]

既存の CVS リポジトリから Subversion への移行

この文書は既存の CVS リポジトリから Subversion のリポジトリへ移行する際の メモ書きである. 変換には cvs2svn を使用する. cvs2svn 自体は環境に応じて適宜 install されたい.

Debian の場合は cvs2svn パッケージとして提供されているので,

% sudo apt-get install cvs2svn

で install される.


  1. Subversion リポジトリへの変換
  2. 複数のモジュールが存在する CVS リポジトリを変換する場合

Subversion リポジトリへの変換

単一モジュールを管理している 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

複数のモジュールが存在する CVS リポジトリを変換する場合

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 を手で修正する方法もあるが, 書き換えが煩雑すぎるのでここでは触れない.


GFD Dennou Club dcstaff@gfd-dennou.org
Last Updated: 2011/07/23, Since: 2011/04/18