cvs のリポジトリを subversion に移行する
新しく管理しているコードは全部 subversion で管理していますが、
昔のやつは未だに cvs を使ってたので subversion に移行してみました。
というわけで、備忘録のようなメモ
cvs の場合はプロジェクト毎にリポジトリを作ってましたが、
subversion の場合はまとめて管理ができるので、1つのリポジトリにまとめたいところ。
cvs2svn を何も考えずに使うと、cvs と同じようにプロジェクト毎に新しくリポジトリを作ってしまうので、
repo1/{branches,tags,trunk}
repo2/{branches,tags,trunk}
といった感じになってしまいます。
これをちゃんと subversion 流に
repo/proj1/{branches,tags,trunk}
repo/proj2/{branches,tags,trunk}
こういう感じにしたいわけです。
それで、次のようなシェルスクリプトを作って一括で移行しました。
% cat cvs2svn.sh
REP=bz2
for i in *;do
cvs2svn --dump-only --dumpfile=$i-dump $i
svn mkdir -m 'ディレクトリ追加' file:///home/bz2/svn/repository/$REP/$i
svnadmin load --parent-dir $i /home/bz2/svn/repository/$REP < $i-dump;
done
やってることは次のようになります。
・cvs2svn でダンプファイルを作る
・予めリポジトリ上にプロジェクト名のディレクトリを作っておく
・svnadmin load でさっきダンプしたデータをロードする。この時、--parent-dir でプロジェクト名を指定しておく。
こうするとちゃんと subversion 流でデータの移行ができます。
過去の履歴もちゃんと引き継がれているのでハッピーです。