mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-05-20 06:56:05 +02:00
31748: _git: support completing remote branches without <remote>/ prefix
this is used in git 1.8's git checkout <branch> as a shorthand for git checkout -b <branch> --track <remote>/<branch> in case <branch> exists on exactly one remote and is not a local branch
This commit is contained in:
parent
e45f685d4a
commit
735e7becb9
|
@ -3,6 +3,9 @@
|
|||
* 31746: Completion/Unix/Command/_git: _git: reword _git-config
|
||||
TODO
|
||||
|
||||
* 31748: Completion/Unix/Command/_git: _git: support completing
|
||||
remote branches without <remote>/ prefix
|
||||
|
||||
2013-09-22 Øystein Walle <oystwa@gmail.com>
|
||||
|
||||
* 31747: Completion/Unix/Command/_git: _git: completion updates to
|
||||
|
|
|
@ -440,22 +440,27 @@ _git-checkout () {
|
|||
if (( CURRENT == 1 )) && [[ -z $opt_args[(I)--] ]]; then
|
||||
# TODO: Allow A...B
|
||||
local branch_arg='branches::__git_revisions' \
|
||||
remote_branch_noprefix_arg='remote branches::__git_remote_branch_names_noprefix' \
|
||||
tree_ish_arg='tree-ishs::__git_tree_ishs' \
|
||||
file_arg='modified-files::__git_modified_files'
|
||||
|
||||
if [[ -n ${opt_args[(I)-b|-B|--orphan]} ]]; then
|
||||
remote_branch_noprefix_arg=
|
||||
tree_ish_arg=
|
||||
file_arg=
|
||||
elif [[ -n $opt_args[(I)--track] ]]; then
|
||||
branch_arg='remote-branches::__git_remote_branch_names'
|
||||
remote_branch_noprefix_arg=
|
||||
tree_ish_arg=
|
||||
file_arg=
|
||||
elif [[ -n ${opt_args[(I)--ours|--theirs|-m|--conflict|--patch]} ]]; then
|
||||
branch_arg=
|
||||
remote_branch_noprefix_arg=
|
||||
fi
|
||||
|
||||
_alternative \
|
||||
$branch_arg \
|
||||
$remote_branch_noprefix_arg \
|
||||
$tree_ish_arg \
|
||||
$file_arg && ret=0
|
||||
elif [[ -n ${opt_args[(I)-b|-B|-t|--track|--orphan]} ]]; then
|
||||
|
@ -5371,6 +5376,17 @@ __git_remote_branch_names () {
|
|||
_wanted remote-branch-names expl 'remote branch name' compadd $* - $branch_names
|
||||
}
|
||||
|
||||
(( $+functions[__git_remote_branch_names_noprefix] )) ||
|
||||
__git_remote_branch_names_noprefix () {
|
||||
local expl
|
||||
declare -a heads
|
||||
|
||||
branch_names=(${${${(f)"$(_call_program remote-branch-refs-noprefix git for-each-ref --format='"%(refname)"' refs/remotes 2>/dev/null)"}##*/}:#HEAD})
|
||||
__git_command_successful $pipestatus || return 1
|
||||
|
||||
_wanted remote-branch-names-noprefix expl 'remote branch name' compadd $* - $branch_names
|
||||
}
|
||||
|
||||
(( $+functions[__git_commits] )) ||
|
||||
__git_commits () {
|
||||
# TODO: deal with things that __git_heads and __git_tags has in common (i.e.,
|
||||
|
|
Loading…
Reference in New Issue