Subject: Unexpected behavior using -c to pass url.<site>.insteadof

From: Eric Brunson <[email-masked]>
Date: Thu, 08 May 2014 16:35:26 -0600

Is this the expected operation using git -c to override gitconfig settings?

This is default behavior:

     $ git ls-remote git://original.site/origin
     fatal: unable to connect to original.site:

This is what I expected, override with an insteadof url using -c on the 
command line:

     $ git -c 
url.ssh://replace.site:1234/.insteadof=git://original.site/ ls-remote 
git://original.site/origin
     ssh: Could not resolve hostname replace.site: Name or service not known

Create a URL in ~/.gitconfig:

     $ git config --global url.ssh://other.site/.insteadof 
git://original.site/
     $ cat ~/.gitconfig
     [url "ssh://other.site/"]
         insteadof = git://original.site/

Works as expected, correctly substitutes other.site for original.site:

     $ git ls-remote git://original.site/origin
     ssh: Could not resolve hostname other.site: Name or service not known

The same -c command as above doesn't override the ~/.gitconfig setting, 
still substitutes other.site:

     $ git -c 
url.ssh://replace.site:1234/.insteadof=git://original.site/ ls-remote 
git://original.site/origin
     ssh: Could not resolve hostname other.site: Name or service not known

I've also reproduced in git 1.9.0 and 2.0.0-rc2.

Am I simply misunderstanding the documentation, it doesn't really 
discuss what should happen with multivar settings?

Thanks,
e.