SubversionとWebdavとhocks

subversion
SubversionとWebdavとhocksでwebdavにコミットした内容を、コミットした直後に、動作確認をプロジェクトメンバー皆で確認できる環境が欲しいなと思い、環境を作ってみました。

Webdavの利用
webdavからのオートコミットであるという定型文がコミットログとして保存されます。
大きなメリットとしては、dreamweaverではFTPを使うのと全く同じ操作感でファイルをwebdavへUPすることができます。今まで全くwebdavを使ったことが無い人でもFTPでアップしながらの製作作業を行った経験のある方であれば、全く作業の内容を変えることなく、webdavを利用することが出来ます。
新たに覚えることは、dreamweaverでのwebdavサーバの設定方法だけです。
実際の製作内容で、新たに操作方法を覚えたり、普段と違う作業を行うといったことは一切ありません。

webdavはSVNの連動ではなく、webdav単体で利用する場合、アップされたファイルは指定のURLに保存されます。
apacheの拡張機能で、ファイルの操作をapacheが行うので、当然アップされたファイルはすべてapacheユーザのものになるため、パーミッションの問題が発生することはまずありません。
webdavのアクセス権限を制限するために使用する認証情報(ID,PASS)は、ファイルをアップする時にも使え、また表示確認の際、ブラウザ越しにurlへアクセスする場合にベーシック認証として動作するためID,PASSの管理が容易です。

WebdavとSubversionとの連動
subversionとwebdavを連動するように設定すると、webdavへのファイルアップ(削除も…)=コミットとなります。
自動的にsubversionへコミットしたことになります。
subversionクライアントソフトを使う場合との差は、コミットログの登録ができないことです。

webdavからのオートコミットの場合は次のようなコミットログが保存されます

Autoversioning commit:  a non-deltaV client made 
a change to
/xxxxx/xxxxx.text ←コミットしたファイルのパス

オートコミットしたコードの動作確認?
webdav経由でのオートコミットの場合、そのままではwebdav単体での利用とは違い、即ブラウザから表示確認(動作確認)を行うことが出来ません。表示確認を行う場所を作り、表示確認をするまえにsvn updateを実行する必要があります。
あらかじめ、サーバ上に動作環境としてソースコードをチェックアウトしておき、
subversionの機能で、コミットをしたタイミングで、プログラムを実行させるhocksという機能があります。
これを利用し、あらかじめ用意をしておいたサーバ上の動作環境に対して、svn updateを実行します。

レポジトリを設置したディレクトリ/hocks/post-commit.tmpl というファイルをpost-commitというファイルにコピーをして、実行権限をつけます

# cp post-commit.tmpl  post-commit
# chmod 755 post-commit

hocksで実行するファイルを、レポジトリのフォルダの中に設置場所を作り、そこに置きました。

# mkdir レポジトリのフォルダ/script_hocks/
# chmod 755 レポジトリのフォルダ/script_hocks/
# chown apache.apache レポジトリのフォルダ/script_hocks/

実行するファイルを作成

# vi レポジトリのフォルダ/script_hocks/svnupdate.cgi
#!/usr/bin/env python
import os;
result = os.system("svn update [チェックアウトした場所のパス]");

このままだと、svn updateをするapacheユーザがsvnのアカウントの情報をもっていない状態なのでrootで、一時的にapacheでログインできるようにし、svn updateをチェックアウトした場所のパス上で一度実行します。
順番はこんな感じ。

  • apacheが使用するためのsubvsersionのアカウントを作る。(ID,PASSの発行)
  • 上記で作ったアカウントに対してsubvsersionのアクセス権をつける・・・反映させるだけならreadだけでOK
  • サーバ上で、apacheユーザに対して、シェルを使えるように設定する
  • rootからsu apache で、apacheユーザになり、svn updateを実行する。
    • このとき、subversionのIDとPASSを聞かれます。
    • opensslを使用している場合は、接続を許可するかどうかも聞かれます
  • apacheユーザに対して、シェルを使えなくする
    (/sbin/nologinの設定に戻す)

