Hi, Felipe Contreras wrote: > Felipe Contreras (4): > completion: be nicer with zsh Since I can't find this patch in the mail archive, I'll reply here. Luckily the most important bit is above already. I think I mentioned before that this subject line is what will appear in the shortlog and the shortlog is all that some people will see of the changelog, so it should include a self-contained description of the impact of the patch. However, clearly I did not say it clearly enough. :) I guess it's better to take a cue from storytellers and show rather than tell. (Please don't take this as a precedent --- I will not always be doing the style fixes myself, and sometimes will consider a patch to scratch someone else's itch not worth the trouble and work on something else.) -- >8 -- From: Felipe Contreras <felipe.contreras@xxxxxxxxx> Date: Thu, 2 Feb 2012 03:15:17 +0200 Subject: completion: avoid default value assignment on : true command zsh versions from 4.3.0 to present (4.3.15) do not correctly propagate the SH_WORD_SPLIT option into the subshell in ${foo:=$(bar)} expressions. For example, after running emulate sh fn () { var='one two' printf '%s\n' $var } x=$(fn) : ${y=$(fn)} printing "$x" results in two lines as expected, but printing "$y" results in a single line because $var is expanded as a single word when evaluating fn to compute y. So avoid the construct, and use an explicit 'test -n "$foo" || foo=$(bar)' instead. This fixes a bug tht caused all commands to be treated as porcelain and show up in "git <TAB><TAB>" completion, because the list of all commands was treated as a single word in __git_list_porcelain_commands and did not match any of the patterns that would usually cause plumbing to be excluded. [jn: clarified commit message, indentation style fix] Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx> Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- contrib/completion/git-completion.bash | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 78be1958..d7965daf 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -676,7 +676,8 @@ __git_merge_strategies= # is needed. __git_compute_merge_strategies () { - : ${__git_merge_strategies:=$(__git_list_merge_strategies)} + [ -n "$__git_merge_strategies" ] || + __git_merge_strategies=$(__git_list_merge_strategies) } __git_complete_revlist_file () @@ -854,7 +855,8 @@ __git_list_all_commands () __git_all_commands= __git_compute_all_commands () { - : ${__git_all_commands:=$(__git_list_all_commands)} + [ -n "$__git_all_commands" ] || + __git_all_commands=$(__git_list_all_commands) } __git_list_porcelain_commands () @@ -947,7 +949,8 @@ __git_porcelain_commands= __git_compute_porcelain_commands () { __git_compute_all_commands - : ${__git_porcelain_commands:=$(__git_list_porcelain_commands)} + [ -n "$__git_porcelain_commands" ] || + __git_porcelain_commands=$(__git_list_porcelain_commands) } __git_pretty_aliases () -- 1.7.9 -- 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