

WindowsのGitを使っています。  
WindowsとWSLでgitの設定の共通化をするためにincludeを使おうとしたのですが、ホームディレクトリを示すはずの"~"が使えません。

最小限の構成として、~/temp下に

`.gitconfig`

[code]

    [include]
      path = "~/temp/config2"
    
[/code]

`config2`

[code]

    [user]
      name = "Git Tester"
    
[/code]

の2つのファイルを作成しました、

さらに、コマンドラインで以下のコマンドを実行しました。

[code]

    C: /temp > git init
    
    C: /temp > git config include.path ~/temp/config2
    
    C: /temp > git config --list
    core.repositoryformatversion=0
    core.filemode=false
    core.bare=false
    core.logallrefupdates=true
    core.symlinks=false
    core.ignorecase=true
    include.path=~/temp/config2
    
    C: /temp >
    
[/code]

結果は上記の通りで、config2内の`user.name`が表示されません。

環境は、

  * PowerShell 7.3.4
  * git version 2.40.1.windows.1

です。

なんとか、ホームディレクトリからの相対パスでファイルを指定する方法はないでしょうか


CC BY-SA 4.0
2023-05-18T08:11:23.693
94894
2023-05-18T19:08:50.630
2023-05-18T12:24:38.783
4236
44341
question
windows git
Git for Windowsのincludeセクションでpathを~を使って設定するとファイルを読み込まない


理由がわかりました、結論からいうと環境変数HOMEをXDG_CONFIG_HOMEと同じ、`~/.config`にしていたため参照先がずれていました。  
軽く調べたものをまとめると、以下のようになります。

環境変数`HOME` | $HOME | path=~/temp/config2の参照先 | 備考  
---|---|---|---  
なし | c:/Users/<ユーザ名> (PowerShell側で自動的に設定) | ~/temp/config2 |  
c:/Users/<ユーザ名> | c:/Users/<ユーザ名> | ~/temp/config2 |  
c:/Users/<ユーザ名>/.config | c:/<ユーザ名>/.config (PowerShell側では、`~/.config` |
~/.config/temp/config2 |  
  
PowerShell側での`~`が`C:\Users\<ユーザ名>`のままだったので、そこをホームディレクトリとして読み込むと思っていましたが、環境変数として設定したHOMEのディレクトリを基準のホームディレクトリとして参照したため不整合が生じたようです。

対策は、環境変数を設定せずシステムの設定に従うべきということですね

XDG_BASE_DIRECTORY対応は、VIMなどのアプリごとやり直すことにします

以上


CC BY-SA 4.0
2023-05-18T19:08:50.630
94901
2023-05-18T19:08:50.630
44341
94894
answer