Teach git-completion.bash how to complete git-merge.
Now that git-merge is high-level Porcelain users are going to expect to be able to use it from the command line, in which case we really should also be able to complete ref names as parameters. I'm also including completion support for the merge strategies that are supported by git-merge.sh, should the user wish to use a different strategy than their default. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
fde97d8ac6
commit
4ad91321ee
@ -81,6 +81,16 @@ __git_remotes ()
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__git_merge_strategies ()
|
||||||
|
{
|
||||||
|
sed -n "/^all_strategies='/{
|
||||||
|
s/^all_strategies='//
|
||||||
|
s/'//
|
||||||
|
p
|
||||||
|
q
|
||||||
|
}" "$(git --exec-path)/git-merge"
|
||||||
|
}
|
||||||
|
|
||||||
__git_complete_file ()
|
__git_complete_file ()
|
||||||
{
|
{
|
||||||
local pfx ls ref cur="${COMP_WORDS[COMP_CWORD]}"
|
local pfx ls ref cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
@ -240,6 +250,24 @@ _git_log ()
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_git_merge ()
|
||||||
|
{
|
||||||
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
case "$cur" in
|
||||||
|
--*)
|
||||||
|
COMPREPLY=($(compgen -W "
|
||||||
|
--no-commit --no-summary --squash
|
||||||
|
" -- "$cur"))
|
||||||
|
return
|
||||||
|
esac
|
||||||
|
if [ $COMP_CWORD -gt 1 -a X-s = "X${COMP_WORDS[COMP_CWORD-1]}" ]
|
||||||
|
then
|
||||||
|
COMPREPLY=($(compgen -W "$(__git_merge_strategies)" -- "$cur"))
|
||||||
|
else
|
||||||
|
COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
_git_merge_base ()
|
_git_merge_base ()
|
||||||
{
|
{
|
||||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
@ -348,6 +376,7 @@ _git ()
|
|||||||
log) _git_log ;;
|
log) _git_log ;;
|
||||||
ls-remote) _git_ls_remote ;;
|
ls-remote) _git_ls_remote ;;
|
||||||
ls-tree) _git_ls_tree ;;
|
ls-tree) _git_ls_tree ;;
|
||||||
|
merge) _git_merge;;
|
||||||
merge-base) _git_merge_base ;;
|
merge-base) _git_merge_base ;;
|
||||||
pull) _git_pull ;;
|
pull) _git_pull ;;
|
||||||
push) _git_push ;;
|
push) _git_push ;;
|
||||||
@ -376,6 +405,7 @@ complete -o default -o nospace -F _git_fetch git-fetch
|
|||||||
complete -o default -o nospace -F _git_log git-log
|
complete -o default -o nospace -F _git_log git-log
|
||||||
complete -o default -F _git_ls_remote git-ls-remote
|
complete -o default -F _git_ls_remote git-ls-remote
|
||||||
complete -o default -o nospace -F _git_ls_tree git-ls-tree
|
complete -o default -o nospace -F _git_ls_tree git-ls-tree
|
||||||
|
complete -o default -F _git_merge git-merge
|
||||||
complete -o default -F _git_merge_base git-merge-base
|
complete -o default -F _git_merge_base git-merge-base
|
||||||
complete -o default -o nospace -F _git_pull git-pull
|
complete -o default -o nospace -F _git_pull git-pull
|
||||||
complete -o default -o nospace -F _git_push git-push
|
complete -o default -o nospace -F _git_push git-push
|
||||||
|
Loading…
Reference in New Issue
Block a user