git フック 

git フックを使うことで Pamflet は可愛いオモチャからデジタル印刷機へと変身する。 コントロール権を持っているサーバ (持ってるよね?) にセットアップすることで push するたびに自動的に公開されるドキュメントが更新されるようになる。

サーバに --bare git リポジトリを持っているなら、hooks/ サブディレクトリは既にあるはずだ。hooks/ 内に post-update というファイルを作成するか変更するかして以下のように書く:

#!/bin/sh
HOME=/home/me
DOCB=$HOME/app/my_doc_build
PUB=$HOME/app/my_pub
cd $DOCB
env -i git pull
cd -
$HOME/bin/pf $DOCB/docs $PUB

DOCB は同じレポジトリのクローンで、これはワーキングツリーを持つ。 PUB は最終的な html とその他のファイルが出力される。 git のフックは奇妙な環境で実行されるので、明示的に HOME で home ディレクトリも指定する。

全てをセットアップして、さらにこのフックスクリプトを実行可能にする。 さもなくば何故スクリプトが実行されないのか分からず、混乱状態になる~/bin/pf が実行可能かも確認しておこう。

bare リポジトリにどこからか push すると、通常の git の出力と一緒に Pamflet が成功したかエラーになったかのメッセージも表示されるはずだ。 (このスクリプトは確かにヘナチョコなものだけど、代案があればこの pamflet を fork してほしい。)

Fork me on GitHub