threads / discuss / 40490

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

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

## tl;dr

2 messages between Oct 5, 2015 and Sep 26, 2017.

replies: 1people: 2as markdown or json

Valentin Stanciu· Oct 5, 2015, 20:40 UTC · lore
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

bcampolo· Sep 26, 2017, 14:51 UTC · re: Valentin Stanciu · lore

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

My situation was a little different, but I was able to get this to work with some interesting escaping.

helper = !"\"C:\\Path with spaces\\executable\"" --option1 value1 credential-helper $@

Notice the exclamation, quoted path of executable and extra escaped quotes inside of that, plus escaped backslashes.

-- Sent from: http://git.661346.n2.nabble.com/

← back to recent threads