OSX SVNでカタカナが化けちゃうよ問題解決

subversion
MacbookProを買いかけて1ヶ月以上経過しました。
DreamweaverCS5 for Macの購入を機会に作業の一部をMacbookProに移動したところ、思いのほか快適だったので、現在windowsデスクトップの作業メイン環境からの移行も考え中です。

メインにしなかった一番大きな理由
SVN(subversion)コミット時にファイル名が日本語の場合、化けちゃう事。
ターミナルからのコミットですが、化けちゃうよということでわざわざParallelsから起動したwindows XPからコミットしていましたが、直接コミットできたほうが楽ということで変更することにしました。

■参考にさせていただいたサイト
http://blog.yakitara.com/2009/08/port-install-subversionunicodepath.html

MacPortsからのインストールでした。
実はMacPortsは使った事が無かったため、今回はじめてインストール。
インストール方法については、
TheMacPortsWiki/InstallingMacPorts – MacPortsWiki-JP
http://lapangan.net/darwinports/index.php?TheMacPortsWiki%2FInstallingMacPorts
を参考にさせていただきました。

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のコードを読んでみる。
 

TRACチケット駆動開発(試行錯誤中)

現在自社サイトリニューアルのため、CodeIgniterでサイトを構築中です。
で、1人作業をしているわけですが、開発タスクのTracのチケットを仕様、設計メモにしてみました。

  • チケット登録時に実装する機能の資料をチケットに記載
  • 関連するDBのテーブル定義
  • コーディングルール(意識して気をつけて書いてる点)
  • Class,function,責務,URLの一覧
  • 各責務の特徴、主な役割
  • 実装作業したリビジョン番号をメモ的に記載

実際に作業をしてみると、作業最中は、作っている機能のチケットのページをずっと開きっぱなしで作業をしてます。

修正すべき項目は即時に修正。
ドキュメントとして保存しておくべき項目をすぐに追記。

そのチケットが終わる頃にはチケットが最終のドキュメントになることを狙っています。
実際作業をしてみると、チケットに書いてある内容を元に、PHPdoc形式で書くのに作業がスムーズでした。
目の前の作業中に目の前に資料がある状態のおかげで作業にも集中できました。

しばらく一人作業の場合はこの方法を練ってみて、
うまくいくようであれば事務所に導入してみようと思います。

Dreamweaver CS4 beta

SVNが使える!
チェックアウト、コミットボタンがファイル管理の窓にある!(感涙)

Dreamweaver CS4 パブリックベータ

一番最初のチェックアウトの時に、なぜかチェックインを使う不思議なUIなのですが非常に使いやすいです。
確かに個別のファイルのログを追いにくいということで、eclipseの連動に比べると機能は少ないです。
eclipseの連動を期待して使うと、物足りないかもしれない。
でも、機能が少ない分、実際にコードを書いてブランチにコミットしていくものとしては、迷いが無く使いやすいです。

常に何かブラウザを立ち上げている私としては、その部分はTRACで確認でも良いと思うし、
他のSVNクライアントソフトを使うので良いと思うので、十分♪

今作業をしているファイルをテストのためにFTPでUPする。
うまく動いたらそのファイルをコミットする。
1タスク(1チケットかも)がまとまったら、trunkへマージという流れができるなぁと想像すると、わくわくドキドキ。

楽しみです。

LINUX版SVNのGUIクライアント(備忘録)

kdesvnKDEのSVNクライアント kdesvn
http://kdesvn.alwins-world.de/trac.fcgi

ちょっとだけ触ってみたわけですが、自宅サーバにてOpenSSLで運用しているMyレポジトリに接続しようとすると、

このSSLって信用できないよ?接続しないよ?

という感じのアラートがあがり、接続に失敗します(>_<)
これは、ターミナルで一度そのサーバのレポジトリに接続し、接続を受け入れるかどうかの問い

拒否しますか(R)、一時的に承認しますか(t)、常に承認しますか(p)

に対して、一度(p)で承認をしてしまえば、あっさりと表示がされました。

TODO:もうすこしkdesvnを調べてみる
TODO:EmacsをFedora環境にインストールしてみる
TODO:eclipseもインストールしてみる(仕事用)
TODO:Mac上のメッセンジャー類でコミュニケーションをとりつつ、Linux環境で開発環境になる(とよいなぁ)

追記
2008.08.07 Mac環境で開発しちゃえばいいじゃん。MAMPも入ってるし・・・という気分に少し・・・・