Go言語のプログラムをgitで管理する時に便利なこと

  • 24
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Go言語のプログラムをgithubなどにpushする前に必要なことは?

Go言語のプログラムを編集した後、git pushする前にやっておかないといけないのが、go fmtとgo vetですね。正直、私も毎回忘れてしまうんですね。ということで、gitのpre-commitフックを使って、commit前に自動的にやってくれるようにしてみました。

今回のコード

.git/hooks/pre-commit
#!/bin/sh
DIR="<your golang project path>"
PKG=("controller" "model" "body")
ret=0

for name in ${PKG[@]}
do
    goapp fmt ${DIR}/${name}
    ret=$?
    if [ $ret != 0 ]
    then
        exit $ret
    fi

    goapp vet ${DIR}/${name}
    ret=$?
    if [ $ret != 0 ]
    then
        exit $ret
    fi
done

exit $ret

ソースコードは、goappコマンドを使っていますので、GAE/Goのプロジェクトで利用していますが、goのプロジェクトの時は、goコマンドに変更すれば問題なく利用できます。

忘れないように!

私はずっと忘れていました。実行権限をつけることを…。

コマンド
chmod +x .git/hooks/pre-commit

実行権限がないと実行しないようなので、ちょっと残念でした。
(権限チェックとかしてくれないんだろうか…)

導入後

かなり便利になりました。見落としていた所をWarningをだしてくれるので、全て修正してからcommitをすることができるようになりました。
これで、コードの書き方とかで問題が出ることは無くなりそうです(?)

問題点

  • 毎回、.git/hooks/pre-commitを作らないといけないこと。これはしかたがないかな…?
  • go fmtもgo vetもビルド可能なgoファイルがないと実行できないので、パッケージ(ディレクトリ名)を列挙しないといけない。ちょっと面倒かも?
  • チーム開発になったら、全員に配布されるんだろうか…?

Disclaimer

  • この記事は個人的なものです。私の雇用者とは全く関係はありません。(一応つけておきます)