Subversion や CVS レポジトリのミラーをローカルに持つことで、ネットワークから切り離された状態でもローカルな環境でリビジョン管理ができるようにするツール、に関する覚え書き。
まず svk を win32 な環境にインストール。
SVKWin32にあるリンク先に最新版 1.08 があるので、それをインストール。
次に環境変数の設定。デフォルトでは自分のホームディレクトリに .svk というディレクトリを作成して、その下にミラーレポジトリを格納する。通常 C:\Documents and Settings\user 以下にぶちまけることになる。または SVKROOT という環境変数が設定されていればそこにぶちまける。普段自分の場合 E: がデータなどの置き場になってるので、SVKROOT=E:\work\SVK と設定した。
それではいよいよ、ミラーの作成。下記の例は nucleuscms 本家の subversion レポジトリのミラーを作成する場合。
svk mirror //mirror/nucleuscms https://svn.sourceforge.net/svnroot/nucleuscms
この時点ではまだコピーはされない。実際にコピーする場合は
svk sync //mirror/nucleuscms
とする。ただし上記のようにオプション無しだと全部の履歴をとってくるので時間がかかる場合があるので、最新版のみでいいなら --skipto HEAD オプションを付けて実行。でも最新版だけじゃ意味ないんだよね...
実際このミラーに対してコミットするんではなく、さらにローカルレポジトリを作って、それ経由で本体にコミットする。もちろん本体へのコミット権がないとダメだけど。ローカルレポジトリは下記の通り作成。
svk cp -p //mirror/nucleuscms /nucleuscms
ミラーレポジトリは //mirror 以下に。ローカルレポジトリは /nucleuscms と直下に置く。いやべつに /local/nucleuscms ってやってもいいが、このローカルレポジトリは後でよく使うので、わざわざ階層深くすることもないかなと思う。
さて、今度はローカルレポジトリから実際に作業用としてチェックアウトする。svk コマンドでチェックアウトしてもいいんだが、普段 TortoiseSVN 使ってるのでこちらで。適当なディレクトリに移動して、右クリック。”svn checkout...”を選択。URL に file:///E:/work/SVK/local/nucleuscms と入力して OK を押すと、現在のディレクトリにチェックアウトされる。直接サーバーからチェックアウトしたのと同じ。あとはいろいろ作業をして、いつも通りコミットする。ただこのままではローカルレポジトリまでしか反映されないので、下記の通りミラー経由でサーバーまで反映させる。
svk sync //mirror/nucleuscms (サーバーから最新版をミラーに持ってくる) svk smerge -C //nucleuscms //mirror/nucleuscms svk smerge -l //nucleuscms //mirror/nucleuscms
2番目のコマンドは単に比較するだけ。最後のコマンドを実行することで、ミラー経由でサーバーにコミットを完了する。このときコンフリクトがあれば、それを解消してから再度コミットをやりなおす。smerge には --verbatim というオプションがあって、これを設定すると、全部の変更を一つにまとめてコミットする。
CVS からのミラーもできるが、VCP というパッケージが別途必要でまだ試せてないので、また後日改めて。
【参考ページ】
SVK Tutorials
OpenID を使ってログインすることができます。
poker, backgammon, tramadol, casino, insurance, loans