Am 25. Oktober 2011 22:39 schrieb Johannes Sixt <j6t@xxxxxxxx>: > 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. I doesn't work in the 'git svn' case, I guess. > OTOH, when you use while ...; do ...; done < <(...), the while loop is > not in a subshell. > > An alternative is to use: while ...; do ...; done <<< "$output" I'll try that. > BTW, you don't need to protect the end-of-line with a backslash if the > line ends with the pipe symbol. OK. Will do. > -- Hannes Thanks, Stefan -- ---------------------------------------------------------------- python -c "print '73746566616e2e6e6165776540676d61696c2e636f6d'.decode('hex')" -- 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