Thread (2 messages) flat view 2 messages, 2 authors, 2017-09-26

git config credential.helper with absolute path on windows not working properly

From: Valentin Stanciu <hidden>
Date: 2016-06-15 23:06:46

Hey guys,

I recently found that specifying absolute paths for credential helper
on windows does not work correctly if the path has spaces or non
alphanumeric characters like parentheses. From what I gather it seems
to do with how args are passed to subprocesses.

example:
git config credential.helper "C:\tmp\a (b)\git-credential-helper.cmd"

Running `git config credential.helper` shows that git got the full path:
C:\tmp\a (b)\git-credential-helper.cmd

However, when running `git push`, for example, git has problems
invoking the credential helper. If the path has no spaces or
parentheses, then everything is fine.

I tried countless ways of escaping the path, but couldn't find a
proper way to pass this to git and make it work. Tried adding more
quotes, slashes, and '^' (escape character for batch). Escaping spaces
with slashes seems to work, but couldn't find a way to escape
characters like '(' and '('.
I think git needs to add some escaping or quotes when running the
credential helper.

This affects commands that inline the credential helper too:
git clone https://path.to.repo.com C:\tmp\default --config
credential.helper="c:\tmp\a (b)\git-credential-gcloud.cmd"

Not sure if this is limited to credential helper or any config in git,
but this is a case I could repro easily.

Tested on Windows 7 x64 with all updates installed, from the command
line, using git version 2.6.0.windows.1. Git is installed to be
available from the command line.


Thanks,
Valentin
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help