|
|
|
|
@ -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,10 +664,11 @@ __git_list_porcelain_commands () |
|
|
|
|
check-mailmap) : plumbing;; |
|
|
|
|
check-ref-format) : plumbing;; |
|
|
|
|
checkout-index) : plumbing;; |
|
|
|
|
column) : internal helper;; |
|
|
|
|
commit-tree) : plumbing;; |
|
|
|
|
count-objects) : infrequent;; |
|
|
|
|
credential-cache) : credentials helper;; |
|
|
|
|
credential-store) : credentials helper;; |
|
|
|
|
credential) : credentials;; |
|
|
|
|
credential-*) : credentials helper;; |
|
|
|
|
cvsexportcommit) : export;; |
|
|
|
|
cvsimport) : import;; |
|
|
|
|
cvsserver) : daemon;; |
|
|
|
|
@ -735,35 +737,28 @@ __git_list_porcelain_commands () |
|
|
|
|
__git_porcelain_commands= |
|
|
|
|
__git_compute_porcelain_commands () |
|
|
|
|
{ |
|
|
|
|
__git_compute_all_commands |
|
|
|
|
test -n "$__git_porcelain_commands" || |
|
|
|
|
__git_porcelain_commands=$(__git_list_porcelain_commands) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
__git_pretty_aliases () |
|
|
|
|
# Lists all set config variables starting with the given section prefix, |
|
|
|
|
# with the prefix removed. |
|
|
|
|
__git_get_config_variables () |
|
|
|
|
{ |
|
|
|
|
local i IFS=$'\n' |
|
|
|
|
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "pretty\..*" 2>/dev/null); do |
|
|
|
|
case "$i" in |
|
|
|
|
pretty.*) |
|
|
|
|
i="${i#pretty.}" |
|
|
|
|
echo "${i/ */}" |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
local section="$1" i IFS=$'\n' |
|
|
|
|
for i in $(git --git-dir="$(__gitdir)" config --name-only --get-regexp "^$section\..*" 2>/dev/null); do |
|
|
|
|
echo "${i#$section.}" |
|
|
|
|
done |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
__git_pretty_aliases () |
|
|
|
|
{ |
|
|
|
|
__git_get_config_variables "pretty" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
__git_aliases () |
|
|
|
|
{ |
|
|
|
|
local i IFS=$'\n' |
|
|
|
|
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "alias\..*" 2>/dev/null); do |
|
|
|
|
case "$i" in |
|
|
|
|
alias.*) |
|
|
|
|
i="${i#alias.}" |
|
|
|
|
echo "${i/ */}" |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
done |
|
|
|
|
__git_get_config_variables "alias" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# __git_aliased_command requires 1 argument |
|
|
|
|
@ -1114,7 +1109,7 @@ _git_commit () |
|
|
|
|
|
|
|
|
|
case "$cur" in |
|
|
|
|
--cleanup=*) |
|
|
|
|
__gitcomp "default strip verbatim whitespace |
|
|
|
|
__gitcomp "default scissors strip verbatim whitespace |
|
|
|
|
" "" "${cur##--cleanup=}" |
|
|
|
|
return |
|
|
|
|
;; |
|
|
|
|
@ -1174,7 +1169,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary |
|
|
|
|
--no-prefix --src-prefix= --dst-prefix= |
|
|
|
|
--inter-hunk-context= |
|
|
|
|
--patience --histogram --minimal |
|
|
|
|
--raw --word-diff |
|
|
|
|
--raw --word-diff --word-diff-regex= |
|
|
|
|
--dirstat --dirstat= --dirstat-by-file |
|
|
|
|
--dirstat-by-file= --cumulative |
|
|
|
|
--diff-algorithm= |
|
|
|
|
@ -1317,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 |
|
|
|
|
@ -1448,7 +1444,7 @@ _git_log () |
|
|
|
|
return |
|
|
|
|
;; |
|
|
|
|
--decorate=*) |
|
|
|
|
__gitcomp "long short" "" "${cur##--decorate=}" |
|
|
|
|
__gitcomp "full short no" "" "${cur##--decorate=}" |
|
|
|
|
return |
|
|
|
|
;; |
|
|
|
|
--*) |
|
|
|
|
@ -1673,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 |
|
|
|
|
@ -1689,8 +1688,12 @@ _git_rebase () |
|
|
|
|
--preserve-merges --stat --no-stat |
|
|
|
|
--committer-date-is-author-date --ignore-date |
|
|
|
|
--ignore-whitespace --whitespace= |
|
|
|
|
--autosquash --fork-point --no-fork-point |
|
|
|
|
--autostash |
|
|
|
|
--autosquash --no-autosquash |
|
|
|
|
--fork-point --no-fork-point |
|
|
|
|
--autostash --no-autostash |
|
|
|
|
--verify --no-verify |
|
|
|
|
--keep-empty --root --force-rebase --no-ff |
|
|
|
|
--exec |
|
|
|
|
" |
|
|
|
|
|
|
|
|
|
return |
|
|
|
|
@ -1715,6 +1718,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 " |
|
|
|
|
@ -1739,6 +1751,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 |
|
|
|
|
@ -1780,15 +1798,7 @@ __git_config_get_set_variables () |
|
|
|
|
c=$((--c)) |
|
|
|
|
done |
|
|
|
|
|
|
|
|
|
git --git-dir="$(__gitdir)" config $config_file --list 2>/dev/null | |
|
|
|
|
while read -r line |
|
|
|
|
do |
|
|
|
|
case "$line" in |
|
|
|
|
*.*=*) |
|
|
|
|
echo "${line/=*/}" |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
done |
|
|
|
|
git --git-dir="$(__gitdir)" config $config_file --name-only --list 2>/dev/null |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_git_config () |
|
|
|
|
@ -1803,7 +1813,7 @@ _git_config () |
|
|
|
|
return |
|
|
|
|
;; |
|
|
|
|
branch.*.rebase) |
|
|
|
|
__gitcomp "false true" |
|
|
|
|
__gitcomp "false true preserve interactive" |
|
|
|
|
return |
|
|
|
|
;; |
|
|
|
|
remote.pushdefault) |
|
|
|
|
@ -1893,6 +1903,7 @@ _git_config () |
|
|
|
|
--get --get-all --get-regexp |
|
|
|
|
--add --unset --unset-all |
|
|
|
|
--remove-section --rename-section |
|
|
|
|
--name-only |
|
|
|
|
" |
|
|
|
|
return |
|
|
|
|
;; |
|
|
|
|
@ -2049,6 +2060,7 @@ _git_config () |
|
|
|
|
core.sparseCheckout |
|
|
|
|
core.symlinks |
|
|
|
|
core.trustctime |
|
|
|
|
core.untrackedCache |
|
|
|
|
core.warnAmbiguousRefs |
|
|
|
|
core.whitespace |
|
|
|
|
core.worktree |
|
|
|
|
@ -2123,6 +2135,8 @@ _git_config () |
|
|
|
|
http.noEPSV |
|
|
|
|
http.postBuffer |
|
|
|
|
http.proxy |
|
|
|
|
http.sslCipherList |
|
|
|
|
http.sslVersion |
|
|
|
|
http.sslCAInfo |
|
|
|
|
http.sslCAPath |
|
|
|
|
http.sslCert |
|
|
|
|
@ -2260,12 +2274,7 @@ _git_remote () |
|
|
|
|
__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 |
|
|
|
|
i="${i#remotes.}" |
|
|
|
|
c="$c ${i/ */}" |
|
|
|
|
done |
|
|
|
|
__gitcomp "$c" |
|
|
|
|
__gitcomp "$(__git_get_config_variables "remotes")" |
|
|
|
|
;; |
|
|
|
|
*) |
|
|
|
|
;; |
|
|
|
|
@ -2292,6 +2301,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" |
|
|
|
|
@ -2360,7 +2374,7 @@ _git_show_branch () |
|
|
|
|
case "$cur" in |
|
|
|
|
--*) |
|
|
|
|
__gitcomp " |
|
|
|
|
--all --remotes --topo-order --current --more= |
|
|
|
|
--all --remotes --topo-order --date-order --current --more= |
|
|
|
|
--list --independent --merge-base --no-name |
|
|
|
|
--color --no-color |
|
|
|
|
--sha1-name --sparse --topics --reflog |
|
|
|
|
@ -2373,7 +2387,7 @@ _git_show_branch () |
|
|
|
|
|
|
|
|
|
_git_stash () |
|
|
|
|
{ |
|
|
|
|
local save_opts='--keep-index --no-keep-index --quiet --patch' |
|
|
|
|
local save_opts='--all --keep-index --no-keep-index --quiet --patch --include-untracked' |
|
|
|
|
local subcommands='save list show apply clear drop pop create branch' |
|
|
|
|
local subcommand="$(__git_find_on_cmdline "$subcommands")" |
|
|
|
|
if [ -z "$subcommand" ]; then |
|
|
|
|
@ -2395,9 +2409,20 @@ _git_stash () |
|
|
|
|
apply,--*|pop,--*) |
|
|
|
|
__gitcomp "--index --quiet" |
|
|
|
|
;; |
|
|
|
|
show,--*|drop,--*|branch,--*) |
|
|
|
|
drop,--*) |
|
|
|
|
__gitcomp "--quiet" |
|
|
|
|
;; |
|
|
|
|
show,--*|branch,--*) |
|
|
|
|
;; |
|
|
|
|
branch,*) |
|
|
|
|
if [ $cword -eq 3 ]; then |
|
|
|
|
__gitcomp_nl "$(__git_refs)"; |
|
|
|
|
else |
|
|
|
|
__gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \ |
|
|
|
|
| sed -n -e 's/:.*//p')" |
|
|
|
|
fi |
|
|
|
|
;; |
|
|
|
|
show,*|apply,*|drop,*|pop,*|branch,*) |
|
|
|
|
show,*|apply,*|drop,*|pop,*) |
|
|
|
|
__gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \ |
|
|
|
|
| sed -n -e 's/:.*//p')" |
|
|
|
|
;; |
|
|
|
|
|