svkに関するTips
svkローカルミラーにsvnserve経由でアクセスする
svkでローカルにミラーしたリポジトリに対して、inetd + svnserve経由でアクセス出来るようにする。 環境はUbuntu 7.04、svk 1.08、svnserve 1.4.3。
まずはSynapticまたはapt-getでsvk、subversionをインストールしておく。
svkローカルミラーの作成
svkでリモートリポジトリのミラーを作成する。 まずはsvk depot --initする。
$ svk depot --init
Repository /home/santamarta/.svk/local does not exist, create? (y/n)y
ここで、svnserveで公開するミラーの場所を~/.svk/localではなく/srv/svk/mirrorとしたいので、svk depot --relocateで配置しなおす。
$ svk depot --relocate // /srv/svk/mirror
Depot '' relocated to '/srv/svk/mirror'.
Repository /srv/svk/mirror does not exist, create? (y/n)y
Depotのパスが変わっていることを確認する。
$ svk depot --list
Depot Path
============================================================
// /srv/svk/mirror
ローカルミラー、ローカルブランチ用のディレクトリを作成する。
$ svk mkdir //mirror
Waiting for editor...
Committed revision 1.
$ svk mkdir //local
Waiting for editor...
Committed revision 2.
リモートリポジトリのミラーを作り、ミラーしたリポジトリの内容を同期する。
$ svk mirror svn://remote/project_x //mirror/project_x
$ svk mirror --list
Path Source
============================================================
//mirror/project_x svn://remote/project_x
$ svk sync //mirror/project_x
Syncing svn://remote/project_x
Retrieving log information from 1 to 18
Committed revision 4 from revision 1.
Committed revision 5 from revision 2.
Committed revision 6 from revision 3.
:
ローカルブランチを作る。
$ svk copy //mirror/project_x //local/project_x
Waiting for editor...
Committed revision 22.
svnserveの設定
/etc/servicesにsvnのサービス名と使用ポート番号が記述されていることを確認する(もしなければ追記する)。
svn 3690/tcp subversion # Subversion protocol
svn 3690/udp subversion
/etc/inetd.confにsvnserveの起動パラメータを追記する。 -rオプションにはリポジトリを格納するディレクトリ(svkで作成した/srv/svk/mirror/)を指定する。 svnserve用にユーザを用意する場合は、useradd svnしてからsantamartaの部分をsvnに置き換える
svn stream tcp nowait santamarta /usr/sbin/tcpd /usr/bin/svnserve -i -r /srv/svk/mirror/
/etc/hosts.allowにsvnserveへのアクセスを許可するホストを記述する。 以下は内部ネットワークからの接続のみを許可する場合の例。
svnserve: 127.0.0.1 192.168.0.0/24
/srv/svk/mirror/conf/svnserve.confを編集して、認証なしでも書き込めるようにする。 参照のみにしたい場合はreadにする。
[general]
anon-access = write
ここまでで必要な設定が完了したので、inetdを再起動する。
$ sudo /etc/init.d/openbsd-inetd restart
以降、svnserve経由でアクセス出来るようになる。 svn log、svn checkout等で正常にリポジトリの内容にアクセスできればOK。
svn log svn://localhost/local/project_x/
svn checkout svn://localhost/local/project_x/ ./project_x/
上の例ではローカルブランチに対して操作しているが、localをmirrorに変えればローカルミラーに対しても操作できる。