背景
詳細は書けないが、
チームメンバーでmasterブランチや開発共有ブランチに、別ディレクトリで作業した古い内容を、ファイルシステムでコピー&ペーストし、直にCommit & Pushされるという事故が多発していたので、色々我慢できず、かつ割と暇だったため、この問題が少しは何とかならないかと考えてタイトルに至った。
結論
以下スクリプトをリポジトリの .git/hooks/post-checkout
に追加。なかったら作る。
branch_name=`git branch | grep '^*' | sed 's/* //'`
git config branch.$branch_name.description && exit 0
過程 tl;dr
「いやー、どうしたら事故らなくなるんだろう。自分がGitにもっと詳しくなったらいいのかなあ」
と思ってGitオブジェクトのことを調べ始めたら、hooksというディレクトリを見つけたので、
「もしかして?」
と思って調べたらあった。
そもそもの話として、あまりこの機能使われてないんじゃないかとも思ったので、利用例としてこれを見ていただければ幸い。
正直な話、ログを読まずに閉じて、
「Pushできません、助けてください」
や、
「コンフリクト起こしたんですが、後よろしくお願いします」
とぶん投げられるので、これを出したところで読まれもせずにTortoiseGitの画面を閉じられて終了だろうが、ないよりはましだと思いたい。
三十路手前での初めてのsedだったが、Vimをやってたおかげで飲み込みは案外容易だった。
参考資料
- ブランチに説明を書く
- 7.3 Git のカスタマイズ - Git フック
- Gitでcommitした時にブランチ名をcommitメッセージに自動でいれる
- sedでこういう時はどう書く?
- UNIX & Linux コマンド・シェルスクリプトリファレンス
追記
こっちを使ったほうがスマートだった?
現在のブランチ名を取得するコマンド
追記2 2020-02-20T15:00
この方法を使うと、説明文表示を共有できるかも(やってない。やる権限がない。現場も違う)。
サーバーサイドフックを組んで抑制するのもありだったな(やってない。当時の現場でも権限がなかった)。