madokaのブログ

勉強したことのoutput先として使ってます。内容はpythonがらみが多いかもです。

自作git hooksをリポジトリを越えて共有する

自作のgit hooksを一つのリポジトリだけでなく他のものでも使いたくて、今まではそれぞれのリポジトリにコピーを持っていていました。ただこの方法だと、編集などが加わるとすべて直さなければいけないことや、というか毎度コピーめんどくさいのです。このような背景から自作のgit hooksテンプレート化しかつシンボリックリンク化することにしました。

作業方法

まずhomeにテンプレートとして使うディレクトリと、リンク先にするhooksのディレクトリを作成します。

$ mkdir ~/.git_template
$ mkdir ~/.git_hooks

ディレクトリの作成ができたら実際にテンプレートにしたいhooksのプログラムを.git_hooksに移動させます。 ここで、他の安全なところでgit initを行い (またはすでに.gitがあるところからでも可)、これによってできた.git/hooksの中身を.git_hooksに移動させておくと新しいhooksを作るときに楽かもです。

# .gitが存在するディレクトリにて
$ cp -r .git/hooks ~/.git_hooks

そして今回のターゲットである自作hooksを.git_hooksに移動させ、実行ができるように権限を変えておきます。

$ chmod 755 `作ったfilepath`

ここまでできたら~/.git_template下にhooksとして配置するようにシンボリックリンクを作成します。

$ ln -s ~/.git_hooks ~./git _template/hooks

シンボリックリンクができたら最後にテンプレートのディレクトリとして登録を行いましょう。

$ git config --global init.templatedir '~/.git_template'

このコマンドを実行すると.gitconfig

[init]
     templatedir = ~/.git_template

が追加されているはずです。

あとは新しく作ったリポジトリで試してみましょう。

まとめ

またひとつ環境改善ができて良かったです。ちょいちょいこういった環境改善をしていければいいですね。。!