Merge branch 'jb/statcolor'
[gitweb.git] / contrib / completion / git-completion.bash
index 3b1f100f1b27d02d0d923ce2cac3ea087c1da499..46356e8a274a20c4d01f43c60caf98c2e7e1b76a 100755 (executable)
@@ -269,6 +269,7 @@ __git_commands ()
                cvsimport)        : import;;
                cvsserver)        : daemon;;
                daemon)           : daemon;;
+               fast-import)      : import;;
                fsck-objects)     : plumbing;;
                fetch-pack)       : plumbing;;
                fmt-merge-msg)    : plumbing;;
@@ -405,6 +406,35 @@ _git_add ()
        COMPREPLY=()
 }
 
+_git_bisect ()
+{
+       local i c=1 command
+       while [ $c -lt $COMP_CWORD ]; do
+               i="${COMP_WORDS[c]}"
+               case "$i" in
+               start|bad|good|reset|visualize|replay|log)
+                       command="$i"
+                       break
+                       ;;
+               esac
+               c=$((++c))
+       done
+
+       if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
+               __gitcomp "start bad good reset visualize replay log"
+               return
+       fi
+
+       case "$command" in
+       bad|good|reset)
+               __gitcomp "$(__git_refs)"
+               ;;
+       *)
+               COMPREPLY=()
+               ;;
+       esac
+}
+
 _git_branch ()
 {
        __gitcomp "$(__git_refs)"
@@ -415,6 +445,11 @@ _git_checkout ()
        __gitcomp "$(__git_refs)"
 }
 
+_git_cherry ()
+{
+       __gitcomp "$(__git_refs)"
+}
+
 _git_cherry_pick ()
 {
        local cur="${COMP_WORDS[COMP_CWORD]}"
@@ -494,6 +529,7 @@ _git_format_patch ()
                        --signoff
                        --in-reply-to=
                        --full-index --binary
+                       --not --all
                        "
                return
                ;;
@@ -501,6 +537,18 @@ _git_format_patch ()
        __git_complete_revlist
 }
 
+_git_gc ()
+{
+       local cur="${COMP_WORDS[COMP_CWORD]}"
+       case "$cur" in
+       --*)
+               __gitcomp "--prune"
+               return
+               ;;
+       esac
+       COMPREPLY=()
+}
+
 _git_ls_remote ()
 {
        __gitcomp "$(__git_remotes)"
@@ -532,6 +580,7 @@ _git_log ()
                        --author= --committer= --grep=
                        --all-match
                        --pretty= --name-status --name-only
+                       --not --all
                        "
                return
                ;;
@@ -625,7 +674,7 @@ _git_push ()
 _git_rebase ()
 {
        local cur="${COMP_WORDS[COMP_CWORD]}"
-       if [ -d .dotest ]; then
+       if [ -d .dotest ] || [ -d .git/.dotest-merge ]; then
                __gitcomp "--continue --skip --abort"
                return
        fi
@@ -698,7 +747,7 @@ _git_config ()
                __gitcomp "
                        --global --list --replace-all
                        --get --get-all --get-regexp
-                       --unset --unset-all
+                       --add --unset --unset-all
                        "
                return
                ;;
@@ -741,6 +790,7 @@ _git_config ()
                core.legacyHeaders
                core.packedGitWindowSize
                core.packedGitLimit
+               clean.requireForce
                color.branch
                color.branch.current
                color.branch.local
@@ -802,6 +852,32 @@ _git_config ()
        "
 }
 
+_git_remote ()
+{
+       local i c=1 command
+       while [ $c -lt $COMP_CWORD ]; do
+               i="${COMP_WORDS[c]}"
+               case "$i" in
+               add|show|prune) command="$i"; break ;;
+               esac
+               c=$((++c))
+       done
+
+       if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
+               __gitcomp "add show prune"
+               return
+       fi
+
+       case "$command" in
+       show|prune)
+               __gitcomp "$(__git_remotes)"
+               ;;
+       *)
+               COMPREPLY=()
+               ;;
+       esac
+}
+
 _git_reset ()
 {
        local cur="${COMP_WORDS[COMP_CWORD]}"
@@ -863,8 +939,10 @@ _git ()
        am)          _git_am ;;
        add)         _git_add ;;
        apply)       _git_apply ;;
+       bisect)      _git_bisect ;;
        branch)      _git_branch ;;
        checkout)    _git_checkout ;;
+       cherry)      _git_cherry ;;
        cherry-pick) _git_cherry_pick ;;
        commit)      _git_commit ;;
        config)      _git_config ;;
@@ -872,6 +950,7 @@ _git ()
        diff-tree)   _git_diff_tree ;;
        fetch)       _git_fetch ;;
        format-patch) _git_format_patch ;;
+       gc)          _git_gc ;;
        log)         _git_log ;;
        ls-remote)   _git_ls_remote ;;
        ls-tree)     _git_ls_tree ;;
@@ -881,6 +960,7 @@ _git ()
        pull)        _git_pull ;;
        push)        _git_push ;;
        rebase)      _git_rebase ;;
+       remote)      _git_remote ;;
        reset)       _git_reset ;;
        show)        _git_show ;;
        show-branch) _git_log ;;
@@ -898,21 +978,24 @@ _gitk ()
                return
                ;;
        esac
-       __gitcomp "$(__git_refs)"
+       __git_complete_revlist
 }
 
 complete -o default -o nospace -F _git git
 complete -o default -o nospace -F _gitk gitk
 complete -o default -o nospace -F _git_am git-am
 complete -o default -o nospace -F _git_apply git-apply
+complete -o default -o nospace -F _git_bisect git-bisect
 complete -o default -o nospace -F _git_branch git-branch
 complete -o default -o nospace -F _git_checkout git-checkout
+complete -o default -o nospace -F _git_cherry git-cherry
 complete -o default -o nospace -F _git_cherry_pick git-cherry-pick
 complete -o default -o nospace -F _git_commit git-commit
 complete -o default -o nospace -F _git_diff git-diff
 complete -o default -o nospace -F _git_diff_tree git-diff-tree
 complete -o default -o nospace -F _git_fetch git-fetch
 complete -o default -o nospace -F _git_format_patch git-format-patch
+complete -o default -o nospace -F _git_gc git-gc
 complete -o default -o nospace -F _git_log git-log
 complete -o default -o nospace -F _git_ls_remote git-ls-remote
 complete -o default -o nospace -F _git_ls_tree git-ls-tree
@@ -923,6 +1006,7 @@ complete -o default -o nospace -F _git_pull git-pull
 complete -o default -o nospace -F _git_push git-push
 complete -o default -o nospace -F _git_rebase git-rebase
 complete -o default -o nospace -F _git_config git-config
+complete -o default -o nospace -F _git_remote git-remote
 complete -o default -o nospace -F _git_reset git-reset
 complete -o default -o nospace -F _git_show git-show
 complete -o default -o nospace -F _git_log git-show-branch
@@ -937,6 +1021,7 @@ complete -o default -o nospace -F _git_add git-add.exe
 complete -o default -o nospace -F _git_apply git-apply.exe
 complete -o default -o nospace -F _git git.exe
 complete -o default -o nospace -F _git_branch git-branch.exe
+complete -o default -o nospace -F _git_cherry git-cherry.exe
 complete -o default -o nospace -F _git_diff git-diff.exe
 complete -o default -o nospace -F _git_diff_tree git-diff-tree.exe
 complete -o default -o nospace -F _git_format_patch git-format-patch.exe