さくらVPSにSubversion入れてみた

ソース管理とか全然ひっちゃかめっちゃかだったんだけど、さすがにマズいかなとか思い始めた今日この頃、Subversionを入れることにしました。さくらのVPSね。

ここを参考にさせてもらいました。
subversionの導入(ごった煮)

まずsubversionのインストール
# yum install subversion

リポジトリは以下の構成です。
/trunk        : 開発の主系
/branches     : ブランチのコピーを保持
/tags         : タグのコピーを保持

リポジトリの作成場所は、/home/svn/repos/sampleとします。
ディレクトリを作成後、リポジトリをcreateします。
# mkdir -p /home/svn/repos/sample
# svnadmin create /home/svn/repos/sample

sampleリポジトリにtrunk,branches,tagsディレクトリを作成します。
# svn mkdir file://localhost/home/svn/repos/sample/trunk -m "create"
# svn mkdir file://localhost/home/svn/repos/sample/branches -m "create"
# svn mkdir file://localhost/home/svn/repos/sample/tags -m "create"

で、ここでローカルからインポートしてもうまく行きませんでした。なんで?
$ svn import /tmp/sample svn+ssh://host/home/svn/repos/sample/trunk -m "import!!" 

httpで使えるようにするために、WebDAVで使えるようにしてみます。
mod_dav_svn をインストールします。
# yum install mod_dav_svn

apache2のsubversion設定ファイル(/etc/httpd/conf.d/subversion.conf)にLocationセクションを追加します。
<Location /svn/sample>
    DAV svn
    SVNPath /home/svn/repos/sample
</Location>

Apacheプロセスがリポジトリにアクセス(読み込み・書き込み)ができる様にオーナー/グループの変更をします。
# chown -R apache:apache /home/svn/repos/sample

これで、Apacheの再起動を行います。
# /etc/rc.d/init.d/httpd restart

これでHTTP経由でインポートを行ったら成功しました。
$ svn import /tmp/sample http://host/svn/sample/trunk -m "import!!" 

このままだと誰でも読み込み/書き込みができてしまうので、WebDAVの認証を設定します。
Apacheのsubversion設定ファイル(/etc/httpd/conf.d/subversion.conf)を以下の様に再定義します。
<Location /svn/sample>
    DAV svn
    SVNPath /home/svn/repos/sample

    # our access control policy
    AuthzSVNAccessFile /home/svn/repos/sample/authzsvn.conf

    # only authenticated users may access the repository
    Require valid-user

    # how to authenticate a user
    AuthType Basic
    AuthName "Subversion repository(sample)"
    AuthUserFile /home/svn/repos/sample/.htpasswd
</Location>

認証には.htpasswdを利用します。
ユーザーとパスワードを設定します。
# /usr/bin/htpasswd -cb /home/svn/repos/sample/.htpasswd user password

これでApacheを再起動すれば、はい終わり。
# /etc/rc.d/init.d/httpd restart

さくらVPSでのSubversionの設定はこんな感じでできました。