Help us understand the problem. What is going on with this article?

git hookでできること

More than 5 years have passed since last update.

git hookで何ができるかを簡単にまとめた

基本的には以下のページに書いてある事

Gitフック
Customizing Git - Git Hooks

抜粋

  • .git/hooksに配置
  • 適切に命名すれば動く
  • 要実行可能権限(chmod)
  • RubyやPython等で自作可能

クライアントサイドフックの例

pre-commit (コミットメッセージが入力される前)

  • 事前にテストを実行
  • 行末の空白文字の検査
  • ドキュメントの検査
  • コーディングスタイルの検査

prepare-commit-msg (コミットメッセージエディターが起動する直前)

  • テンプレートのコミットメッセージを使う
  • 自動でIssue番号などをメッセージに追加

commit-msg (コミット時)

  • コミットメッセージが要求された様式に沿っているか検査(チケット番号が入っているかなど)

post-commit (コミットプロセスが全て完了した後)

  • 一般的に何かしらの通知といった目的に使用される

サーバーサイドフックの例

pre-receive (プッシュを処理するとき)

  • 更新内容がすべてfast-forwardであることをチェック
  • プッシュしたユーザーが適切なアクセス権を持っているかを調べる

post-receive (プッシュの処理が終了した後)

他のサービスの更新やユーザーへの通知

  • メーリングリストへの投稿
  • 継続的インテグレーションサーバーへの通知
  • チケット追跡システムの更新
  • コミットメッセージを解析して、チケットのオープン・修正・クローズなどの必要性を調べる (Pivotal Trackerとか)

update (pre-receive スクリプトと類似)

ブランチごとに実行されるという点が異なる
など

※Githubの場合はサーバーサイドをスクリプトを使ってカスタマイズすることはできないらしい(?)
 (各Repositoryで Settings > Service Hooks とか GitHub Servicesとやらがある)


git hookはクライアントサイドに関しては、大人数だったり、メンバーの入れ替えが激しい場合はルールを徹底するのが難しいと思う。
サーバーサイドは反対に大人数でも問題ない。


たいぶ前からフックのカスタマイズをやろうやろうと思ったりしてきたが、結局シェルスクリプトのシンタックスなどでつまずいて断念してきた。

最近ようやくRubyで書けばもっと簡単にできると分かりまた気になり出している。

課題はクライアントサイドの一元管理が(調べた限りでは)出来なそうなで変更したら全既存プロジェクトに反映させるのに一手間かかる点。
(.gitignore_globalとかはできるのに)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした