completion: fix completing args of aliased "push", "fetch", etc.
Some commands need the first word to determine the actual action that is being executed, however, the command is wrong when we use an alias, for example 'alias.p=push', if we try to complete 'git p origin ', the result would be wrong because __git_complete_remote_or_refspec() doesn't know where it came from. So let's override words[1], so the alias 'p' is override by the actual command, 'push'. Reported-by: Aymeric Beaumet <aymeric.beaumet@gmail.com> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
68773ac915
commit
880111c11b
@ -2564,6 +2564,7 @@ __git_main ()
|
|||||||
|
|
||||||
local expansion=$(__git_aliased_command "$command")
|
local expansion=$(__git_aliased_command "$command")
|
||||||
if [ -n "$expansion" ]; then
|
if [ -n "$expansion" ]; then
|
||||||
|
words[1]=$expansion
|
||||||
completion_func="_git_${expansion//-/_}"
|
completion_func="_git_${expansion//-/_}"
|
||||||
declare -f $completion_func >/dev/null && $completion_func
|
declare -f $completion_func >/dev/null && $completion_func
|
||||||
fi
|
fi
|
||||||
|
@ -104,6 +104,7 @@ __git_zsh_bash_func ()
|
|||||||
|
|
||||||
local expansion=$(__git_aliased_command "$command")
|
local expansion=$(__git_aliased_command "$command")
|
||||||
if [ -n "$expansion" ]; then
|
if [ -n "$expansion" ]; then
|
||||||
|
words[1]=$expansion
|
||||||
completion_func="_git_${expansion//-/_}"
|
completion_func="_git_${expansion//-/_}"
|
||||||
declare -f $completion_func >/dev/null && $completion_func
|
declare -f $completion_func >/dev/null && $completion_func
|
||||||
fi
|
fi
|
||||||
|
Reference in New Issue
Block a user