]> git.ipfire.org Git - thirdparty/git.git/blobdiff - contrib/completion/git-completion.bash
completion: bash: check for alias loop
[thirdparty/git.git] / contrib / completion / git-completion.bash
index 97eccffa4a1e82fc0918649a8c9b901dd14840c9..8fcf464bc3aeac5162afc7801f5f4d82f92a5140 100644 (file)
@@ -1120,11 +1120,16 @@ __git_pretty_aliases ()
 # __git_aliased_command requires 1 argument
 __git_aliased_command ()
 {
-       local cur=$1 last word cmdline
+       local cur=$1 list word cmdline
 
        while [[ -n "$cur" ]]; do
+               if [[ "$list" == *"$cur "* ]]; then
+                       # loop detected
+                       return
+               fi
+
                cmdline=$(__git config --get "alias.$cur")
-               last=$cur
+               list="$cur $list"
                cur=
 
                for word in $cmdline; do
@@ -1148,7 +1153,7 @@ __git_aliased_command ()
                done
        done
 
-       cur=$last
+       cur="${list%% *}"
        if [[ "$cur" != "$1" ]]; then
                echo "$cur"
        fi