CleanArchiver 2.3を出すあたりからバージョン管理をCVSからSubversionに切り替えていたので、Subversionをいじるの自体は初めてではなかったのだけれども、目黒の仕事でバージョン管理にSubversionを使うっていう話になったので、久しぶりにちょっと調べ直してみたわけ。
CVSのノリでやってると認証はssh経由でオッケーなんじゃないかと思っていたんだけど、パーミッションの関係でsvnadmin createをやっただけだとデフォルトで複数開発者での共同開発者環境にならない(リポジトリ作成者しかコミットできない)。CVSの場合もデフォルトではそんな感じなのだけれど、リポジトリとサンドボックスがほとんど同期のとれたわかりやすい構造になっているので、リポジトリのディレクトリのパーミッションを変更すればうまく動くなるようになるらしい、というのが直感的にわかるのだが、Subversionの場合リポジトリの構造がそういう意味で透過的になっていないので、うかつにパーミッションを変えるのが怖い。ま、正解はdbとlocksのパーミッションをグループに拡張してやるとかそんなところらしいんだけどね。
でも、きちんとドキュメントを読んでみると、本当の正解はWebDav経由でhttpプロトコルでアクセスする、ってところらしい。そうするとディレクトリごとのアクセス権設定も設定できるし、より柔軟なアクセス管理ができるようになる。設定としてはApacheの設定ファイルにちょっと情報を書き加えて、リポジトリのオーナーをApacheの実行ユーザに変更する、といったところ。svn+ssh経由よりは多少設定が面倒だが、それでもかなり簡単に済む。
ちなみに、CleanArchiverの最新版のソースコードあたりは、
svn co https://www.sopht.jp/svn/CleanArchiver/trunk
とかで匿名アクセスで取得できます。まぁ、興味のある方はどうぞ。別にhttpプロトコルでも大丈夫なんですが、httpsの方が通信路での改ざんの可能性もなくなるだろうし、いいんだよね、たぶん。