maco's life

主にエンジニアリングと読書について書いていきます。

commitにhookして、gofmtを実行する

golangっぽいコードに整形してくれるgofmtをcommit直前に実行し、 gofmtの結果追加の差分がでたら、1度commitを取りやめるようなcommit hookを書きました。 gofmtは差分があってかつ、拡張子が.goのファイルにのみ実行されます。

デモ

f:id:Maco_Tasu:20150822184311g:plain

コード

gist.github.com

このコードを.git/hooks/pre-commitに書いておけば、commit直前にhookされるようになります。

最後に

複数人でコードを書くような場合に、共通のhooksとしてそれぞれ設定おけば、 必ず整形されたコードのみがcommitされる良い状態になるのかなと考えて書いてみました。

※エディタをきちんと設定しようっていう話で済む気もしますが、別の試みとしてやってみた感じです。