普段 git の commit message を丁寧に書かかないことをチクリと刺され辛い... ってなってるエンジニアです。
日本語読むの疲れるって人に
gitのcommit messageを綺麗にしたいけど、linter よくわからん!!!って人に向けたツールを作ったので使ってください。
雰囲気
<type>(<scope>): <subject>
のフォーマットに沿わない commit messageにすると git commit を失敗させます。
導入方法
# go言語使ってない人はこれを機に brew install golang してくれ
go install github.com/masahiro331/go-commitlinter@0.1.0
# repositoryのディレクトリに入って入力
echo "go-commitlinter" >> .git/hooks/commit-msg
chmod 755 .git/hooks/commit-msg
ここから下、純粋なポエムです。
目的
汚いgitのcommit messageを綺麗にするためのlinterを作りました。
背景
gitの commit message に対する linter は世の中にたくさんあるんですが、多くの機能と豊富なドキュメントを前に「英語が読めない」「ドキュメント読めない」「というか入れ方わからん」みたいな気持ちに毎回なり、ずっと linter を入れるのを先延ばしにしてました。
普段ContributeしているOSSについに CONTRIBUTING.md(commit messageの規約とか書いてるやつ) が追加されたため、もうちゃんとするしか無いじゃん... でもlinterとかよくわからん...ってなった結果、自作で最小機能のlinterを作りました。
コンセプト
コンセプトという名の機能を作らない言い訳を書きます。
とりあえず、ルールとかyamlでインポートしようかな?とか色々考えて機能を追加したんですが、原点に振り返ると「こういう機能が俺のLinter導入を忌避したのでは??」となり全部消しました。
2022/2/8 追記
なんか必要そうな気持ちにもなったのでルールをyamlでインポートできるようにしました。デフォルト値が存在するので基本意識せずに使ってもらえるように変更
機能追加 2022/2/8 追記
ContributeしているOSSがPull Requestのタイトルに <type>(<scope>): <subject>
のフォーマットを必須としているので、PR時に検知できるようなGitHub Actionsを作成しました。
こんな感じのyamlを .github/workflow/pr_title_test.yamlとして追加すればいい感じにPRのタイトルを見てダメなタイトルを検知してくれます。
name: PR Title linter
on:
pull_request:
env:
GO_VERSION: "1.17"
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Go pull request message linter
uses: masahiro331/go-commitlinter@0.1.0
env:
PR: ${{ github.event.number }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
最後に
このツールは十分な機能を提供するものではなく、とりあえずなんか入れておこうという人に向けたツールです。
豊富な機能を持つ Linterに導入する前に、とりあえず使うツールとして使ってもらえれば嬉しいです。
ちなみにこのlinterを導入しても結局雑にmessageを書いてしまう... ってなってます。
「三つ子の魂百まで」ですね