]> git.ipfire.org Git - thirdparty/git.git/blobdiff - contrib/completion/git-completion.bash
completion: add missing general options
[thirdparty/git.git] / contrib / completion / git-completion.bash
index 554e30e961b1459817442c2eb11166c768fa0ec2..b837704a85e30c0ced828e288508d831a394d558 100755 (executable)
@@ -94,9 +94,10 @@ __gitdir ()
 __git_ps1_show_upstream ()
 {
        local key value
-       local svn_remote=() svn_url_pattern count n
+       local svn_remote svn_url_pattern count n
        local upstream=git legacy="" verbose=""
 
+       svn_remote=()
        # get some config options from git-config
        local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
        while read -r key value; do
@@ -137,7 +138,7 @@ __git_ps1_show_upstream ()
                        svn_upstream=${svn_upstream[ ${#svn_upstream[@]} - 2 ]}
                        svn_upstream=${svn_upstream%@*}
                        local n_stop="${#svn_remote[@]}"
-                       for ((n=1; n <= n_stop; ++n)); do
+                       for ((n=1; n <= n_stop; n++)); do
                                svn_upstream=${svn_upstream#${svn_remote[$n]}}
                        done
 
@@ -166,10 +167,8 @@ __git_ps1_show_upstream ()
                        for commit in $commits
                        do
                                case "$commit" in
-                               "<"*) let ++behind
-                                       ;;
-                               *)    let ++ahead
-                                       ;;
+                               "<"*) ((behind++)) ;;
+                               *)    ((ahead++))  ;;
                                esac
                        done
                        count="$behind  $ahead"
@@ -305,16 +304,16 @@ __git_ps1 ()
        fi
 }
 
-# __gitcomp_1 requires 2 arguments
 __gitcomp_1 ()
 {
-       local c IFS=' '$'\t'$'\n'
+       local c IFS=$' \t\n'
        for c in $1; do
-               case "$c$2" in
-               --*=*) printf %s$'\n' "$c$2" ;;
-               *.)    printf %s$'\n' "$c$2" ;;
-               *)     printf %s$'\n' "$c$2 " ;;
+               c="$c$2"
+               case $c in
+               --*=*|*.) ;;
+               *) c="$c " ;;
                esac
+               printf '%s\n' "$c"
        done
 }
 
@@ -726,6 +725,9 @@ __git_complete_remote_or_refspec ()
 {
        local cur_="$cur" cmd="${words[1]}"
        local i c=2 remote="" pfx="" lhs=1 no_complete_refspec=0
+       if [ "$cmd" = "remote" ]; then
+               ((c++))
+       fi
        while [ $c -lt $cword ]; do
                i="${words[c]}"
                case "$i" in
@@ -743,7 +745,7 @@ __git_complete_remote_or_refspec ()
                -*) ;;
                *) remote="$i"; break ;;
                esac
-               c=$((++c))
+               ((c++))
        done
        if [ -z "$remote" ]; then
                __gitcomp_nl "$(__git_remotes)"
@@ -776,7 +778,7 @@ __git_complete_remote_or_refspec ()
                        __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
                fi
                ;;
-       pull)
+       pull|remote)
                if [ $lhs = 1 ]; then
                        __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_"
                else
@@ -983,7 +985,7 @@ __git_find_on_cmdline ()
                                return
                        fi
                done
-               c=$((++c))
+               ((c++))
        done
 }
 
@@ -994,7 +996,7 @@ __git_has_doubledash ()
                if [ "--" = "${words[c]}" ]; then
                        return 0
                fi
-               c=$((++c))
+               ((c++))
        done
        return 1
 }
@@ -1117,7 +1119,7 @@ _git_branch ()
                -d|-m)  only_local_ref="y" ;;
                -r)     has_r="y" ;;
                esac
-               c=$((++c))
+               ((c++))
        done
 
        case "$cur" in
@@ -1656,7 +1658,7 @@ _git_notes ()
                __gitcomp '--ref'
                ;;
        ,*)
-               case "${words[cword-1]}" in
+               case "$prev" in
                --ref)
                        __gitcomp_nl "$(__git_refs)"
                        ;;
@@ -1682,7 +1684,7 @@ _git_notes ()
        prune,*)
                ;;
        *)
-               case "${words[cword-1]}" in
+               case "$prev" in
                -m|-F)
                        ;;
                *)
@@ -2091,6 +2093,7 @@ _git_config ()
                core.whitespace
                core.worktree
                diff.autorefreshindex
+               diff.statGraphWidth
                diff.external
                diff.ignoreSubmodules
                diff.mnemonicprefix
@@ -2277,7 +2280,7 @@ _git_config ()
 
 _git_remote ()
 {
-       local subcommands="add rename rm show prune update set-head"
+       local subcommands="add rename rm set-head set-branches set-url show prune update"
        local subcommand="$(__git_find_on_cmdline "$subcommands")"
        if [ -z "$subcommand" ]; then
                __gitcomp "$subcommands"
@@ -2285,9 +2288,12 @@ _git_remote ()
        fi
 
        case "$subcommand" in
-       rename|rm|show|prune)
+       rename|rm|set-url|show|prune)
                __gitcomp_nl "$(__git_remotes)"
                ;;
+       set-head|set-branches)
+               __git_complete_remote_or_refspec
+               ;;
        update)
                local i c='' IFS=$'\n'
                for i in $(git --git-dir="$(__gitdir)" config --get-regexp "remotes\..*" 2>/dev/null); do
@@ -2568,7 +2574,7 @@ _git_tag ()
                        f=1
                        ;;
                esac
-               c=$((++c))
+               ((c++))
        done
 
        case "$prev" in
@@ -2621,7 +2627,7 @@ _git ()
                --help) command="help"; break ;;
                *) command="$i"; break ;;
                esac
-               c=$((++c))
+               ((c++))
        done
 
        if [ -z "$command" ]; then
@@ -2634,8 +2640,10 @@ _git ()
                        --version
                        --exec-path
                        --html-path
+                       --info-path
                        --work-tree=
                        --namespace=
+                       --no-replace-objects
                        --help
                        "
                        ;;