зеркало из https://github.com/microsoft/git.git
bash: offer only paths after '--'
Many git commands use '--' to separate subcommands, options, and refs from paths. However, the programmable completion for several of these commands does not respect the '--', and offer subcommands, options, or refs after a '--', although only paths are permitted. e.g. 'git bisect -- <TAB>' offers subcommands, 'git log -- --<TAB>' offers options and 'git log -- git<TAB>' offers all gitgui tags. The completion for the following commands share this wrong behaviour: am add bisect commit diff log reset shortlog submodule gitk. To avoid this, we check the presence of a '--' on the command line first and let the shell do filename completion, if one is found. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Acked-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
1db4a75c8d
Коммит
d773c6314d
|
@ -451,6 +451,18 @@ __git_find_subcommand ()
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__git_has_doubledash ()
|
||||||
|
{
|
||||||
|
local c=1
|
||||||
|
while [ $c -lt $COMP_CWORD ]; do
|
||||||
|
if [ "--" = "${COMP_WORDS[c]}" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
c=$((++c))
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
__git_whitespacelist="nowarn warn error error-all strip"
|
__git_whitespacelist="nowarn warn error error-all strip"
|
||||||
|
|
||||||
_git_am ()
|
_git_am ()
|
||||||
|
@ -497,6 +509,8 @@ _git_apply ()
|
||||||
|
|
||||||
_git_add ()
|
_git_add ()
|
||||||
{
|
{
|
||||||
|
__git_has_doubledash && return
|
||||||
|
|
||||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
--*)
|
--*)
|
||||||
|
@ -511,6 +525,8 @@ _git_add ()
|
||||||
|
|
||||||
_git_bisect ()
|
_git_bisect ()
|
||||||
{
|
{
|
||||||
|
__git_has_doubledash && return
|
||||||
|
|
||||||
local subcommands="start bad good reset visualize replay log"
|
local subcommands="start bad good reset visualize replay log"
|
||||||
local subcommand="$(__git_find_subcommand "$subcommands")"
|
local subcommand="$(__git_find_subcommand "$subcommands")"
|
||||||
if [ -z "$subcommand" ]; then
|
if [ -z "$subcommand" ]; then
|
||||||
|
@ -613,6 +629,8 @@ _git_cherry_pick ()
|
||||||
|
|
||||||
_git_commit ()
|
_git_commit ()
|
||||||
{
|
{
|
||||||
|
__git_has_doubledash && return
|
||||||
|
|
||||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
--*)
|
--*)
|
||||||
|
@ -632,6 +650,8 @@ _git_describe ()
|
||||||
|
|
||||||
_git_diff ()
|
_git_diff ()
|
||||||
{
|
{
|
||||||
|
__git_has_doubledash && return
|
||||||
|
|
||||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
--*)
|
--*)
|
||||||
|
@ -734,6 +754,8 @@ _git_ls_tree ()
|
||||||
|
|
||||||
_git_log ()
|
_git_log ()
|
||||||
{
|
{
|
||||||
|
__git_has_doubledash && return
|
||||||
|
|
||||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
--pretty=*)
|
--pretty=*)
|
||||||
|
@ -1085,6 +1107,8 @@ _git_remote ()
|
||||||
|
|
||||||
_git_reset ()
|
_git_reset ()
|
||||||
{
|
{
|
||||||
|
__git_has_doubledash && return
|
||||||
|
|
||||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
--*)
|
--*)
|
||||||
|
@ -1097,6 +1121,8 @@ _git_reset ()
|
||||||
|
|
||||||
_git_shortlog ()
|
_git_shortlog ()
|
||||||
{
|
{
|
||||||
|
__git_has_doubledash && return
|
||||||
|
|
||||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
--*)
|
--*)
|
||||||
|
@ -1143,6 +1169,8 @@ _git_stash ()
|
||||||
|
|
||||||
_git_submodule ()
|
_git_submodule ()
|
||||||
{
|
{
|
||||||
|
__git_has_doubledash && return
|
||||||
|
|
||||||
local subcommands="add status init update"
|
local subcommands="add status init update"
|
||||||
if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
|
if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
|
||||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
@ -1349,6 +1377,8 @@ _git ()
|
||||||
|
|
||||||
_gitk ()
|
_gitk ()
|
||||||
{
|
{
|
||||||
|
__git_has_doubledash && return
|
||||||
|
|
||||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
local g="$(git rev-parse --git-dir 2>/dev/null)"
|
local g="$(git rev-parse --git-dir 2>/dev/null)"
|
||||||
local merge=""
|
local merge=""
|
||||||
|
|
Загрузка…
Ссылка в новой задаче