75 lines
2.4 KiB
Plaintext
75 lines
2.4 KiB
Plaintext
|
#compdef git-remote
|
||
|
|
||
|
# NOTE: --track is undocumented.
|
||
|
# TODO: --track, -t, --master, and -m should take remote branches, I guess.
|
||
|
# NOTE: --master is undocumented.
|
||
|
# NOTE: --fetch is undocumented.
|
||
|
_git-remote () {
|
||
|
local curcontext=$curcontext state line
|
||
|
declare -A opt_args
|
||
|
|
||
|
_arguments -C \
|
||
|
':command:->command' \
|
||
|
'*::options:->options' && ret=0
|
||
|
|
||
|
case $state in
|
||
|
(command)
|
||
|
declare -a commands
|
||
|
|
||
|
commands=(
|
||
|
'add:add a new remote'
|
||
|
'show:show information about a given remote'
|
||
|
'prune:delete all stale tracking branches for a given remote'
|
||
|
'update:fetch updates for a set of remotes'
|
||
|
'rm:remove a remote from .git/config and all associated tracking branches'
|
||
|
'rename:rename a remote from .git/config and update all associated tracking branches'
|
||
|
'set-head:sets or deletes the default branch'
|
||
|
'set-branches:changes the list of branches tracked by the named remote.'
|
||
|
'set-url:changes URL remote points to.'
|
||
|
)
|
||
|
|
||
|
_describe -t commands 'sub-command' commands && ret=0
|
||
|
;;
|
||
|
(options)
|
||
|
case $line[1] in
|
||
|
(add)
|
||
|
_arguments \
|
||
|
'*'{--track,-t}'[track given branch instead of default glob refspec]:branch:__git_branch_names' \
|
||
|
'(--master -m)'{--master,-m}'[set the remote'\''s HEAD to point to given master branch]:branch:__git_branch_names' \
|
||
|
'(--fetch -f)'{--fetch,-f}'[run git-fetch on the new remote after it has been created]' \
|
||
|
':branch name:__git_remotes' \
|
||
|
':url:_urls' && ret=0
|
||
|
;;
|
||
|
(show)
|
||
|
_arguments \
|
||
|
'-n[do not contact the remote for a list of branches]' \
|
||
|
':remote:__git_remotes' && ret=0
|
||
|
;;
|
||
|
(prune)
|
||
|
_arguments \
|
||
|
'(--dry-run -n)'{-n,--dry-run}'[do not actually prune, only list what would be done]' \
|
||
|
':remote:__git_remotes' && ret=0
|
||
|
;;
|
||
|
(update)
|
||
|
__git_remote-groups && ret=0
|
||
|
;;
|
||
|
(rm)
|
||
|
__git_remotes && ret=0
|
||
|
;;
|
||
|
(rename)
|
||
|
__git_remotes && ret=0
|
||
|
;;
|
||
|
(set-url)
|
||
|
_arguments \
|
||
|
'*--push[manipulate push URLs]' \
|
||
|
'(--add)--add[add URL]' \
|
||
|
'(--delete)--delete[delete URLs]' \
|
||
|
':branch name:__git_remotes' \
|
||
|
':url:_urls' && ret=0
|
||
|
;;
|
||
|
|
||
|
esac
|
||
|
;;
|
||
|
esac
|
||
|
}
|