25 ポイント 投稿者 ironlung 2023-06-14 | 2件のコメント | WhatsAppで共有

*git のコミットメッセージを書いていて困るとき

  • 絵文字を使い、イシュー番号も入れたコミットメッセージは追跡しやすく、見た目もよい
  • しかし、コミットメッセージが長く複雑になるほど毎回面倒で、ミスも増えがち
  • 毎回適切な絵文字を探すのは苦行

*Git Hooks で git のコミットメッセージを強制する

  • Git Hooks は Git 関連のイベントが発生したときに、こちらで定めたスクリプトを実行する機能
  • この機能はサーバーフックとクライアントフックに分かれる

*サーバーフック: Git の push rule 機能を使う

  • pre-receive フックにコミットメッセージを検査するスクリプトを入れると、サーバーにプッシュされないようにできる
  • GitLab では push rule 機能を使って、正規表現でコミットメッセージを検査できる
  • 正規表現に違反するコミットメッセージを検知すると、そのプッシュを拒否してエラーにする

*クライアントフック: プッシュ前に事前チェックする

  • コミットを最終確定する前段階の commit-msg フックにスクリプトを作成し、コミットメッセージを検査できる
  • コミットメッセージを修正したいなら、prepare-commit-msg フックに関連スクリプトを書く

*Infograb のコミットメッセージ自動化の方法

  • Husky と Commitlint を使って、コミットメッセージ自動化の仕組みを作った
  • Husky は Git Hooks の管理を助ける npm モジュール。.husky ディレクトリ配下にスクリプトを含むフックファイルを作る。その後、npx husky install コマンドを入力すると、そのスクリプトが git に登録される
  • commitlint はコミット規約を簡単に管理し、コミットメッセージを検査するツール。チームで定めたコミット規約を JSON 形式で記述し、その後 commitlint コマンドでメッセージを検査する

1)コミット規約を commitlint 形式で定義

  • コミットメッセージの基本フォーマットをもとに、commitlint.config.ts ファイルに各チームに合った属性を定義

2)Husky に commitlint を登録

  • commit-msg フックに commitlint コマンドを登録。.husky/commit-msg ファイルにスクリプトを入れる

3)自動化を追加

  • 絵文字を付けたり、イシュー番号を挿入したりする作業を自動化
  • Infograb プロダクトチームでは、タイプ(feat, fix)だけ入力すれば絵文字を自動追加し、タイプの先頭文字だけ大文字に自動修正し、ブランチにイシュー番号があれば footer にイシュー番号を自動で付けるよう設定している
  • 自動化スクリプトは prepare-commit-msg フックに入れられる

2件のコメント

 
yangeok 2023-06-20

commitizenと一緒に使っても良いです

 
roxie 2023-06-24

良いツールをありがとうございます