webdav & subversion

apacheの使い方も少しわかって来たところで、subversionの導入をしてみようと
思います。

...やはり、バージョン管理は重要なのです。

副産物として、複数の作業PCからファイルが共有できるっているっているおまけまで
ついてきます。

一人で遊んでいるのにも、強力なツールになってくれること間違いなしです。

設置方法はいろいろとあるようなんですが、私はwebdavを使ってsvnを動かして
見ることにします。

わざわざwebdavなんか入れなくても、svnserverを動かせば複数のPCからsvn
利用できるようなんですが、なんとなく調べてみたところこの方法が、一番情報が
出ているような気がしたからです。

webdavとは?

さっそく、webdavの設定から...といきたいところですが、軽くwebdavの説明を
しておきたいと思います。
(...誤りがあったらご指摘願います)

簡単に言えば、httpプロトコルを拡張して、webディレクトリみたいなことを
やりましょうって規格らしいです。

ここでの、wevdavの設定が終わった後には、webdav経由のwebディレクトリが
手に入っているはずです(多分)


webdavのセットアップ

webdavは、httpプロトコルの拡張なんで、apacheのモジュールを追加することに
なります。

以下、手順

# mkdir /var/www/dav // webdav が利用するディレクトリを作成
# chown www-data:www-data /var/www/dav // オーナーを apache にする
# chmod 700 /var/www/dav // apache 以外が変更できないようにする
# a2enmod dav // webdav モジュールの登録
# a2enmod dav_fs // webdav モジュールの登録2

つぎに、apacheのサイト定義に、webdav用のディレクトリ設定を記述します

# emacs /etc/apache2/sites-available/my-site

(以下、書き換える内容)
</VirtualHost>の直前におく

# wevdav用のディレクトリ設定
<Directory /var/www/dav>
Allow from all
DAV On
</Directory>
</VirtualHost> // 既存の行

# aptitude install libapache2-mod-encoding // 文字化け防止に encoding モジュールを組み込んでおく
# a2enmod encoding
# /etc/init.d/apache2 restart

apacheを再起動して、エラーをはいていなければ、設置終了です。

macからwebdavディレクトリにアクセスしてみる

Finderを立ち上げて、[移動]-[サーバへ接続]
アドレスに http://${ホストのIP}/dav と入れると、webディレクトリとして操作できる
windows では、IEを使って
IEでファイル→開く http://${ホストのIP}/dav/ でwebフォルダとして開く にチェックを入れて開きます。

普通に、ファイルのコピーとか削除とかができます。

...なんとなく便利っぽいけど、ファイルサーバ立てるならsambaでよくね?

subversion の設置

さて、本題のsvnの設置に入っていきます。
svnには、webdav経由でアクセスして、basic認証を行うことにします。

basic認証ってのは、

Basic認証では、ユーザ名とパスワードの組みをコロン ":" で繋ぎ、Base64エンコードして送信する。
このため、盗聴や改竄が簡単であるという欠点を持つが、ほぼ全てのWebサーバおよびブラウザで対応しているため、
広く使われている。
(wikipediaより)

とのことです。

早速インストール

# apt-get install subversion

つぎに、下準備です。

# htpasswd -c /var/.htpasswd ${ユーザ名}   // basic認証を行うユーザ
# mkdir /var/svn
# mkdir /var/svn/sandbox
# svnadmin create --fs-type fsfs /var/svn/sandbox
# chown -R www-data:www-data /var/svn/sandbox

利用方法として、"/var/svn" 以下に、複数個のリポジトリを配置しようと考えました。
恐らく、プロジェクト毎にリポジトリがあった方が良いでしょうってことで...

まずは、svnの基本的な動作確認のために、sandboxというリポジトリを作ってみました。

ここまでの操作で、svnリポジトリができているので、設置したマシン内部では、
svnを使うことができるはずです。

webdavを利用してsvnリポジトリの公開

さて、それではwebdavを利用してリポジトリを公開してみようと思います。
これには、apacheのモジュールを追加します。

# apt-get install libapache2-svn

そして、dav_svn.confモジュールを書き換えて有効にします

# emacs /etc/apache2/mods-available/dav_svn.conf

(コメントとか無視して、こうなっていれば良い)


DAV svn
SVNAutoversioning on
SVNParentPath /var/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /var/.htpasswd
Require valid-user
Options Indexes
Order allow,deny
allow from all

"" は、svnへのアクセスするためのアドレスが入ります。
"http://${ホスト名}/svn"としたときにsvnにアクセスできます。

"SVNParentPath /var/svn" は、svnリポジトリが格納されているフォルダを設定します。
複数個のリポジトリを設定する場合の親フォルダを指定します。
逆に、一つのリポジトリだけを公開したい場合には、
"SVNPath /var/svn/sandbox" の用に記述します。

"AuthUserFile /var/.htpasswd" は、先ほど作成したbasic認証用のパスワードファイルを
設定します。

あとは、モジュールを登録して、apacheを再起動すれば一応の設置作業は完了です。

# a2enmod dav_svn.conf
# /etc/init.d/apache2 restart

windowsからの利用

言わずとも知れた、tortoisesvnを使います。

http://tortoisesvn.tigris.org/

とても便利。

macからの利用

(実は、これを調べるのに結構時間がかかった)
いろいろと試してみたところ、結局はSCPluginが(まだ)使いやすいと思いました。

正直なところ、良いクライアントソフトは見つからないって状況です。
まぁ、しばらくはSCPluginを使ってみようと思います。

  • SCPlugin

http://scplugin.tigris.org/

Finder上から、コミット(commit)/ファイルの追加(add)/ステータス確認(state)/アップデート(update)
なんかができるようになっているのはとても良いけれども、tortoisesvnになれてしまうと物足りない。

ちょっと触ってみたときに不満だった点

  • コミット時に、日本語のコメントでコメントを書いても、logで表示されないn
  • リビジョングラフが使えない
  • diffが使えない
  • iSVN

http://www.einhugur.com/iSvn/

GUIでのsvnクライアント
あんまり触っていないけど、使い方がいまいちわからんかった
内部で、subversionコマンドを使っているようなので、下記のmacsubversion
インストールしておいた方が良い

http://homepage.mac.com/martinott/

コマンドラインベースでの利用に耐えられれば、こいつが最強か?


○ 参考サイト

  • 日々試行と実験

http://golgotha.xrea.jp/archives/2005/12/debian_sarge_ap.html

http://macwiki.sourceforge.jp/
http://macwiki.sourceforge.jp/wiki/index.php?title=Subversion&printable=yes