TOPプロジェクト管理> Subversionの「hook」の使い方
PHP開発手法
PHP開発手法

第3回:Subversionによるバージョン管理(後編)

著者:ウノウ  中澤 直也   2006/12/20
前のページ  1  2  3  次のページ
Subversionの「hook」の使い方

   それでは、具体的に「hook」の設定方法を紹介します。

   リポジトリを作成して、モジュールを登録するとモジュールディレクトリの中にhookというディレクトリが作成されています。次の例は、前回作成した「test」モジュールの「hook」ディレクトリの中身です。
$ ls /var/svn/test/hook
post-commit.tmpl
post-lock.tmpl
post-revprop-change.tmpl
post-unlock.tmpl
pre-commit.tmpl
pre-lock.tmpl
pre-revprop-change.tmpl
pre-unlock.tmpl
start-commit.tmpl

   これらのファイルは、「hook」を使うための雛形ファイルです。ファイル名からどのような「hook」かが、想像できると思います。例えば、「post-commit.tmpl」ファイルは、コミット直後の「hook」を設定する雛形ファイルです。

   コミット直後の「hook」を設定するには、雛形ファイルを「post-commit」としてコピーして実行権限を付加します。

$ cp hook/post-commit.tmpl hook/post-commit
$ chmod +x hook/post-commit

   このファイルは、通常のシェルスクリプトファイルとなっているので、リポジトリの更新をしたいときには、次のような形で記述します。

svn update [更新したいリポジトリへのパス]

   ウノウでは、各サービスごとに「共通の開発環境」と「個人の開発環境」を構築しているため、それぞれの環境でテストをすることができます。そのため、変わらない品質でサービスをリリースすることが可能となるのです。


変更内容をメールで通知する

   さきほどの「hook」を使うと、リポジトリにコミットされたとき、変更内容をメールで通知することもできます。

   ウノウではこの仕組みを取り入れて、開発サーバのリポジトリにコミットされた変更内容をメールでエンジニア全員に配信しています。わざわざわエンジニア全員に配信しているのには理由があります。

   それはエンジニア全員でのコードレビューの機会を増やすためです。コードレビューの機会を増やすことによって、ソースコードにセキュリティホールのリスクがあるという指摘や、このソースコードは別の方法でもっと簡潔に書けるといったことがエンジニアの間で議論されるようになり、よりよいソースコードとなるからです。

   それでは、コミット時に変更内容をメールで通知する設定方法を紹介しましょう。

   変更内容をメールで通知するプログラムは、Subversionの中にある「commit-email.pl」に同梱されています。この「commit-email.pl」は、「/usr/share/doc/subversion-1.3.2/tools/hook-scripts/commit-email.pl」に入っています。

   例えば、「hoo@example.com」宛にメールで通知する場合には、先ほど作成した「post-commit」ファイルの中に次のように追記するだけです。

$ /usr/share/doc/subversion-1.3.2/tools/hook-scripts/commit-email.pl "$REPOS" "$REV" -s "メールのタイトルの先頭に付加する文字" hoo@example.com

前のページ  1  2  3  次のページ


ウノウ株式会社  中澤 直也
著者プロフィール
ウノウ株式会社  中澤 直也
1977年生まれ長野県出身。長野県工科短期大学校情報技術科でコンピュータサイエンスを学び、インターネット、シリコンバレー、FreeBSDに興味を持つ。卒業後、県内の工場でインターネットブラウザ、医用画像表示用ディスプレイを管理するウェブアプリケーションや画質調整ソフトウェアの開発業務に携わる。2006年7月よりウノウに参画。現在、写真・動画共有サイト「フォト蔵」を開発中。

フォト蔵
http://photozou.jp

ブログ「dude・・・」
http://www.sssg.org/blogs/naoya


INDEX
第3回:Subversionによるバージョン管理(後編)
  はじめに
Subversionの「hook」の使い方
  Subversionの運用事例