Am 25.10.2011 20:01, schrieb Stefan Naewe: > Git for Windows comes with a bash that doesn't support process substitution. > It issues the following error when using git-completion.bash with > GIT_PS1_SHOWUPSTREAM set: > > $ export GIT_PS1_SHOWUPSTREAM=1 > sh.exe": cannot make pipe for process substitution: Function not implemented > sh.exe": cannot make pipe for process substitution: Function not implemented > sh.exe": <(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n '): ambiguous redirect > > Replace the process substitution with a simple "echo $var | while...". > > Signed-off-by: Stefan Naewe <stefan.naewe@xxxxxxxxx> > --- > contrib/completion/git-completion.bash | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash > index 8648a36..926db80 100755 > --- a/contrib/completion/git-completion.bash > +++ b/contrib/completion/git-completion.bash > @@ -110,6 +110,8 @@ __git_ps1_show_upstream () > local upstream=git legacy="" verbose="" > > # get some config options from git-config > + output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')" > + echo "$output" | \ > while read key value; do > case "$key" in > bash.showupstream) > @@ -125,7 +127,7 @@ __git_ps1_show_upstream () > upstream=svn+git # default upstream is SVN if available, else git > ;; > esac > - done < <(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ') > + done > > # parse configuration values > for option in ${GIT_PS1_SHOWUPSTREAM}; do Are you sure that the result still works as intended? The while loop sets a few variables. When you place it in a pipe, the loop runs in a subshell, and subsequent code will not see the modified values. Unless bash knows how to optimize away the subshell, that is. OTOH, when you use while ...; do ...; done < <(...), the while loop is not in a subshell. An alternative is to use: while ...; do ...; done <<< "$output" BTW, you don't need to protect the end-of-line with a backslash if the line ends with the pipe symbol. -- Hannes -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html