svkに関するTips
svkでローカルにミラーしたリポジトリに対して、inetd + svnserve経由でアクセス出来るようにする。 環境はUbuntu 7.04、svk 1.08、svnserve 1.4.3。
まずはSynapticまたはapt-getでsvk、subversionをインストールしておく。
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.
/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に変えればローカルミラーに対しても操作できる。