LoginSignup
3
3

More than 5 years have passed since last update.

俺俺git hooks (pre-push)

Posted at

はじめに

  • 最近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

まとめ・雑感

  • まぁそんなに大した話ではないですね。
  • 日々行うコーディングのレベルを意識によって少しでも上げられれば良いなと
  • 最適なレビューアーの算出は、削除された変更は考慮されないのでイマイチかなぁと感じてきた
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3