git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2] completion: fix issue with process substitution not working on Git for Windows

From
SZEDER Gábor <szeder@ira.uka.de>
Date
Oct 27, 2011, 09:05 UTC
Message-ID
<20111027090530.GA23424@goldbirke>
In-Reply-To
<1319656389-9515-1-git-send-email-stefan.naewe@gmail.com>
On Wed, Oct 26, 2011 at 09:13:09PM +0200, Stefan Naewe wrote:
Show 34 quoted lines
> 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 'here string'.
> 
> Signed-off-by: Stefan Naewe <stefan.naewe@gmail.com>
> ---
>  contrib/completion/git-completion.bash |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 8648a36..0b3d47e 100755
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -110,6 +110,7 @@ __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 ')"
>  	while read key value; do
>  		case "$key" in
>  		bash.showupstream)
> @@ -125,7 +126,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 <<< "$output"

The $output variable is not declared as local and therefore it leaks into the environment. But instead of declaring it local, why not eliminate it altogether, and use the "$(git config ....)" command substitution as here string?

Gábor
Previous: Stefan NäweNext: Jonas Berlin
Message 8 of 10 in “completion: fix issue with process substitution not working on Git for Windows”
  1. completion: fix issue with process substitution not working on Git for WindowsStefan Naewe, Oct 25, 2011
  2. Johannes SixtOct 25, 2011
  3. Stefan NäweOct 26, 2011
  4. completion: fix issue with process substitution not working on Git for WindowsStefan Naewe, Oct 26, 2011
  5. Junio C HamanoOct 26, 2011
  6. Junio C HamanoOct 26, 2011
  7. Stefan NäweOct 27, 2011
  8. SZEDER GáborOct 27, 2011
  9. Jonas BerlinOct 27, 2011
  10. Jonas BerlinOct 27, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.