Subversionを導入しよう

経緯

最近ずっとひとりで開発をしていて、ソースのバージョン管理を怠っていました。
これではイカン、と、svnLinux機(Fedora13)にインストールしてみました。

導入

パッケージのインストール
yum install subversion
IPパケットのフィルタリング設定変更

svnが使用するポートに対するポートへのパケットを許可します。

#!/bin/sh

iptables -I INPUT -p tcp -s クライアントのIP -d サーバのIP --dport 3690 -j ACCEPT

こんなスクリプトを書いて、 /etc/rc.d/init.d/filtertab として保存します。
これを起動時に適応させるために

chmod 755 /etc/rc.d/init.d/filtertab
cd /etc/rc.d/rc3.d/
ln -s ../init.d/filtertab S98filtertab

これで、svnへのパケットが通るようになりました。

リポジトリ作成と設定

コードの置き場をリポジトリというらしいですが、それを作成しユーザの認証設定を行います。

svnadmin create /var/svn/repos

これでリポジトリルートが作成されたので、次に認証設定を変更します。
認証設定のファイルは /var/svn/repos/conf/svnserve.conf ですので、これを以下のように書き換えました。

[general]
anon-access = read
auth-access = write
password-db = passwd

匿名アクセスは読み取りのみの権限、認証アクセスには読み書きの権限を与えます。

[users]
#ユーザ名 = パスワード

を /var/svn/repos/conf/passwd に記述します。

あとはsvnでアクセスされたときにsvn用サービスを立ち上げれば完了です。

xinetdでsvnserve起動

ずっとスーパーサーバはinetdだと思い込んでいたのですが、xinetdなんですね。古すぎました。

service svn
{
     disable = no
     socket_type = stream
     port = 3690
     wait = no
     user = svn
     server = /usr/bin/svnserve
     server_args = -i -r /var/svn/repos
     log_on_failure += USERID
}

のような内容を /etc/xinetd.d/svn に記述します。
service名は /etc/services に記載されているものに合わせます。

結果

バージョン管理システムcvsとvssしか使ったことがなかったのですが、svnはなかなかシンプルかつ直感的でいいですね。
svnを使いこんで、次はgitにチャレンジしてみようと思います。