X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=contrib%2Fcompletion%2Fgit-completion.bash;h=7c03403484f3a52c9588aa3bfc58dea4f394dabe;hb=53a58245863eff3d70aaa3ac75d7d57e843fc91d;hp=1cf576e1e57820ed13bfa9fe583b77779b315502;hpb=72e5e989b8c22dc6dd2b4f889d5d0dabf698b387;p=git.git diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 1cf576e1e..7c0340348 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -64,14 +64,19 @@ __git_ps1 () __gitcomp () { local all c s=$'\n' IFS=' '$'\t'$'\n' + local cur="${COMP_WORDS[COMP_CWORD]}" + if [ $# -gt 2 ]; then + cur="$3" + fi for c in $1; do - case "$c" in - --*=*) all="$all$c$s" ;; - *) all="$all$c $s" ;; + case "$c$4" in + --*=*) all="$all$c$4$s" ;; + *.) all="$all$c$4$s" ;; + *) all="$all$c$4 $s" ;; esac done IFS=$s - COMPREPLY=($(compgen -W "$all" -- "${COMP_WORDS[COMP_CWORD]}")) + COMPREPLY=($(compgen -P "$2" -W "$all" -- "$cur")) return } @@ -214,7 +219,7 @@ __git_complete_file () -- "$cur")) ;; *) - COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur")) + __gitcomp "$(__git_refs)" ;; esac } @@ -226,15 +231,18 @@ __git_complete_revlist () *...*) pfx="${cur%...*}..." cur="${cur#*...}" - COMPREPLY=($(compgen -P "$pfx" -W "$(__git_refs)" -- "$cur")) + __gitcomp "$(__git_refs)" "$pfx" "$cur" ;; *..*) pfx="${cur%..*}.." cur="${cur#*..}" - COMPREPLY=($(compgen -P "$pfx" -W "$(__git_refs)" -- "$cur")) + __gitcomp "$(__git_refs)" "$pfx" "$cur" + ;; + *.) + __gitcomp "$cur." ;; *) - COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur")) + __gitcomp "$(__git_refs)" ;; esac } @@ -250,16 +258,25 @@ __git_commands () do case $i in add--interactive) : plumbing;; + applymbox) : ask gittus;; + applypatch) : ask gittus;; + archimport) : import;; cat-file) : plumbing;; check-ref-format) : plumbing;; commit-tree) : plumbing;; convert-objects) : plumbing;; + cvsexportcommit) : export;; + cvsimport) : import;; cvsserver) : daemon;; daemon) : daemon;; + fast-import) : import;; + fsck-objects) : plumbing;; fetch-pack) : plumbing;; + fmt-merge-msg) : plumbing;; hash-object) : plumbing;; http-*) : transport;; index-pack) : plumbing;; + init-db) : deprecated;; local-fetch) : plumbing;; mailinfo) : plumbing;; mailsplit) : plumbing;; @@ -272,9 +289,13 @@ __git_commands () parse-remote) : plumbing;; patch-id) : plumbing;; peek-remote) : plumbing;; + prune) : plumbing;; + prune-packed) : plumbing;; + quiltimport) : import;; read-tree) : plumbing;; receive-pack) : plumbing;; reflog) : plumbing;; + repo-config) : plumbing;; rerere) : plumbing;; rev-list) : plumbing;; rev-parse) : plumbing;; @@ -285,14 +306,19 @@ __git_commands () show-index) : plumbing;; ssh-*) : transport;; stripspace) : plumbing;; + svn) : import export;; + svnimport) : import;; symbolic-ref) : plumbing;; + tar-tree) : deprecated;; unpack-file) : plumbing;; unpack-objects) : plumbing;; + update-index) : plumbing;; update-ref) : plumbing;; update-server-info) : daemon;; upload-archive) : plumbing;; upload-pack) : plumbing;; write-tree) : plumbing;; + verify-tag) : plumbing;; *) echo $i;; esac done @@ -331,22 +357,19 @@ _git_am () { local cur="${COMP_WORDS[COMP_CWORD]}" if [ -d .dotest ]; then - COMPREPLY=($(compgen -W " - --skip --resolved - " -- "$cur")) + __gitcomp "--skip --resolved" return fi case "$cur" in --whitespace=*) - COMPREPLY=($(compgen -W "$__git_whitespacelist" \ - -- "${cur##--whitespace=}")) + __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" return ;; --*) - COMPREPLY=($(compgen -W " + __gitcomp " --signoff --utf8 --binary --3way --interactive --whitespace= - " -- "$cur")) + " return esac COMPREPLY=() @@ -357,17 +380,16 @@ _git_apply () local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --whitespace=*) - COMPREPLY=($(compgen -W "$__git_whitespacelist" \ - -- "${cur##--whitespace=}")) + __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" return ;; --*) - COMPREPLY=($(compgen -W " + __gitcomp " --stat --numstat --summary --check --index --cached --index-info --reverse --reject --unidiff-zero --apply --no-add --exclude= --whitespace= --inaccurate-eof --verbose - " -- "$cur")) + " return esac COMPREPLY=() @@ -378,24 +400,54 @@ _git_add () local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) - COMPREPLY=($(compgen -W " - --interactive - " -- "$cur")) + __gitcomp "--interactive" return esac 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 () { - local cur="${COMP_WORDS[COMP_CWORD]}" - COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur")) + __gitcomp "$(__git_refs)" } _git_checkout () { - local cur="${COMP_WORDS[COMP_CWORD]}" - COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur")) + __gitcomp "$(__git_refs)" +} + +_git_cherry () +{ + __gitcomp "$(__git_refs)" } _git_cherry_pick () @@ -403,12 +455,10 @@ _git_cherry_pick () local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) - COMPREPLY=($(compgen -W " - --edit --no-commit - " -- "$cur")) + __gitcomp "--edit --no-commit" ;; *) - COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur")) + __gitcomp "$(__git_refs)" ;; esac } @@ -418,10 +468,10 @@ _git_commit () local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) - COMPREPLY=($(compgen -W " + __gitcomp " --all --author= --signoff --verify --no-verify --edit --amend --include --only - " -- "$cur")) + " return esac COMPREPLY=() @@ -434,8 +484,7 @@ _git_diff () _git_diff_tree () { - local cur="${COMP_WORDS[COMP_CWORD]}" - COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur")) + __gitcomp "$(__git_refs)" } _git_fetch () @@ -444,16 +493,15 @@ _git_fetch () case "${COMP_WORDS[0]},$COMP_CWORD" in git-fetch*,1) - COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur")) + __gitcomp "$(__git_remotes)" ;; git,2) - COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur")) + __gitcomp "$(__git_remotes)" ;; *) case "$cur" in *:*) - cur="${cur#*:}" - COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur")) + __gitcomp "$(__git_refs)" "" "${cur#*:}" ;; *) local remote @@ -461,7 +509,7 @@ _git_fetch () git-fetch) remote="${COMP_WORDS[1]}" ;; git) remote="${COMP_WORDS[2]}" ;; esac - COMPREPLY=($(compgen -W "$(__git_refs2 "$remote")" -- "$cur")) + __gitcomp "$(__git_refs2 "$remote")" ;; esac ;; @@ -473,7 +521,7 @@ _git_format_patch () local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) - COMPREPLY=($(compgen -W " + __gitcomp " --stdout --attach --thread --output-directory --numbered --start-number @@ -481,17 +529,29 @@ _git_format_patch () --signoff --in-reply-to= --full-index --binary - " -- "$cur")) + --not --all + " return ;; esac __git_complete_revlist } -_git_ls_remote () +_git_gc () { local cur="${COMP_WORDS[COMP_CWORD]}" - COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur")) + case "$cur" in + --*) + __gitcomp "--prune" + return + ;; + esac + COMPREPLY=() +} + +_git_ls_remote () +{ + __gitcomp "$(__git_remotes)" } _git_ls_tree () @@ -504,13 +564,13 @@ _git_log () local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --pretty=*) - COMPREPLY=($(compgen -W " + __gitcomp " oneline short medium full fuller email raw - " -- "${cur##--pretty=}")) + " "" "${cur##--pretty=}" return ;; --*) - COMPREPLY=($(compgen -W " + __gitcomp " --max-count= --max-age= --since= --after= --min-age= --before= --until= --root --not --topo-order --date-order @@ -520,7 +580,8 @@ _git_log () --author= --committer= --grep= --all-match --pretty= --name-status --name-only - " -- "$cur")) + --not --all + " return ;; esac @@ -532,34 +593,31 @@ _git_merge () local cur="${COMP_WORDS[COMP_CWORD]}" case "${COMP_WORDS[COMP_CWORD-1]}" in -s|--strategy) - COMPREPLY=($(compgen -W "$(__git_merge_strategies)" -- "$cur")) + __gitcomp "$(__git_merge_strategies)" return esac case "$cur" in --strategy=*) - COMPREPLY=($(compgen -W "$(__git_merge_strategies)" \ - -- "${cur##--strategy=}")) + __gitcomp "$(__git_merge_strategies)" "" "${cur##--strategy=}" return ;; --*) - COMPREPLY=($(compgen -W " + __gitcomp " --no-commit --no-summary --squash --strategy - " -- "$cur")) + " return esac - COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur")) + __gitcomp "$(__git_refs)" } _git_merge_base () { - local cur="${COMP_WORDS[COMP_CWORD]}" - COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur")) + __gitcomp "$(__git_refs)" } _git_name_rev () { - local cur="${COMP_WORDS[COMP_CWORD]}" - COMPREPLY=($(compgen -W "--tags --all --stdin" -- "$cur")) + __gitcomp "--tags --all --stdin" } _git_pull () @@ -568,10 +626,10 @@ _git_pull () case "${COMP_WORDS[0]},$COMP_CWORD" in git-pull*,1) - COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur")) + __gitcomp "$(__git_remotes)" ;; git,2) - COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur")) + __gitcomp "$(__git_remotes)" ;; *) local remote @@ -579,7 +637,7 @@ _git_pull () git-pull) remote="${COMP_WORDS[1]}" ;; git) remote="${COMP_WORDS[2]}" ;; esac - COMPREPLY=($(compgen -W "$(__git_refs "$remote")" -- "$cur")) + __gitcomp "$(__git_refs "$remote")" ;; esac } @@ -590,10 +648,10 @@ _git_push () case "${COMP_WORDS[0]},$COMP_CWORD" in git-push*,1) - COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur")) + __gitcomp "$(__git_remotes)" ;; git,2) - COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur")) + __gitcomp "$(__git_remotes)" ;; *) case "$cur" in @@ -603,11 +661,10 @@ _git_push () git-push) remote="${COMP_WORDS[1]}" ;; git) remote="${COMP_WORDS[2]}" ;; esac - cur="${cur#*:}" - COMPREPLY=($(compgen -W "$(__git_refs "$remote")" -- "$cur")) + __gitcomp "$(__git_refs "$remote")" "" "${cur#*:}" ;; *) - COMPREPLY=($(compgen -W "$(__git_refs2)" -- "$cur")) + __gitcomp "$(__git_refs2)" ;; esac ;; @@ -617,30 +674,25 @@ _git_push () _git_rebase () { local cur="${COMP_WORDS[COMP_CWORD]}" - if [ -d .dotest ]; then - COMPREPLY=($(compgen -W " - --continue --skip --abort - " -- "$cur")) + if [ -d .dotest ] || [ -d .git/.dotest-merge ]; then + __gitcomp "--continue --skip --abort" return fi case "${COMP_WORDS[COMP_CWORD-1]}" in -s|--strategy) - COMPREPLY=($(compgen -W "$(__git_merge_strategies)" -- "$cur")) + __gitcomp "$(__git_merge_strategies)" return esac case "$cur" in --strategy=*) - COMPREPLY=($(compgen -W "$(__git_merge_strategies)" \ - -- "${cur##--strategy=}")) + __gitcomp "$(__git_merge_strategies)" "" "${cur##--strategy=}" return ;; --*) - COMPREPLY=($(compgen -W " - --onto --merge --strategy - " -- "$cur")) + __gitcomp "--onto --merge --strategy" return esac - COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur")) + __gitcomp "$(__git_refs)" } _git_config () @@ -649,26 +701,40 @@ _git_config () local prv="${COMP_WORDS[COMP_CWORD-1]}" case "$prv" in branch.*.remote) - COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur")) + __gitcomp "$(__git_remotes)" return ;; branch.*.merge) - COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur")) + __gitcomp "$(__git_refs)" return ;; remote.*.fetch) local remote="${prv#remote.}" remote="${remote%.fetch}" - COMPREPLY=($(compgen -W "$(__git_refs_remotes "$remote")" \ - -- "$cur")) + __gitcomp "$(__git_refs_remotes "$remote")" return ;; remote.*.push) local remote="${prv#remote.}" remote="${remote%.push}" - COMPREPLY=($(compgen -W "$(git --git-dir="$(__gitdir)" \ + __gitcomp "$(git --git-dir="$(__gitdir)" \ for-each-ref --format='%(refname):%(refname)' \ - refs/heads)" -- "$cur")) + refs/heads)" + return + ;; + pull.twohead|pull.octopus) + __gitcomp "$(__git_merge_strategies)" + return + ;; + color.branch|color.diff|color.status) + __gitcomp "always never auto" + return + ;; + color.*.*) + __gitcomp " + black red green yellow blue magenta cyan white + bold dim ul blink reverse + " return ;; *.*) @@ -678,41 +744,39 @@ _git_config () esac case "$cur" in --*) - COMPREPLY=($(compgen -W " + __gitcomp " --global --list --replace-all --get --get-all --get-regexp - --unset --unset-all - " -- "$cur")) + --add --unset --unset-all + " return ;; branch.*.*) local pfx="${cur%.*}." cur="${cur##*.}" - COMPREPLY=($(compgen -P "$pfx" -W "remote merge" -- "$cur")) + __gitcomp "remote merge" "$pfx" "$cur" return ;; branch.*) local pfx="${cur%.*}." cur="${cur#*.}" - COMPREPLY=($(compgen -P "$pfx" -S . \ - -W "$(__git_heads)" -- "$cur")) + __gitcomp "$(__git_heads)" "$pfx" "$cur" "." return ;; remote.*.*) local pfx="${cur%.*}." cur="${cur##*.}" - COMPREPLY=($(compgen -P "$pfx" -W "url fetch push" -- "$cur")) + __gitcomp "url fetch push" "$pfx" "$cur" return ;; remote.*) local pfx="${cur%.*}." cur="${cur#*.}" - COMPREPLY=($(compgen -P "$pfx" -S . \ - -W "$(__git_remotes)" -- "$cur")) + __gitcomp "$(__git_remotes)" "$pfx" "$cur" "." return ;; esac - COMPREPLY=($(compgen -W " + __gitcomp " apply.whitespace core.fileMode core.gitProxy @@ -724,47 +788,105 @@ _git_config () core.warnAmbiguousRefs core.compression core.legacyHeaders - i18n.commitEncoding - i18n.logOutputEncoding - diff.color + core.packedGitWindowSize + core.packedGitLimit + color.branch + color.branch.current + color.branch.local + color.branch.remote + color.branch.plain color.diff - diff.renameLimit - diff.renames - pager.color + color.diff.plain + color.diff.meta + color.diff.frag + color.diff.old + color.diff.new + color.diff.commit + color.diff.whitespace color.pager - status.color color.status - log.showroot - show.difftree - showbranch.default - whatchanged.difftree + color.status.header + color.status.added + color.status.changed + color.status.untracked + diff.renameLimit + diff.renames + fetch.unpackLimit + format.headers + gitcvs.enabled + gitcvs.logfile + gc.reflogexpire + gc.reflogexpireunreachable + gc.rerereresolved + gc.rerereunresolved http.sslVerify http.sslCert http.sslKey http.sslCAInfo http.sslCAPath http.maxRequests - http.lowSpeedLimit http.lowSpeedTime + http.lowSpeedLimit + http.lowSpeedTime http.noEPSV + i18n.commitEncoding + i18n.logOutputEncoding + log.showroot + merge.summary + merge.verbosity pack.window + pull.octopus + pull.twohead repack.useDeltaBaseOffset - pull.octopus pull.twohead - merge.summary + show.difftree + showbranch.default + tar.umask + transfer.unpackLimit receive.unpackLimit receive.denyNonFastForwards - user.name user.email - tar.umask - gitcvs.enabled - gitcvs.logfile + user.name + user.email + user.signingkey + whatchanged.difftree branch. remote. - " -- "$cur")) + " +} + +_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]}" - local opt="--mixed --hard --soft" - COMPREPLY=($(compgen -W "$opt $(__git_refs)" -- "$cur")) + case "$cur" in + --*) + __gitcomp "--mixed --hard --soft" + return + ;; + esac + __gitcomp "$(__git_refs)" } _git_show () @@ -772,13 +894,13 @@ _git_show () local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --pretty=*) - COMPREPLY=($(compgen -W " + __gitcomp " oneline short medium full fuller email raw - " -- "${cur##--pretty=}")) + " "" "${cur##--pretty=}" return ;; --*) - COMPREPLY=($(compgen -W "--pretty=" -- "$cur")) + __gitcomp "--pretty=" return ;; esac @@ -816,8 +938,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 ;; @@ -825,6 +949,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 ;; @@ -834,7 +959,7 @@ _git () pull) _git_pull ;; push) _git_push ;; rebase) _git_rebase ;; - repo-config) _git_config ;; + remote) _git_remote ;; reset) _git_reset ;; show) _git_show ;; show-branch) _git_log ;; @@ -846,32 +971,42 @@ _git () _gitk () { local cur="${COMP_WORDS[COMP_CWORD]}" - COMPREPLY=($(compgen -W "--all $(__git_refs)" -- "$cur")) + case "$cur" in + --*) + __gitcomp "--not --all" + return + ;; + esac + __git_complete_revlist } complete -o default -o nospace -F _git git -complete -o default -F _gitk gitk -complete -o default -F _git_am git-am -complete -o default -F _git_apply git-apply -complete -o default -F _git_branch git-branch -complete -o default -F _git_checkout git-checkout -complete -o default -F _git_cherry_pick git-cherry-pick -complete -o default -F _git_commit git-commit +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 -F _git_diff_tree git-diff-tree +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 -F _git_ls_remote git-ls-remote +complete -o default -o nospace -F _git_ls_remote git-ls-remote complete -o default -o nospace -F _git_ls_tree git-ls-tree -complete -o default -F _git_merge git-merge -complete -o default -F _git_merge_base git-merge-base -complete -o default -F _git_name_rev git-name-rev +complete -o default -o nospace -F _git_merge git-merge +complete -o default -o nospace -F _git_merge_base git-merge-base +complete -o default -o nospace -F _git_name_rev git-name-rev complete -o default -o nospace -F _git_pull git-pull complete -o default -o nospace -F _git_push git-push -complete -o default -F _git_rebase git-rebase -complete -o default -F _git_config git-config -complete -o default -F _git_reset git-reset +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 complete -o default -o nospace -F _git_log git-whatchanged @@ -881,19 +1016,20 @@ complete -o default -o nospace -F _git_log git-whatchanged # included the '.exe' suffix. # if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then -complete -o default -F _git_add git-add.exe -complete -o default -F _git_apply git-apply.exe +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 -F _git_branch git-branch.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 complete -o default -o nospace -F _git_log git-log.exe complete -o default -o nospace -F _git_ls_tree git-ls-tree.exe -complete -o default -F _git_merge_base git-merge-base.exe -complete -o default -F _git_name_rev git-name-rev.exe +complete -o default -o nospace -F _git_merge_base git-merge-base.exe +complete -o default -o nospace -F _git_name_rev git-name-rev.exe complete -o default -o nospace -F _git_push git-push.exe -complete -o default -F _git_config git-config +complete -o default -o nospace -F _git_config git-config complete -o default -o nospace -F _git_show git-show.exe complete -o default -o nospace -F _git_log git-show-branch.exe complete -o default -o nospace -F _git_log git-whatchanged.exe