Gitは3つのレベルの設定値をサポートしているようです。
- 各システムのグローバル設定(次の
/etc/git-core
場所に保存) - ユーザー固有のグローバル設定(に保存
~/.gitconfig
) - 各ストレージのローカル設定(に保存
$REPO/.git/config
)
これらのオプションはほとんどの基盤をカバーしますが、4番目のレベルを処理する方法を探しています。私は(非常に)大きなリポジトリコレクションを持っており、user.email
通常とは異なる値を使用する必要があります。これらのリポジトリは、自動化されたスクリプトを介して作成および操作されることが多く、各リポジトリのローカル設定を指定するのは面倒です。
問題のすべてのリポジトリは、私のローカルシステムの特定のパスプレフィックスの下にあります。そのパスの下のすべてのリポジトリから継承する設定値をどこかに設定する方法はありますか? (.htaccess
設定がファイルシステムに継承されるのと似ています。)もしグローバル設定ファイルに条件付き値を設定する方法はありますか?私のようなストレージセットを処理するためにUNIX環境で他のどのようなアクションをとることができますか?
ベストアンサー1
4番目のレベルでgitを設定する方法が見つかりませんでした。唯一の方法は、各コマンドを無視する設定値を使用するようですgit -c key=value
。
現在私のハッキーソリューションは、シェル関数をgitのラッパーとして定義することです。呼び出されると、システムのgitコマンドに引数を渡しますが、現在の作業ディレクトリを確認し、コマンドに追加の引数を追加する前に引数を渡しません(該当する場合)。
function git () {
case "$PWD" in
/path/to/repos/*)
command git -c [email protected] "$@"
;;
*)
command git "$@"
;;
esac
}