You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.4 KiB
74 lines
2.4 KiB
#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 |
|
}
|
|
|