On Wed, May 05, 2021 at 02:21:38PM -0400, Eric Sunshine wrote: > On Wed, May 5, 2021 at 2:14 PM Jeff King <peff@xxxxxxxx> wrote: > > On Wed, May 05, 2021 at 09:06:12PM +0300, Theodor Negrescu wrote: > > > I ran the command "git config --file ~/git-settings/.gitconfig -l" > > > (git-settings is a repo where I keep my config, the global one is just > > > an include) > > > > I don't think this is a bug in git-config. It is generally the shell > > that is responsible for expanding "~" and passing along the result to > > commands. E.g.: > > > > $ strace -e execve git config --file ~/foo --list > > execve("/home/peff/local/git/current/bin/git", ["git", "config", "--file", "/home/peff/foo", "--list"], 0x7ffc10a88130 /* 55 vars */) = 0 > > > > I'd guess this might be related to Windows somehow. Are you entering the > > command in a bash shell, or via some other mechanism? > > Is OPT_FILENAME supposed to handle tilde-expansion? I ask because > git-config is using OPT_STRING for this option, whereas other commands > use OPT_FILENAME for their `--file` options. No, I don't think so. The point of OPT_FILENAME() is that it handles the directory-change from setting up the git directory before we even the the cmd_*() function. But that isn't necessary here, because cmd_config() applies the prefix manually. So this works as expected: $ git init $ mkdir subdir $ git config --file=foo my.dir root $ git config --file=subdir/foo my.dir sub $ git config --file=foo --list my.dir=root $ cd subdir $ git config --file=foo --list my.dir=sub Possibly the code could be simplified a little by using OPT_FILENAME(), though. -Peff