mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-06-13 04:56:30 +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
|
* 31746: Completion/Unix/Command/_git: _git: reword _git-config
|
||||||
TODO
|
TODO
|
||||||
|
|
||||||
|
* 31748: Completion/Unix/Command/_git: _git: support completing
|
||||||
|
remote branches without <remote>/ prefix
|
||||||
|
|
||||||
2013-09-22 Øystein Walle <oystwa@gmail.com>
|
2013-09-22 Øystein Walle <oystwa@gmail.com>
|
||||||
|
|
||||||
* 31747: Completion/Unix/Command/_git: _git: completion updates to
|
* 31747: Completion/Unix/Command/_git: _git: completion updates to
|
||||||
|
|
|
@ -440,22 +440,27 @@ _git-checkout () {
|
||||||
if (( CURRENT == 1 )) && [[ -z $opt_args[(I)--] ]]; then
|
if (( CURRENT == 1 )) && [[ -z $opt_args[(I)--] ]]; then
|
||||||
# TODO: Allow A...B
|
# TODO: Allow A...B
|
||||||
local branch_arg='branches::__git_revisions' \
|
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' \
|
tree_ish_arg='tree-ishs::__git_tree_ishs' \
|
||||||
file_arg='modified-files::__git_modified_files'
|
file_arg='modified-files::__git_modified_files'
|
||||||
|
|
||||||
if [[ -n ${opt_args[(I)-b|-B|--orphan]} ]]; then
|
if [[ -n ${opt_args[(I)-b|-B|--orphan]} ]]; then
|
||||||
|
remote_branch_noprefix_arg=
|
||||||
tree_ish_arg=
|
tree_ish_arg=
|
||||||
file_arg=
|
file_arg=
|
||||||
elif [[ -n $opt_args[(I)--track] ]]; then
|
elif [[ -n $opt_args[(I)--track] ]]; then
|
||||||
branch_arg='remote-branches::__git_remote_branch_names'
|
branch_arg='remote-branches::__git_remote_branch_names'
|
||||||
|
remote_branch_noprefix_arg=
|
||||||
tree_ish_arg=
|
tree_ish_arg=
|
||||||
file_arg=
|
file_arg=
|
||||||
elif [[ -n ${opt_args[(I)--ours|--theirs|-m|--conflict|--patch]} ]]; then
|
elif [[ -n ${opt_args[(I)--ours|--theirs|-m|--conflict|--patch]} ]]; then
|
||||||
branch_arg=
|
branch_arg=
|
||||||
|
remote_branch_noprefix_arg=
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_alternative \
|
_alternative \
|
||||||
$branch_arg \
|
$branch_arg \
|
||||||
|
$remote_branch_noprefix_arg \
|
||||||
$tree_ish_arg \
|
$tree_ish_arg \
|
||||||
$file_arg && ret=0
|
$file_arg && ret=0
|
||||||
elif [[ -n ${opt_args[(I)-b|-B|-t|--track|--orphan]} ]]; then
|
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
|
_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] )) ||
|
(( $+functions[__git_commits] )) ||
|
||||||
__git_commits () {
|
__git_commits () {
|
||||||
# TODO: deal with things that __git_heads and __git_tags has in common (i.e.,
|
# TODO: deal with things that __git_heads and __git_tags has in common (i.e.,
|
||||||
|
|
Loading…
Reference in New Issue