Kawanet Blog II

アクセスカウンタ

zoom RSS svnsync で Subversion レポジトリを引っ越す svn+ssh://

<<   作成日時 : 2010/02/24 12:49   >>

かわいい ブログ気持玉 1 / トラックバック 0 / コメント 0

これまで他社の Subversion サービス(レンタル)を使っていたレポジトリを、
Amazon EC2 のレンタルサーバ上の自前のレポジトリに移動させたメモ。
svnsync を使うと、更新履歴も含めてレポジトリを同じ状態に再現できます。
クライアントから新レポジトリへのアクセスは、svn+ssh:// を使います。
svn クライアントの使い勝手は、従来の http://、https:// と変わりません。

svn+ssh のメリット


・既存のサーバが使える。EC2 だと大容量でもディスク単価が安い
・ssh 経由なので専用デーモンが要らないし、ファイアウォールの追加設定も不要
・ssh の認証が使われるので、Subversion 専用のアカウント管理が不要
・.ssh/identity 秘密鍵により、パスワード不要で Subversion を操作できる

svn+ssh のデメリット


・単体では HTTP サーバがないので、ウェブブラウザからの閲覧ができない
(個別に用意する)
・以下の手順では、複数アカウントで1つのレポジトリを共有することはできません
(共有したい場合は、レポジトリ専用の UNIX アカウントを作って共有する等)

引越し手順


引越し先の新サーバ(ssh ログイン可能な UNIX サーバ)で以下の操作を行います。
引越し元の旧サーバでの操作は不要です。
つまり、どの Subversion レポジトリサービスからの移行でも同様の手順になります。

0. Subversion のインストール(念のため)
$ sudo yum install subversion


1. Subversion レポジトリを作る(一般ユーザ権限)
$ mkdir ~/myrepository
$ svnadmin create ~/myrepository


2. svnsync の準備(フックの設定が必要らしい)
$ vi ~/myrepository/hooks/pre-revprop-change
#!/bin/sh
exit 0
$ chmod 755 ~/myrepository/hooks/pre-revprop-change


3. svnsync の実行(init→sync)
$ svnsync init file:///home/u-suke/myrepository http://svn.excample.com/svn
Copied properties for revision 0.
$ svnsync sync file:///home/u-suke/myrepository
Committed revision 1.
Copied properties for revision 1.
Committed revision 2.
Copied properties for revision 2.
:


svn クライアント側は、switch --relocate で切換えられるのかもしれませんが、
シンプルに古いのは捨てて(移動して)、checkout (svn co) し直すと分かりやすいか。
(5/10追記:svnsync では uuid が変わるので、switch --relocate では切り替えられない)

checkout しなおす(5/10追記)


移行先の svn レポジトリは、以下のような URL で表せます。
svn+ssh://ユーザ名@ホスト名/home/ユーザ名/myrepository

クライアント側では、以下のようにして、checkout し直します。
$ svn co svn+ssh://u-suke@remote.host/home/u-suke/myrepository

ssh で u-suke@remote.host にパスワード不要でログインできる設定になっていると
http/https のときと同様に svn を手軽に使うことができます。

エラーメッセージと対応表


svnsync から出る主なエラーメッセージと対応手順。

svnsync: Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook
→「hooks/pre-revprop-change」ファイルを設置する。

svnsync: 'pre-revprop-change' hook failed with error output:
→chmod 755 を行う。

svnsync: Session is rooted at 'http://svn.excample.com/svn/foobar' but
the repos root is 'http://svn.excample.com/svn'
→下位ディレクトリでなく、レポジトリのルートからsyncする必要がある。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
かわいい

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
svnsync で Subversion レポジトリを引っ越す svn+ssh://  Kawanet Blog II/BIGLOBEウェブリブログ
文字サイズ:       閉じる