Subversion: 2006年1月アーカイブ

新しく管理しているコードは全部 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 流でデータの移行ができます。
過去の履歴もちゃんと引き継がれているのでハッピーです。

個人的に書いてるソースコードの管理に subversion を使ってるのですが、
リポジトリがレンタルサーバ上にあるので、
ネットワークに繋がっている状態でないとリポジトリ上にアクセスできません。

またリポジトリにアクセスするのにもネットワークを介するので、
どうしても遅くなってしまいます。

そこで svk を導入することにしてみました。
svk にはいろいろな機能があるらしいのですが、
とりあえずはローカルにリポジトリのミラーを作る目的に使用してます。
これだけでも十分便利。

まずはインストール

CPAN にあるので
# cpan -i SVK
でインストール....できません!!

svk は CPAN の VCP というモジュールを利用しているのですが、
この VCP というモジュールがないので代わりに
VCP-autrijus-snapshot-0.9-20050110
というモジュールを入れないとダメです。
ここでだいぶはまりました。

svk は CPAN のモジュールをたくさん使っていて、
必要なのをもろもろインストールして、
無事に svk のインストールに成功しました。


svk の使い方は結構簡単です。
以下は使い方のメモ。

・ミラーするリポジトリを登録(この時点ではミラーは行われない)
svk mirror //mirror/project svn+ssh://example.com/svn/repos/project

・ミラーする
svk sync //mirror/project

・ローカルのリポジトリを作成
svk cp -p //mirror/project //project

・チェックアウト
svk checkout //mirror/project/trunk project

・コミット(この時点ではコミットはローカルのリポジトリのみ)
svk commit

・上流のリポジトリにコミット(ローカルへのコミットを上流にも反映)
svk push

・上流の変更をマージ
svk pull


svk のリポジトリの構成としては
//mirror/project
にミラーを置いて
//project
にローカルのリポジトリを置くのが普通みたい。

とりあえずローカルにリポジトリのミラーを作れるのがかなり便利なので、
それだけで導入するのでも十分に価値があるでしょう。

このアーカイブについて

このページには、2006年1月以降に書かれたブログ記事のうちSubversionカテゴリに属しているものが含まれています。

前のアーカイブはSubversion: 2005年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。