completion: bash: check for alias loop
We don't want to be stuck in an endless cycle. 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
9414938c34
commit
c2822a842d
@ -1120,11 +1120,16 @@ __git_pretty_aliases ()
|
|||||||
# __git_aliased_command requires 1 argument
|
# __git_aliased_command requires 1 argument
|
||||||
__git_aliased_command ()
|
__git_aliased_command ()
|
||||||
{
|
{
|
||||||
local cur=$1 last word cmdline
|
local cur=$1 list word cmdline
|
||||||
|
|
||||||
while [[ -n "$cur" ]]; do
|
while [[ -n "$cur" ]]; do
|
||||||
|
if [[ "$list" == *"$cur "* ]]; then
|
||||||
|
# loop detected
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
cmdline=$(__git config --get "alias.$cur")
|
cmdline=$(__git config --get "alias.$cur")
|
||||||
last=$cur
|
list="$cur $list"
|
||||||
cur=
|
cur=
|
||||||
|
|
||||||
for word in $cmdline; do
|
for word in $cmdline; do
|
||||||
@ -1148,7 +1153,7 @@ __git_aliased_command ()
|
|||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
cur=$last
|
cur="${list%% *}"
|
||||||
if [[ "$cur" != "$1" ]]; then
|
if [[ "$cur" != "$1" ]]; then
|
||||||
echo "$cur"
|
echo "$cur"
|
||||||
fi
|
fi
|
||||||
|
Reference in New Issue
Block a user