pre-commitで`php -l`をする
commit前にlintを動かしたいと思ったので、その設定方法を調べた。php -l
とphp --syntax-check
は同じ。
git管理ディレクトリである.gitの中にあるhooksディレクトリにサンプルがあるので、それを参考にして以下のようなファイルを作成した。
#!/bin/sh # 変更/追加したファイルの一覧を取得する files=$(git diff --cached --name-only --diff-filter=AM) # 取得したファイル一覧をリストとしてphpのlintを実行する php_extension=php end_flag=0 for file in $files; do extension=${file##*.} # 拡張子(.を除く)を取り出すために前方最長一致で変数展開する if [ ${extension} = ${php_extension} ]; then # 拡張子がphpの時のみ構文チェックを行う php --syntax-check $file command_result=${?} # $?は別のコマンドを実行すると置き換わるので変数に格納して繰り返し参照できるようにする if [ ${command_result} != 0 ]; then if [ ${end_flag} = 0 ]; then end_flag=${command_result} fi fi fi done if [ ${end_flag} = 0 ]; then echo 'syntax ok' exit 0 else echo 'syntax error. commit abort' exit 1 fi
これを.git/hooks/pre-commit
として保存すれば、commit前にこのスクリプトが実行される。
注意として、このスクリプト自体をgitで管理することはできない。そのため、他の開発者にも使用してもらいたい場合は別のディレクトリで管理しておいてそちらを参照する設定にするか、開発環境をセットアップする際にhooksへコピーするようなスクリプトを別途用意しておかなければならない。
それとエラーが起きたファイルを修正したらgit add
を忘れないように。stagingされていないので、他のファイルだけcommitされてしまう。
C96お疲れ様でした
こっちでは全然宣伝してなかったので事後報告です。
C96で「アッサムが学ぶCommon Lisp」と銘打った本を頒布しました。 1部300円でした。
既刊も2種類持って行きました。どちらも100円でした。
いや、正直更新頻度あげたい欲求はありますが、ここに書くネタよりQiitaに書くネタの方が見つかってしまうのですよね。 Qiitaにも書いてませんけど。
Common Lispをちょっとやってみたりしているのですが、上達途中の思考を残すためにここを更新するのは結構ありかもと思っています。
C94お疲れ様でした
いや本当に疲れました……。一般でも参加しましたが、始発で行くのは体が許してくれませんね。辛い。
弊サークルの本を手に取ってくださった方、ありがとうございます。
今後はこのブログもまともに稼働させようと思っておりますので、こちらもご贔屓にしていただければ幸いです。
C94頒布情報
無事印刷も終わったので新刊でます。
C942日目、土曜日 東E-08a 十文字情報技術研究所での頒布です。 頒布内容は以下の通りになります。
- アッサムが教えるpuppeteer 300円
また、友人のサークルと合体での参加となります。
取り急ぎご報告まで。