Merge branch 'master' of git://git.kernel.org/pub/scm/gitk/gitk
[gitweb.git] / contrib / completion / git-completion.bash
index 8f27aa9a133fdd601a90e10ee280dfa55728bc09..5ed18215fdefe1c4864ae5c6f01a86a9ff36d012 100755 (executable)
@@ -525,6 +525,11 @@ _git_commit ()
        COMPREPLY=()
 }
 
+_git_describe ()
+{
+       __gitcomp "$(__git_refs)"
+}
+
 _git_diff ()
 {
        __git_complete_file
@@ -636,6 +641,7 @@ _git_log ()
                        --all-match
                        --pretty= --name-status --name-only --raw
                        --not --all
+                       --left-right --cherry-pick
                        "
                return
                ;;
@@ -1019,6 +1025,31 @@ _git_stash ()
        __gitcomp 'list show apply clear'
 }
 
+_git_submodule ()
+{
+       local i c=1 command
+       while [ $c -lt $COMP_CWORD ]; do
+               i="${COMP_WORDS[c]}"
+               case "$i" in
+               add|status|init|update) command="$i"; break ;;
+               esac
+               c=$((++c))
+       done
+
+       if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
+               local cur="${COMP_WORDS[COMP_CWORD]}"
+               case "$cur" in
+               --*)
+                       __gitcomp "--quiet --cached"
+                       ;;
+               *)
+                       __gitcomp "add status init update"
+                       ;;
+               esac
+               return
+       fi
+}
+
 _git ()
 {
        local i c=1 command __git_dir
@@ -1065,6 +1096,7 @@ _git ()
        cherry-pick) _git_cherry_pick ;;
        commit)      _git_commit ;;
        config)      _git_config ;;
+       describe)    _git_describe ;;
        diff)        _git_diff ;;
        fetch)       _git_fetch ;;
        format-patch) _git_format_patch ;;
@@ -1084,6 +1116,7 @@ _git ()
        show)        _git_show ;;
        show-branch) _git_log ;;
        stash)       _git_stash ;;
+       submodule)   _git_submodule ;;
        whatchanged) _git_log ;;
        *)           COMPREPLY=() ;;
        esac
@@ -1112,6 +1145,7 @@ 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_describe git-describe
 complete -o default -o nospace -F _git_diff git-diff
 complete -o default -o nospace -F _git_fetch git-fetch
 complete -o default -o nospace -F _git_format_patch git-format-patch
@@ -1131,6 +1165,7 @@ complete -o default -o nospace -F _git_reset git-reset
 complete -o default -o nospace -F _git_shortlog git-shortlog
 complete -o default -o nospace -F _git_show git-show
 complete -o default -o nospace -F _git_stash git-stash
+complete -o default -o nospace -F _git_submodule git-submodule
 complete -o default -o nospace -F _git_log git-show-branch
 complete -o default -o nospace -F _git_log git-whatchanged
 
@@ -1145,6 +1180,7 @@ 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_bundle git-bundle.exe
 complete -o default -o nospace -F _git_cherry git-cherry.exe
+complete -o default -o nospace -F _git_describe git-describe.exe
 complete -o default -o nospace -F _git_diff git-diff.exe
 complete -o default -o nospace -F _git_format_patch git-format-patch.exe
 complete -o default -o nospace -F _git_log git-log.exe