Merge branch 'ak/format-patch-odir-config'
[gitweb.git] / contrib / completion / git-completion.bash
index 0ec56942f60751a75c02c07ca2d8c7b7785e5201..51f5223e2a373a03963ac20e7ebfc65405fb8eef 100644 (file)
@@ -10,6 +10,7 @@
 #    *) local and remote tag names
 #    *) .git/remotes file names
 #    *) git 'subcommands'
+#    *) git email aliases for git-send-email
 #    *) tree paths within 'ref:path/to/file' expressions
 #    *) file paths within current working directory and index
 #    *) common --long-options
@@ -663,6 +664,7 @@ __git_list_porcelain_commands ()
                check-mailmap)    : plumbing;;
                check-ref-format) : plumbing;;
                checkout-index)   : plumbing;;
+               column)           : internal helper;;
                commit-tree)      : plumbing;;
                count-objects)    : infrequent;;
                credential)       : credentials;;
@@ -1107,7 +1109,7 @@ _git_commit ()
 
        case "$cur" in
        --cleanup=*)
-               __gitcomp "default strip verbatim whitespace
+               __gitcomp "default scissors strip verbatim whitespace
                        " "" "${cur##--cleanup=}"
                return
                ;;
@@ -1310,6 +1312,7 @@ _git_grep ()
                        --full-name --line-number
                        --extended-regexp --basic-regexp --fixed-strings
                        --perl-regexp
+                       --threads
                        --files-with-matches --name-only
                        --files-without-match
                        --max-depth
@@ -1666,7 +1669,10 @@ _git_push ()
 _git_rebase ()
 {
        local dir="$(__gitdir)"
-       if [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then
+       if [ -f "$dir"/rebase-merge/interactive ]; then
+               __gitcomp "--continue --skip --abort --edit-todo"
+               return
+       elif [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then
                __gitcomp "--continue --skip --abort"
                return
        fi
@@ -1708,6 +1714,15 @@ __git_send_email_suppresscc_options="author self cc bodycc sob cccmd body all"
 
 _git_send_email ()
 {
+       case "$prev" in
+       --to|--cc|--bcc|--from)
+               __gitcomp "
+               $(git --git-dir="$(__gitdir)" send-email --dump-aliases 2>/dev/null)
+               "
+               return
+               ;;
+       esac
+
        case "$cur" in
        --confirm=*)
                __gitcomp "
@@ -1732,6 +1747,12 @@ _git_send_email ()
                        " "" "${cur##--thread=}"
                return
                ;;
+       --to=*|--cc=*|--bcc=*|--from=*)
+               __gitcomp "
+               $(git --git-dir="$(__gitdir)" send-email --dump-aliases 2>/dev/null)
+               " "" "${cur#--*=}"
+               return
+               ;;
        --*)
                __gitcomp "--annotate --bcc --cc --cc-cmd --chain-reply-to
                        --compose --confirm= --dry-run --envelope-sender
@@ -1788,7 +1809,7 @@ _git_config ()
                return
                ;;
        branch.*.rebase)
-               __gitcomp "false true"
+               __gitcomp "false true preserve interactive"
                return
                ;;
        remote.pushdefault)
@@ -2110,6 +2131,7 @@ _git_config ()
                http.postBuffer
                http.proxy
                http.sslCipherList
+               http.sslVersion
                http.sslCAInfo
                http.sslCAPath
                http.sslCert
@@ -2274,6 +2296,11 @@ _git_reset ()
 
 _git_revert ()
 {
+       local dir="$(__gitdir)"
+       if [ -f "$dir"/REVERT_HEAD ]; then
+               __gitcomp "--continue --quit --abort"
+               return
+       fi
        case "$cur" in
        --*)
                __gitcomp "--edit --mainline --no-edit --no-commit --signoff"