はじめに
- 最近git-hooks(pre-push)を育てていて自分なりに試行錯誤し、まぁこれぐらいで一度使い続けてみようか思ったので残す
- pre-push以外も色々と試したが、自分的にはgithubにpushするタイミング(1日に数回程度)がちょうど良いと思ったのでpre-pushのみ
環境
- Mac OS X El Capitan
- git version 1.8.4
- 本流のブランチを masterとする
pre-push
pushする前に自分のPCで稼働するスクリプト
設定した処理
1:masterブランチへpushする際はy/nの対話式で動く
- 仕事ではmasterブランチへのpushは禁止なんですが、個人的なレポジトリにはmasterにpushする機会が多いということで(y/n)を入力して実行するようにした
➜ git-tools git:(master) git push origin master
Are you ok to pushing master branch? [y/n] y
pushing master....
2:新規ブランチを作ってpushした時に心機一転スタートする気持ちにさせる
- 新規ブランチを切る時はだいたい新規のPRも立ててスタートする時です(だいたいね)。
- 毎日味気ないのでスタートなので、よしやるぞという気持ちになるように工夫してみたが、まぁしょうもいないです
- どうでも良いアスキーアートをランダムで出力してみた。
➜ test git:(test_branch) git push origin test_branch
_________________________________________
< Grow the Well Pull Request(this branch) >
-----------------------------------------
\ , ,
\ /( )`
\ \ \___ / |
/- _ `-/ '
(/\/ \ \ /\
/ / | ` \
O O ) / |
`-^--'`< '
(_.) _ ) /
`.___/` /
`-----' /
<----. __ / __ \
<----|====O)))==) \) /====
<----' `--' `.__,' \
| |
\ /
______( (_ / \______
,' ,-----' | \
`--{__________) \/
Counting objects: 5, done.
Writing objects: 100% (3/3), 263 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
3:ブランチを育てるcommitを繰り返しpushする際に意識を上げるメッセージの表示と最適なレビューアーを表示する
- 新規ブランチ(新規PR)を立てたらmergeしてもらうまで育てる必要があります
- issueにもよるが、長いこと育てる必要がある場合もあり、心が折れそうになったりする。。。
- そこで意識高い系のメッセージとねぎらいのメッセージを表示
- 変更ファイルからgit blameで関係しているauthorをカウントして最適なレビューアーを表示します
➜ makuake git:(feature/590_aws_sqs) git push origin feature/590_aws_sqs
.oooooo. .o8 o8o .o8 .o.
d8P' `Y8b "888 `"' "888 888
888 .ooooo. .ooooo. .oooo888 oooo .ooooo. 888oooo. 888
888 d88' `88b d88' `88b d88' `888 `888 d88' `88b d88' `88b Y8P
888 ooooo 888 888 888 888 888 888 888 888 888 888 888 `8'
`88. .88' 888 888 888 888 888 888 888 888 888 888 888 .o.
`Y8bood8P' `Y8bod8P' `Y8bod8P' `Y8bod88P" 888 `Y8bod8P' `Y8bod8P' Y8P
888
.o. 88P
`Y888P
======================================= One Essay =======================================
API設計の黄金律 "http://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/%E3%82%A8%E3%83%83%E3%82%BB%E3%82%A4/API%E8%A8%AD%E8%A8%88%E3%81%AE%E9%BB%84%E9%87%91%E5%BE%8B"
======================================= recommend reviewer ==============================
author:AAA...1937pt author:BBB...842pt author:CCC...682pt author:DDD...417pt author:EEE...271pt author:FFF...65pt
=========================================================================================
- one essayは[https://www.oreilly.co.jp/books/9784873114798/] から達人プログラマーたちのお言葉をランダムに表示して、言葉の解説のリンクを表示
- item2の新しいやつ(多分Build2.1.4)を使うと[command]を押しながらクリックするとそのままブラウザで立ち上がるよ
- recommend reviewerはAAAという人が1937ptで一番最適なレビューアーという意味。その次は842ptでBBBさんが最適なレビューアー
公開してるのでリンクを貼っておく
https://github.com/nakamura-tsuyoshi/git-tools
おまけ
-
/usr/local/share/git-core/templates/hooks
に下記のファイルを置いておくと、次回以降gitプロジェクトを新規作成した際(git cloneした時も)に自動で設定される(macの場合)- pre-push(permissonを755へ)
- cowsay.rb
- essay.rb
- reviewer.rb
まとめ・雑感
- まぁそんなに大した話ではないですね。
- 日々行うコーディングのレベルを意識によって少しでも上げられれば良いなと
- 最適なレビューアーの算出は、削除された変更は考慮されないのでイマイチかなぁと感じてきた
- こっちのがいいかも。 https://github.com/facebook/mention-bot