コードを舐める日々

でざいんがいいかんじです

コード共有環境を作ってみた(Subversion編)

Subversionというバージョン管理ソフトウェアを使う。
そこに作ったコードを置いてきて、作業を始める時に置いたコードをチェックアウト(取り出す)してコードの修正した後、その差分をコミット(アップする?)したりする。
その差分の記録も勝手にしてくれる。修正前と修正後、とか現状の3つ前のコードとかも確認できる。
でもSubversionは黒い画面に向かってやる作業でそのコードの中身とかチェックしたりするのにあまり可読性がないので、プラスTracという環境を加えるとばっちり。
Tracはブラウザ上でコードをチェックでき、Wiki機能も入っていて、タイムライン(編集履歴やコミット履歴を一目で理解できる)やリポジトリブラウザ(コードを見る場所ね)があっていい感じ。
これはいいね!
最近はGitというバージョン管理がいいよ!みたいなことが多いが、まだメジャーなSubversionの方に触れてみる。
なんせ、プログラムコードを保管することは分かっているが、どういうことができるのかこの時点でわからなかったのだからw
1年前からやってみたかったこと。
あの時いろいろ調べたんだけど、なかなか理解できてなかった。
今が時なんだなあと思いつつ。

前置きがながすぎますた。

まず、自宅サーバSubversionをインストールするところから始まる。
CentOS5をベースにしたサーバなので、SubversionをHTTP経由で使えるものが初めから入っている。

# yum install mod_dav_svn subversion 

mod_dav_svnはSubversionとApacheを連携させるモジュール。
Subversionは名前通り。
インストールできたら、mod_davを有効にする為にApacheのhttpd.confファイルの修正。

# vi /etc/httpd/conf/httpd.conf
...
httpd.confファイルの中に下記の行がコメントアウトされていたらコメントを外す。
LoadModule dav_module modules/mod_dav.so

次にSubversionをHTTP上でどう表示するかの設定。

# vi /etc/httpd/conf.d/subversion.conf

LoadModule dav_svn_module     /usr/lib/httpd/modules/mod_dav_svn.so
LoadModule authz_svn_module   /usr/lib/httpd/modules/mod_authz_svn.so
...
<Location /svn>
   DAV svn
   SVNParentPath /home/svn
#
#   # Limit write permission to list of valid users.
   <LimitExcept GET PROPFIND OPTIONS REPORT>
#      # Require SSL connection for password protection.
#      # SSLRequireSSL
#
      AuthType Basic
      AuthName "Authorization Realm"
      AuthUserFile /home/svn/.htpasswd
      Require valid-user
   </LimitExcept>
</Location>

こんな感じで。
http://hogehoge.com/svnというように設定している。
SVNParentPath /home/svnはsvnを保管するディレクトリを定めている。
今回は簡単にチェックアウトしたりコミットしたりされないようにする為にベーシック認証をかけた。
その設定がAuthType Basicである。
AuthUserFile /home/svn/.htpasswdはログインユーザおよびパスワード情報を保管したデータを置くディレクトリを設定する。
次に.htpasswdファイルの作成。
Linuxベースだと下記のように打てば生成できる。

# htpasswd -c /home/svn/.htpasswd ユーザー名

"ユーザー名"だけ変えておく。
あとは2回パスワードを打つことで/home/svn/配下に.htpasswdファイルが生成されている。
新規登録のみ-cを加えたコマンドを打つが、ユーザー追加の場合は-cを省く。

大体Subversionの設定はこんな感じでおk。
あ、そこで行き詰まったのが、権限の設定を忘れたこと。
/home/svn/の部分をapache権限にし、パーミッションを707にしておくこと。

# chown apache:apache /home/svn/
# chmod 707 /home/svn/

という感じで。

上記の設定だとhttp://(あなたのドメイン)/svn/になります。
これでhttp越しで拝見できます。

次回はTracインスコ及び設定の話。