どうもこんにちは。エンジニアブログ編集部の久保田です。
もうすっかり寒くなってきましたね。
寒くなると心も体も寂しくなってきてしまいます。
ここ最近の僕は、家に帰っても慰めてくる人はおろか話し相手もおらず、大して面白くないテレビに大爆笑して寂しさを紛らわす毎日です。
もちろんそんなメンタルでは勉強も進みません。
このままではまずいと思い、僕はあることを閃きました。
それは、
「git commit のたびに、自分の開発を労ってくれるシステムを作ろう」
といういかにもエンジニアらしい画期的なアイディアです。
今回紹介するgitの機能は、「フックスクリプト」というものです。
こちらは、決まった形式でスクリプトを用意しておくと、
gitのあるアクションが行われたときにそのスクリプトが動いてくれる機能です。
フックスクリプトを動かすことのできるアクションはバージョンによっても違ってきますし、
説明してくれている記事もたくさんあるので、詳細は割愛します。
では早速実装して行きます。
フックスクリプトは、.git/hooks以下のファイルに手を加えることで動作します。
ファイルの種類はこんな感じです。
今回は、赤で囲んである、commitした後に労ってほしいので、「post-commit」に処理を書いていきます。
(初期状態では、post-commit.sampleという風になっていますので、動作をさせたい場合は、.sampleを消してください。)
とりあえず、何かしゃべらせましょう。(rubyで書きますが、出力さえできればなんでもよいです。)
# coding: utf-8puts 'お疲れさま!'
実行します。
git add hoge.txtgit commit -m 'hoge'
・・・できてしまいました。
何でしょう、何かもっと寂しくなった気がします。。。
何かが足りませんね。。。
「にぎやかさ」かも知れません。
ということでにぎやかにしてみましょう。
yum -y install figlet
にぎやかさがほしいので、英語でお疲れ様を言ってもらいましょう。
先ほどの4行目を、以下のように書き換えます。
exec('figlet You’ve gotta be tired !!')
惜しい!まだ少し、何かが足りない!
今度は絵を足してみましょう。
yumで、cowsayを落としてまた4行目を以下のように書き換えます。
system('cowsay -f dragon-and-cow お疲れ!')
なんか楽しくなってきましたね!
ただいつも同じでは楽しくないので、いくつかパターンを用意して、ランダムで表示を変えるようにしました。
# coding: utf-8arr_praise = ['You’ve gotta be tired.', 'good job !!', 'You work hard today', 'Do your best!' ,'Thanks for your great work.' ]arr_other = ['Work hard!', 'If today were the last day of my life, would I want to do what I am about to do today?' ]cowsay_list = (`cowsay -l`).split[4..-1]case rand(4)when 0system("figlet #{arr_praise.sample}")when 1system("cowsay -f #{cowsay_list.sample} #{arr_praise.sample}")when 2system('cowsay -f vader NO, I AM YOUR FATHER...')when 3case rand(11)when 10system("sl")elsesystem("figlet #{(arr_praise + arr_other).sample}")system("cowsay -f #{cowsay_list.sample}")endend
case文のオンパレードになってしまいましたが、ランダムでいろいろ出てくるようになりました。こちら、ぜひお試しください。たまにダースベーダーがでます。 さらにもっとたまにSLが走ります。
今回はこうして自分を慰めてみましたが、
ほかにも、たとえば
・pushしたらAPIでコミュニケーションツールに投稿
・特定のブランチに直接マージできないようにする
・コミットしたらlog以外にも記録して行く
・上司のgitにこっそりしこんでびっくりさせる
・同僚の誕生日にサプライズ
など、発想しだいで上司にほめられるようなシステムつくりからお遊びまで、いろいろできちゃいますね!
みなさんもぜひやってみてください!
では、よきgitライフを!