今回試してみた環境

  • subversion-1.4.4-7
  • httpd-2.2.8-1.fc8
  • python-2.5.1-15.fc8

補足的に・・・・

  • OS Fedora 8 (・・・そろそろ入れ替えたい)
  • Trac 0.11.2.1.ja1

関連記事

–TODO
CodeIgniterでTDDができるようにする!
 CIUnitを使ってみる
 DocTestをCodeigniterで使えないか試してみるとかしてみる。
 MyNETS2のコードを読んでみる。
 

WebdabをWindowsから接続してみるメモ

windowsクライアント
Windowsのネットワークプレースがもう少し使い勝手が良いと一番良いのだけれども、結構失敗もあるのでWindows用のクライアントを探してみました。

【無償】http://www.rei.to/carotdav.html

carotDAV
なかなか使い勝手もよさそうな感じです。
Windowsのネットワークプレースで失敗したファイルもあっさりとUPできました。
ファイル名が日本語のものも問題ありませんでした。
フォルダが階層立てで見えなかったりするのが残念ですが、操作性も高く、とてもわかりやすいです。

もうすこし触ってみたいと思います。

【無償】http://www.mylab.jp/program/dddav/

dddav
ためしてみたのは、dddav-0.0.13.2.zip (2009-5-7)と書かれた最新版。
見た目がとてもFTPっぽいです。
フォルダごとアップロードも簡単。
下の部分に、作業の履歴が表示されるのも素敵。
ただし、put getは履歴が表示されるものの、削除時には履歴は表示されないみたい。

【有償】Dreamweaver CS4
Dreamweaver

Dreamweaver CS4でwebdavモードを使ってみました。
FTPを使う感覚と全く同じで使えてすばらしい。
そこそこのサイズのファイルもあっさりとアップできました。
Windowsのネットワークプレースでファイルのアップに失敗したものも、問題なくアップできました。

【無償】http://www.teamfile.com/modules/mydownloads/

ファイルの移動も結構早い印象です。
(Webdavクライアントソフトそれぞれの転送速度を計測はしていませんが・・・・)
ロックがかかっている状態が把握しやすく、わかりやすいです。

感想
元々Dreamweaverは大好きなのですが、ファイルをちょこっとUPしたり、とってきたりするためだけにDreamweaverでサイトを設定しておくのもなんだかなぁと思ったりもしています。使い分ける感じになるかなと思っています。
dddavやcarotdavは、手軽に使いたい場合にとてもよさそう。
がっつり使うなら、TeamFireなのかなという印象でした。

しばらくそれぞれを使いつつ、おちついたもの以外をアンインストールしようかなと思います。

DreamweaverCS4

Dreamweaver

遅ればせながら、CS4を入手。
現在メインの作業環境として、
調整したり、調べたりしつつ愛用中です。

Dreamweaverをメインで使っているわけですが、今回購入したのはWeb Premiam CS4というパッケージ。

はじめてみるソフトもあり、なかなかに楽しそうです。

2台までインストール可能ということのようなので、MacbookProにBootCampでWindowsXP環境を作成し、そこへ2台目をインストールしました。

↓とりあえずやってみたこと。

  • TortoiseSVN の操作を可能に!。
  • CakePHPの.thtml拡張子のファイルの対応
  • スニペットの使い心地を確認。

まだ、Spry特有の機能については、Spry自体の勉強が追いついていなくてできていませんが、楽しみです。

TODO:(そろそろやりたいいろんなこと)

  • スキンジェネレータ NEKOGET PNESKINの情報公開
  • アバタージェネレータ NEKOGET MyFACEの携帯対応と情報の公開
  • 仕事用ホームページのリニューアル(CodeIgniterで製作:あとはテストと設置かなぁ)
  • 読書とレビュー(「オープンソースでメシが食えるか?」読了)

追記

Parallelsからの使用はやはりだめのようです。BootCampと双方で使うのはだめなようです。
1台としてはみなしてくれないようです。残念(><)