絵文字コミット用のcommit templateを作ってみた
会社のプロジェクトで絵文字コミットを導入しているプロジェクトがあり、すごく良かったので自分のプロジェクトでも使ってみる事にしました。
commit templateも合わせて導入してみたので、その際に感じた事も書いていきます。
絵文字コミットとは
絵文字コミットとはなんぞ?という話から。
今回の記事の内容とは少し逸れる話なので簡潔に。
「Gitのコミットメッセージの先頭にEmojiをつけよう」という一種のスタイルガイド
つまり「コミット1つ1つにそのコミットに該当する意味の絵文字付けていこうぜ!」という規則のようなものですね。
ちなみに会社のプロジェクトは、先ほど引用したGoodpatchさんの記事のものを自社プロジェクト用に少しカスタマイズしたものを使用してました。
絵文字コミットについて分かりやすく書かれたとても素晴らしい記事です✨ホレボレ。
Emojiで楽しく綺麗なコミットを手に入れる | Goodpatch Blog
自分が導入しているcommit template
私が2018年2月現在使用しているcommit_templateは以下のようにしています。
↑ gistで公開しています。
コミットテンプレートを作るにあたって以下の記事を参考にさせて頂きましたm(__)m
Gitで絵文字コミットをするために行った3つの準備ステップ - Qiita
基本は1つ目の記事で紹介されているコミットテンプレートに変更を加えています。
実際にプロジェクトに入れて思った事が以下3点ぐらいだったのでその部分を変えています。
- テストやCIを追加した時はどれだろう?
- ドキュメントやコメントをあとから追加・更新した時はどれだろう?
- 文章を短くしないとclipyに表示しきれない(clipyに関してはメリットデメリットの部分で書きます)
そしてコミットメッセージのタイトル部分(1行目)は2つ目の記事のアイディアを拝借させていただきました。
1 2 3 4 5 6 7 |
# ==== Messages ==== # Add 新規 ファイル・機能 追加 # Update 機能修正、既存機能追加(バグではない) # Clean リファクタリング # Remove 削除など # Fix バグ修正 # Upgrade バージョンアップ |
例えば testのscriptをpackage.jsonに追加する
ような場合、
「✨ Add test script for package.json」というコミットタイトルにしています。
この部分が決まっているだけで余計な事考えなくて済むのでかなり助かります。
ただ、問題点はGitHubのコミットタイトルが英語で埋め尽くされ英語がからっきしの自分としては「???」なってしまっているという。。。
カッコつけて英語使うのやめようかな;;
commit templateの使用方法
設定を行う事で git commit
をする度に自分が設定したコミットテンプレートが以下のように表示されるようになります。
① プロジェクト毎に commit template を分ける場合
1 2 3 4 5 6 7 8 9 |
# プロジェクトのルートフォルダで実行する git config commit.template .commit_template # # 前提としてプロジェクトのルートフォルダに .commit_template を作成しておく # cd /path/to/project touch .commit_template # => vimなどで .commit_template を好きなテンプレートの内容に編集 |
② 自分のPCで commit template を揃える場合
1 2 3 4 5 6 7 8 |
git config --global commit.template ~/.commit_template # # 前提として自身のルートフォルダに .commit_template を作成しておく # cd ~ touch .commit_template # => vimなどで .commit_template を好きなテンプレートの内容に編集 |
git config --global commit.template ~/.commit_template
を実施すると ~/.gitconfig
に以下のように記載されています、この部分を直接編集して好きなファイル名・パスにするのでもOKです!
1 2 |
[commit] template = ~/.commit_template |
commit templateは .commit_template
というファイル名にする必要はなく、例えば以下のようにtxtファイルにしても問題ありません。
1 2 |
[commit] template = ~/commitTemplate.txt |
絵文字コミットのメリット・デメリット
実際に絵文字コミットをしてみて、以下のように感じました
- メリット
- コミット粒度が統一される
- パッと見てなんとなくそのコミットが何をやっているかが分かる
- デメリット
- コミットメッセージ打つ時一々絵文字を入れるのがめんどくさいw(本末転倒)
- どの絵文字使えばいいか分からん
それぞれ簡単に感想を
絵文字コミットのメリット
私的には「コミット粒度の統一」が出来ること、それが絵文字コミットを導入する最大の利点に感じています。
絵文字によってコミットの意味が決まり必然的に粒度にも制約が出来ます。
例えば「機能の追加」と「テストの修正」にそれぞれ絵文字を設定する事でそれら2つが同じコミットに含まれることを防ぐ、といった事が出来ます。
余談ですが ↑ のように複数の事を盛り込んだコミットの事をごった煮コミットていうんですね・・w
先ほどのGoodpatchさんの記事に載っていて、的を射ているな、とw
絵文字コミットのメリットは先ほどの記事がとても良く書いてありおすすめ
Emojiで楽しく綺麗なコミットを手に入れる | Goodpatch Blog
絵文字コミットのデメリット
プロジェクトにジョインした人にきちんと説明出来る状況がなく、かつジョインしたばかりの人が絵文字コミットを使った事がないと結構苦しめてしまいます。
下手するとコミットする度に:green_heart:
という文字を打ってもらう事になったり、、、
インターンの学生さんにそういう状況を作ってしまったのは個人的にかなりの反省点。。。
解決法として、まずプロジェクト用の commit template
を作り環境を整えること。
そして私は clipy
というMacのアプリを使う事で少しでも効率良く絵文字を選べるようにしています。
コピーした内容を記憶しておくクリップボード管理アプリですが、スニペットの登録も出来て指定したキーをダブルクリックすると呼び出せ非常に便利!
余談ですがこのClipyを使うアイディア、先ほどインターンで来てくれた学生さんが考えてくれたんですよ!素晴らし過ぎる。
あとエディターによっては絵文字コミットを簡単にしてくれるようなプラグインがあります。
atom・・autocomplete-emojis
JetBrains・・Emoji Prefix
またテンプレートのルールをプロジェクト用にカスタマイズしないと「どの絵文字を使えばいいの?」という事が起きます。
そうなると絵文字の選択に時間を取られたり、ルールがなあなあになって結局絵文字の意味がなくなってしまったり。
あれ?気付いたらほとんどのコミットこの絵文字じゃね?みたいな。
これはプロジェクトのチームメンバーで話し合って決めれば解決かなと思います。
(どれくらいの粒度にする?どういうルールが必要だよね?等々)
あとがき
自分1人のプロジェクトだとしても絵文字が決まっている・タイトル部分のプレフィックスが決まっている、それだけでコミットはしやすくなりました。
ルール化する前よりも粒度も分かりやすくなった気がするし。
そして commit template があるとコミット時に表示されるので、迷う事なく絵文字やプレフィックスが選択出来るところもポイント高いですね。
何より複数人のプロジェクトだとルールを統一出来るところが良いですね、やっぱり人それぞれ思考が違うので、後々見返した時に導入しているか・していないかで粒度が随分違うなって印象を受けます。