#author("2022-11-11T04:53:41+09:00","default:ryuichi","ryuichi")
* includeIfでgitconfigを読み分ける [#k30510ce]
** [#ve10aa3f]
** フォルダ、ファイル構成 [#j5b5c61c]
C:\Users\<USER NAME\.gitconfig # グローバルのgitconfig
C:\tmp\my_gitconfig # 読み分けるgitconfig
C:\src\my_repo # 対象のリポジトリ
C:\src\my_repo2 # 同上
C:\src\my_repo3 # 同上
*** グローバルのgitconfigファイルのパス指定 [#ee43983f]
- 環境変数GIT_CONFIG_GLOBALで指定できる
- 例えば '''GIT_CONFIG_GLOBAL=C:\Git\gitconfig''' の場合、Cドライブ直下のGitの中のグローバルのgitconfigになる
*** Linuxのgitconfigのパス指定 [#o531b738]
- 環境変数XDG_CONFIG_HOMEが指定されている場合、それ以下のgitconfigが探索されて、存在しなければ'''$HOME/.gitconfig''' がグローバルのgitconfigになる
- 例えば '''XDG_CONFIG_HOME=~/.config''' の場合、 '''~/.config/git/config''' のconfigファイルがグローバルのgitconfigになる
** グローバルの.gitconfigのパス指定 [#q3339c39]
[user]
name = Taro
email = taro@example.com
[includeIf "gitdir/i:C:/src/"]
path = "C:/tmp/my_gitconfig"
[includeIf "gitdir:$(prefix)/home/"]
path = "linux_gitconfig"
** 解説 [#b5ac05e9]
- 上の設定で、'''C:/src'''以下にあるリポジトリでは'''C:/tmp/my_gitconfig'''を読むようになる
*** 1. gitdirの書き方 [#xa766dbf]
- '''gitdir'''は'''gitdir/i'''として必ずケースインセンシティブにする
- '''gitdir/i'''の後にスペースを付けない
- '''C:/src/'''のように末尾に/スラッシュを付ける
- LinuxなどのUNIX系OSの場合は、'''/home/'''のように'''/'''から始めるパスの場合は'''$(prefix)'''を付けて'''$(prefix)/home/'''とする
*** 2. リポジトリフォルダの中でgitコマンドを実行する [#g5636ec5]
- リポジトリフォルダの中でgitコマンドを実行しないと上の設定は有効にならない
- すなわち、'''cd C:/src/my_repo'''した後に'''git config --list --show-origin'''などで設定を確認する
*** 3. pathの相対指定 [#cd514c91]
- my_gitconfigのパスはグローバルのgitconfigファイルの相対パスとしても書ける
- 例えばグローバルのgitconfigが'''C:\Users\<USER NAME\.gitconfig'''の場合、'''path = "dir1/my_gitconfig"'''は'''C:\Users\<USER NAME\dir1\my_gitconfig'''に相当する
** 参考 [#c0f79d14]
https://git-scm.com/docs/git-config#FILES