Gitのコミット後フックを作成しましたが、正常に機能します。ただし、このフックを追加して、現在作業中の(および将来の)すべてのgitリポジトリに適用したいと思います。プロジェクトディレクトリのhooksディレクトリではなく、~/.git/hooks/
にフックを追加しようとしましたが、これは機能していないようです。
システム上のすべてのリポジトリに適用されるグローバルGitフックを作成する方法はありますか(各プロジェクトディレクトリにコピーする必要なし)。そうでない場合、今後の最善の解決策は何でしょうか?おそらくgit-initテンプレートですか?
このフックを追加して、現在作業中の(および将来の)すべてのgitリポジトリに適用します。
Git 2.9+(2016年6月)では、次のことを行うだけです。
git config --global core.hooksPath /path/to/my/centralized/hooks
「 change git hooks 」を参照してください。これは、集中フックを管理するために行われました。
Git 1.7.1以降、gitconfigで init.templatedir を設定して、テンプレートを探す場所をgitに指示できます。
次のように設定します。
git config --global init.templatedir '~/.git_template'
その後、作成または複製する新しいリポジトリは、このディレクトリをテンプレートに使用します。必要なフックを~/.git_template/hooks
に配置します。既存のリポジトリは、git init
と同じディレクトリで.git
を実行することにより、適切なテンプレートで再初期化できます。
1.7.1より古いgitバージョンでは、git init --template ~/.git_template
の実行は、あなたが私のような人で、残りのドットファイルとともに.git_template
dirを管理したい場合に動作します。 $GIT_TEMPLATE_DIR
環境を使用して、テンプレートディレクトリの場所をgit init
に伝えることもできます。
システムのどこにでも(あなた以外のユーザーを含む)必要な場合は、インストールされているテンプレートディレクトリの内容を変更できます。これらは$PREFIX/share/git-core/templates/hooks
にあります。$PREFIX
はおそらく/usr/local
または/usr
。
これを自分だけのものにしたい場合は、はい、最も簡単なのはgit-initの--template
オプションです。保持したいデフォルトのインストール済みバージョン(個々のフック、情報ディレクトリ...)に戻るシンボリックリンクを含む個人用テンプレートディレクトリを簡単に保持し、hooks/post-commit
およびその他の任意のコンテンツに独自のコンテンツを保持できます。カスタマイズ。
最小限のアプローチは、リポジトリにgit_hooks/
ディレクトリを作成して、そのプロジェクト用に作成したフックを追跡し、README
で言及することで将来のユーザーの注意を引き、それらに依存することです。彼らがクローンを作った後に正しいことをする。私はこれについてしばらくの間考えており、漸進的なアプローチを選択しました。将来的には git-hooks のようなツールの使用を検討するかもしれません。