複数のリポジトリにわたってgit設定を設定できますか?

複数のリポジトリにわたってgit設定を設定できますか?

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
}

おすすめ記事