SUBVERSION

WebDAV + SSL(+クライアント認証) というのがファイル共有としてはよさげな姿かなと思う今日この頃…。徒然なるままに、Subversion + Subclipse + TortoiseSVN (+ Webフォルダ) の環境構築を目論む。TortoiseSVNは以前からメインノートに入れていたが、当時不安定になったので暫く使用していなかった。もうそろそろ枯れてきたっしょと思い、(物理的に)重い腰を上げ、WebDAV/DeltaVによるファイル管理の統一を目指す。ソースコード管理に限らず、普通の文書ファイル共有においても、履歴管理機能は使えるし…無駄なバックアップを取り続け、未来永劫決して陽の目を見ないデータがディスクを占有するという現状のSOLUTIONになるであろう。きっと…。subversionではブランチをファイルセットのコピーで表現する。trunkディレクトリを作成するなどして、本線は色分けするなどの工夫が必要だがcvsに比べ分かり易いと思う。またリビジョンはリポジトリ全体に対してのヒストリーカウントとして位置づけられ、ファイル単位でアップするcvsに慣れていると違和感を感じるが、ま、なれるでしょ。
参考にした本*1によるとパーミッションが肝とのことでしたが、確かに…。SELinuxでちょっとはまりました。ここは安直に apacheSELinuxの管理からはずすことで解決?。あと apache ユーザをリポジトリの管理ユーザにした方がはまらないかも…。

  • Subversoinのインストール
    • Subversion用グループとユーザの作成(httpd経由のアクセスを考慮し、apacheユーザをsvnグループに追加)

groupadd -g 501 svn
useradd -u 501 -g svn -G apache -p ******** svn

yum install subversion.i386
yum install mod_dav_svn

su - svn
svn create /home/svn/test
svn list file:///home/svn/test
chmod 6775 /home/svn/test/db

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

kill -HUP `cat /var/run/xinetd.pid`
svn list svn+ssh://localhost/home/svn/test

LoadModule dav_svn_module modules/mod_dav_svn.so #読込済みのwarningが出とりますが…

#とりあえず認証とかはナシで…
DAV svn
SVNPath /home/svn/test

umask 002 #シェルスクリプトの先頭の方に追加

apachectl restart

  • エピローグ
    • とりあえず動きました
      • TortoiseSVNSubclipseによる読書アクセス、WebBrowserによるファイル参照OKであります。svn+sshssh-agentとかを使わないと毎回パスワード入力が必要のようであります。基本的にhttp/httpsしか使わない予定なので、今日のところはこれでよしとするであります。
    • セキュリティ設定
      • httpd.confとsvnserve.confの設定が必要かな? あとパーミッションの総点検か…。というかkerberosとかLDAPでログインアカウントの統一を図りたい今日この頃…。
    • 日本語のファイル名
      • TortoiseSVN(on WindowsXP)からは、日本語ファイル名も問題なくコミットできました。Webフォルダから使用する場合には mod_encoding といのが必要らしい…。
    • い〜いんじゃな〜ぃ。
      • とりあえずViewCVSとか使わなくても最新ファイルが見れるがいい。当たり前だけど、ソースコードに限らずあらゆるファイルの管理に向いていると思う。
      • 管理DB(BerkeleyDBとか)から情報を抽出するアプリを作れば、リソース管理とプロジェクト管理をシームレスに統合ができるかも。リポジトリへのアクションイベントをハンドリングして独自プログラムが起動できるから、いろいろできそう…たとえば…。
        • ファイル名やファイルの中身のインデックス作成
        • 仕様書やテスト結果のコミット時に進捗管理情報を更新
        • Q&A票や問題管理票コミット時にメール送付
        • ソースコミット時にビルドとテストを実行し結果をメール送付

*1:Subversion解説書: 読みやすかった。