* [PATCH v2 0/7] completion bash: add more options and commands @ 2017-02-03 11:01 cornelius.weig 2017-02-03 11:01 ` [PATCH v2 1/7] completion: teach submodule subcommands to complete options cornelius.weig ` (7 more replies) 0 siblings, 8 replies; 15+ messages in thread From: cornelius.weig @ 2017-02-03 11:01 UTC (permalink / raw) To: git; +Cc: szeder.dev, j6t, Cornelius Weig From: Cornelius Weig <cornelius.weig@tngtech.com> This is the re-roll of patch series <20170122225724.19360-1-cornelius.weig@tngtech.com>. This patch series adds all long-options that are mentioned in the synopsis of the man-page for the respective git-command. There are only a few exceptions, as discussed in the above thread. For example, no unsafe options should be completed. Furthermore, the patches add subommand option completion for git-submodule and git-remote. Changes wrt first submission: - improve completion for git-remote set-head & set-branches - remove completion of unsafe options - improve commit messages - added sign-off :) - rebase to current master Cornelius Weig (7): completion: teach submodule subcommands to complete options completion: add subcommand completion for rerere completion: improve bash completion for git-add completion: teach ls-remote to complete options completion: teach replace to complete options completion: teach remote subcommands to complete options completion: recognize more long-options contrib/completion/git-completion.bash | 139 ++++++++++++++++++++++++++++----- 1 file changed, 118 insertions(+), 21 deletions(-) Interdiff since first iteration: diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 87d3d2c..3545f6a 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -936,7 +936,7 @@ _git_apply () --apply --no-add --exclude= --ignore-whitespace --ignore-space-change --whitespace= --inaccurate-eof --verbose - --recount --directory= --unsafe-paths + --recount --directory= " return esac @@ -1459,7 +1459,7 @@ _git_ls_remote () { case "$cur" in --*) - __gitcomp "--heads --tags --refs --get-url" + __gitcomp "--heads --tags --refs --get-url --symref" return ;; esac @@ -2415,9 +2415,18 @@ _git_remote () ;; add,*) ;; + set-head,--*) + __gitcomp "--auto --delete" + ;; + set-branches,--*) + __gitcomp "--add" + ;; set-head,*|set-branches,*) __git_complete_remote_or_refspec ;; + update,--*) + __gitcomp "--prune" + ;; update,*) __gitcomp "$(__git_get_config_variables "remotes")" ;; @@ -2494,7 +2503,7 @@ _git_rm () { case "$cur" in --*) - __gitcomp "--cached --dry-run --ignore-unmatch --quiet --force" + __gitcomp "--cached --dry-run --ignore-unmatch --quiet" return ;; esac -- 2.10.2 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v2 1/7] completion: teach submodule subcommands to complete options 2017-02-03 11:01 [PATCH v2 0/7] completion bash: add more options and commands cornelius.weig @ 2017-02-03 11:01 ` cornelius.weig 2017-02-03 11:01 ` [PATCH v2 2/7] completion: add subcommand completion for rerere cornelius.weig ` (6 subsequent siblings) 7 siblings, 0 replies; 15+ messages in thread From: cornelius.weig @ 2017-02-03 11:01 UTC (permalink / raw) To: git; +Cc: szeder.dev, j6t, Cornelius Weig From: Cornelius Weig <cornelius.weig@tngtech.com> Each submodule subcommand has specific long-options. Therefore, teach bash completion to support option completion based on the current subcommand. All long-options that are mentioned in the man-page synopsis are added. Signed-off-by: Cornelius Weig <cornelius.weig@tngtech.com> Reviewed-by: SZEDER Gábor <szeder.dev@gmail.com> --- contrib/completion/git-completion.bash | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 6721ff8..c54a557 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -2556,10 +2556,11 @@ _git_submodule () __git_has_doubledash && return local subcommands="add status init deinit update summary foreach sync" - if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then + local subcommand="$(__git_find_on_cmdline "$subcommands")" + if [ -z "$subcommand" ]; then case "$cur" in --*) - __gitcomp "--quiet --cached" + __gitcomp "--quiet" ;; *) __gitcomp "$subcommands" @@ -2567,6 +2568,33 @@ _git_submodule () esac return fi + + case "$subcommand,$cur" in + add,--*) + __gitcomp "--branch --force --name --reference --depth" + ;; + status,--*) + __gitcomp "--cached --recursive" + ;; + deinit,--*) + __gitcomp "--force --all" + ;; + update,--*) + __gitcomp " + --init --remote --no-fetch + --recommend-shallow --no-recommend-shallow + --force --rebase --merge --reference --depth --recursive --jobs + " + ;; + summary,--*) + __gitcomp "--cached --files --summary-limit" + ;; + foreach,--*|sync,--*) + __gitcomp "--recursive" + ;; + *) + ;; + esac } _git_svn () -- 2.10.2 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v2 2/7] completion: add subcommand completion for rerere 2017-02-03 11:01 [PATCH v2 0/7] completion bash: add more options and commands cornelius.weig 2017-02-03 11:01 ` [PATCH v2 1/7] completion: teach submodule subcommands to complete options cornelius.weig @ 2017-02-03 11:01 ` cornelius.weig 2017-02-03 11:01 ` [PATCH v2 3/7] completion: improve bash completion for git-add cornelius.weig ` (5 subsequent siblings) 7 siblings, 0 replies; 15+ messages in thread From: cornelius.weig @ 2017-02-03 11:01 UTC (permalink / raw) To: git; +Cc: szeder.dev, j6t, Cornelius Weig From: Cornelius Weig <cornelius.weig@tngtech.com> Managing recorded resolutions requires command-line usage of git-rerere. Added subcommand completion for rerere and path completion for its subcommand forget. Signed-off-by: Cornelius Weig <cornelius.weig@tngtech.com> Reviewed-by: SZEDER Gábor <szeder.dev@gmail.com> --- contrib/completion/git-completion.bash | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index c54a557..8329f09 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -2401,6 +2401,17 @@ _git_replace () __gitcomp_nl "$(__git_refs)" } +_git_rerere () +{ + local subcommands="clear forget diff remaining status gc" + local subcommand="$(__git_find_on_cmdline "$subcommands")" + if test -z "$subcommand" + then + __gitcomp "$subcommands" + return + fi +} + _git_reset () { __git_has_doubledash && return -- 2.10.2 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v2 3/7] completion: improve bash completion for git-add 2017-02-03 11:01 [PATCH v2 0/7] completion bash: add more options and commands cornelius.weig 2017-02-03 11:01 ` [PATCH v2 1/7] completion: teach submodule subcommands to complete options cornelius.weig 2017-02-03 11:01 ` [PATCH v2 2/7] completion: add subcommand completion for rerere cornelius.weig @ 2017-02-03 11:01 ` cornelius.weig 2017-02-03 11:01 ` [PATCH v2 4/7] completion: teach ls-remote to complete options cornelius.weig ` (4 subsequent siblings) 7 siblings, 0 replies; 15+ messages in thread From: cornelius.weig @ 2017-02-03 11:01 UTC (permalink / raw) To: git; +Cc: szeder.dev, j6t, Cornelius Weig From: Cornelius Weig <cornelius.weig@tngtech.com> Command completion for git-add did not recognize some long-options. This commits adds completion for all long-options that are mentioned in the man-page synopsis. In addition, if the user specified `--update` or `-u`, path completion will only suggest modified tracked files. Signed-off-by: Cornelius Weig <cornelius.weig@tngtech.com> Reviewed-by: SZEDER Gábor <szeder.dev@gmail.com> --- contrib/completion/git-completion.bash | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 8329f09..652c7e2 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -947,13 +947,17 @@ _git_add () --*) __gitcomp " --interactive --refresh --patch --update --dry-run - --ignore-errors --intent-to-add + --ignore-errors --intent-to-add --force --edit --chmod= " return esac - # XXX should we check for --update and --all options ? - __git_complete_index_file "--others --modified --directory --no-empty-directory" + local complete_opt="--others --modified --directory --no-empty-directory" + if test -n "$(__git_find_on_cmdline "-u --update")" + then + complete_opt="--modified" + fi + __git_complete_index_file "$complete_opt" } _git_archive () -- 2.10.2 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v2 4/7] completion: teach ls-remote to complete options 2017-02-03 11:01 [PATCH v2 0/7] completion bash: add more options and commands cornelius.weig ` (2 preceding siblings ...) 2017-02-03 11:01 ` [PATCH v2 3/7] completion: improve bash completion for git-add cornelius.weig @ 2017-02-03 11:01 ` cornelius.weig 2017-02-03 11:01 ` [PATCH v2 5/7] completion: teach replace " cornelius.weig ` (3 subsequent siblings) 7 siblings, 0 replies; 15+ messages in thread From: cornelius.weig @ 2017-02-03 11:01 UTC (permalink / raw) To: git; +Cc: szeder.dev, j6t, Cornelius Weig From: Cornelius Weig <cornelius.weig@tngtech.com> ls-remote needs to complete remote names and its own options. In addition to the existing remote name completions, do also complete the options --heads, --tags, --refs, --get-url, and --symref. Signed-off-by: Cornelius Weig <cornelius.weig@tngtech.com> Reviewed-by: SZEDER Gábor <szeder.dev@gmail.com> --- contrib/completion/git-completion.bash | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 652c7e2..a355eeb 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1449,6 +1449,12 @@ _git_ls_files () _git_ls_remote () { + case "$cur" in + --*) + __gitcomp "--heads --tags --refs --get-url --symref" + return + ;; + esac __gitcomp_nl "$(__git_remotes)" } -- 2.10.2 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v2 5/7] completion: teach replace to complete options 2017-02-03 11:01 [PATCH v2 0/7] completion bash: add more options and commands cornelius.weig ` (3 preceding siblings ...) 2017-02-03 11:01 ` [PATCH v2 4/7] completion: teach ls-remote to complete options cornelius.weig @ 2017-02-03 11:01 ` cornelius.weig 2017-02-03 11:01 ` [PATCH v2 6/7] completion: teach remote subcommands " cornelius.weig ` (2 subsequent siblings) 7 siblings, 0 replies; 15+ messages in thread From: cornelius.weig @ 2017-02-03 11:01 UTC (permalink / raw) To: git; +Cc: szeder.dev, j6t, Cornelius Weig From: Cornelius Weig <cornelius.weig@tngtech.com> Git-replace needs to complete references and its own options. In addition to the existing references completions, do also complete the options --edit --graft --format= --list --delete. Signed-off-by: Cornelius Weig <cornelius.weig@tngtech.com> Reviewed-by: SZEDER Gábor <szeder.dev@gmail.com> --- contrib/completion/git-completion.bash | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index a355eeb..4841036 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -2408,6 +2408,12 @@ _git_remote () _git_replace () { + case "$cur" in + --*) + __gitcomp "--edit --graft --format= --list --delete" + return + ;; + esac __gitcomp_nl "$(__git_refs)" } -- 2.10.2 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v2 6/7] completion: teach remote subcommands to complete options 2017-02-03 11:01 [PATCH v2 0/7] completion bash: add more options and commands cornelius.weig ` (4 preceding siblings ...) 2017-02-03 11:01 ` [PATCH v2 5/7] completion: teach replace " cornelius.weig @ 2017-02-03 11:01 ` cornelius.weig 2017-02-03 11:01 ` [PATCH v2 7/7] completion: recognize more long-options cornelius.weig 2017-02-06 21:29 ` [PATCH v2 0/7] completion bash: add more options and commands Junio C Hamano 7 siblings, 0 replies; 15+ messages in thread From: cornelius.weig @ 2017-02-03 11:01 UTC (permalink / raw) To: git; +Cc: szeder.dev, j6t, Cornelius Weig From: Cornelius Weig <cornelius.weig@tngtech.com> Git-remote needs to complete remote names, its subcommands, and options thereof. In addition to the existing subcommand and remote name completion, do also complete the options - add: --track --master --fetch --tags --no-tags --mirror= - set-url: --push --add --delete - get-url: --push --all - prune: --dry-run Signed-off-by: Cornelius Weig <cornelius.weig@tngtech.com> Reviewed-by: SZEDER Gábor <szeder.dev@gmail.com> --- contrib/completion/git-completion.bash | 45 ++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 4841036..d8960cf 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -2384,24 +2384,55 @@ _git_config () _git_remote () { - local subcommands="add rename remove set-head set-branches set-url show prune update" + local subcommands=" + add rename remove set-head set-branches + get-url set-url show prune update + " local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then - __gitcomp "$subcommands" + case "$cur" in + --*) + __gitcomp "--verbose" + ;; + *) + __gitcomp "$subcommands" + ;; + esac return fi - case "$subcommand" in - rename|remove|set-url|show|prune) - __gitcomp_nl "$(__git_remotes)" + case "$subcommand,$cur" in + add,--*) + __gitcomp "--track --master --fetch --tags --no-tags --mirror=" + ;; + add,*) + ;; + set-head,--*) + __gitcomp "--auto --delete" ;; - set-head|set-branches) + set-branches,--*) + __gitcomp "--add" + ;; + set-head,*|set-branches,*) __git_complete_remote_or_refspec ;; - update) + update,--*) + __gitcomp "--prune" + ;; + update,*) __gitcomp "$(__git_get_config_variables "remotes")" ;; + set-url,--*) + __gitcomp "--push --add --delete" + ;; + get-url,--*) + __gitcomp "--push --all" + ;; + prune,--*) + __gitcomp "--dry-run" + ;; *) + __gitcomp_nl "$(__git_remotes)" ;; esac } -- 2.10.2 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v2 7/7] completion: recognize more long-options 2017-02-03 11:01 [PATCH v2 0/7] completion bash: add more options and commands cornelius.weig ` (5 preceding siblings ...) 2017-02-03 11:01 ` [PATCH v2 6/7] completion: teach remote subcommands " cornelius.weig @ 2017-02-03 11:01 ` cornelius.weig 2017-02-06 21:29 ` [PATCH v2 0/7] completion bash: add more options and commands Junio C Hamano 7 siblings, 0 replies; 15+ messages in thread From: cornelius.weig @ 2017-02-03 11:01 UTC (permalink / raw) To: git; +Cc: szeder.dev, j6t, Cornelius Weig From: Cornelius Weig <cornelius.weig@tngtech.com> Command completion only recognizes a subset of the available options for the various git commands. The set of recognized options needs to balance between having all useful options and to not clutter the terminal. This commit adds all long-options that are mentioned in the man-page synopsis of the respective git command. Possibly dangerous options are not included in this set, to avoid accidental data loss. The added options are: - apply: --recount --directory= - archive: --output - branch: --column --no-column --sort= --points-at - clone: --no-single-branch --shallow-submodules - commit: --patch --short --date --allow-empty - describe: --first-parent - fetch, pull: --unshallow --update-shallow - fsck: --name-objects - grep: --break --heading --show-function --function-context --untracked --no-index - mergetool: --prompt --no-prompt - reset: --keep - revert: --strategy= --strategy-option= - shortlog: --email - tag: --merged --no-merged --create-reflog Signed-off-by: Cornelius Weig <cornelius.weig@tngtech.com> Helped-by: Johannes Sixt <j6t@kdbg.org> Reviewed-by: SZEDER Gábor <szeder.dev@gmail.com> --- contrib/completion/git-completion.bash | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index d8960cf..3545f6a 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -936,6 +936,7 @@ _git_apply () --apply --no-add --exclude= --ignore-whitespace --ignore-space-change --whitespace= --inaccurate-eof --verbose + --recount --directory= " return esac @@ -974,7 +975,7 @@ _git_archive () --*) __gitcomp " --format= --list --verbose - --prefix= --remote= --exec= + --prefix= --remote= --exec= --output " return ;; @@ -1029,6 +1030,7 @@ _git_branch () --track --no-track --contains --merged --no-merged --set-upstream-to= --edit-description --list --unset-upstream --delete --move --remotes + --column --no-column --sort= --points-at " ;; *) @@ -1142,6 +1144,8 @@ _git_clone () --single-branch --branch --recurse-submodules + --no-single-branch + --shallow-submodules " return ;; @@ -1183,6 +1187,7 @@ _git_commit () --reset-author --file= --message= --template= --cleanup= --untracked-files --untracked-files= --verbose --quiet --fixup= --squash= + --patch --short --date --allow-empty " return esac @@ -1201,7 +1206,7 @@ _git_describe () --*) __gitcomp " --all --tags --contains --abbrev= --candidates= - --exact-match --debug --long --match --always + --exact-match --debug --long --match --always --first-parent " return esac @@ -1284,6 +1289,7 @@ __git_fetch_recurse_submodules="yes on-demand no" __git_fetch_options=" --quiet --verbose --append --upload-pack --force --keep --depth= --tags --no-tags --all --prune --dry-run --recurse-submodules= + --unshallow --update-shallow " _git_fetch () @@ -1333,7 +1339,7 @@ _git_fsck () --*) __gitcomp " --tags --root --unreachable --cache --no-reflogs --full - --strict --verbose --lost-found + --strict --verbose --lost-found --name-objects " return ;; @@ -1377,6 +1383,8 @@ _git_grep () --max-depth --count --and --or --not --all-match + --break --heading --show-function --function-context + --untracked --no-index " return ;; @@ -1576,7 +1584,7 @@ _git_mergetool () return ;; --*) - __gitcomp "--tool=" + __gitcomp "--tool= --prompt --no-prompt" return ;; esac @@ -2465,7 +2473,7 @@ _git_reset () case "$cur" in --*) - __gitcomp "--merge --mixed --hard --soft --patch" + __gitcomp "--merge --mixed --hard --soft --patch --keep" return ;; esac @@ -2481,7 +2489,10 @@ _git_revert () fi case "$cur" in --*) - __gitcomp "--edit --mainline --no-edit --no-commit --signoff" + __gitcomp " + --edit --mainline --no-edit --no-commit --signoff + --strategy= --strategy-option= + " return ;; esac @@ -2509,7 +2520,7 @@ _git_shortlog () __gitcomp " $__git_log_common_options $__git_log_shortlog_options - --numbered --summary + --numbered --summary --email " return ;; @@ -2787,8 +2798,8 @@ _git_tag () --*) __gitcomp " --list --delete --verify --annotate --message --file - --sign --cleanup --local-user --force --column --sort - --contains --points-at + --sign --cleanup --local-user --force --column --sort= + --contains --points-at --merged --no-merged --create-reflog " ;; esac -- 2.10.2 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH v2 0/7] completion bash: add more options and commands 2017-02-03 11:01 [PATCH v2 0/7] completion bash: add more options and commands cornelius.weig ` (6 preceding siblings ...) 2017-02-03 11:01 ` [PATCH v2 7/7] completion: recognize more long-options cornelius.weig @ 2017-02-06 21:29 ` Junio C Hamano 2017-02-07 9:00 ` Johannes Sixt 7 siblings, 1 reply; 15+ messages in thread From: Junio C Hamano @ 2017-02-06 21:29 UTC (permalink / raw) To: cornelius.weig; +Cc: git, szeder.dev, j6t cornelius.weig@tngtech.com writes: > From: Cornelius Weig <cornelius.weig@tngtech.com> > > This is the re-roll of patch series <20170122225724.19360-1-cornelius.weig@tngtech.com>. > > This patch series adds all long-options that are mentioned in the synopsis of > the man-page for the respective git-command. There are only a few exceptions, > as discussed in the above thread. For example, no unsafe options should be > completed. > Furthermore, the patches add subommand option completion for git-submodule and > git-remote. Reviewers, do these look good now? Thanks all. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v2 0/7] completion bash: add more options and commands 2017-02-06 21:29 ` [PATCH v2 0/7] completion bash: add more options and commands Junio C Hamano @ 2017-02-07 9:00 ` Johannes Sixt 0 siblings, 0 replies; 15+ messages in thread From: Johannes Sixt @ 2017-02-07 9:00 UTC (permalink / raw) To: Junio C Hamano; +Cc: cornelius.weig, git, szeder.dev Am 06.02.2017 um 22:29 schrieb Junio C Hamano: > cornelius.weig@tngtech.com writes: > >> From: Cornelius Weig <cornelius.weig@tngtech.com> >> >> This is the re-roll of patch series <20170122225724.19360-1-cornelius.weig@tngtech.com>. >> >> This patch series adds all long-options that are mentioned in the synopsis of >> the man-page for the respective git-command. There are only a few exceptions, >> as discussed in the above thread. For example, no unsafe options should be >> completed. >> Furthermore, the patches add subommand option completion for git-submodule and >> git-remote. > > Reviewers, do these look good now? My concerns have been addressed. The patches look good from a cursory read. -- Hannes ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 7/7] completion: recognize more long-options @ 2017-01-24 7:15 Johannes Sixt 2017-01-27 21:17 ` [PATCH v2 0/7] " cornelius.weig 0 siblings, 1 reply; 15+ messages in thread From: Johannes Sixt @ 2017-01-24 7:15 UTC (permalink / raw) To: Cornelius Weig Cc: bitte.keine.werbung.einwerfen, git, thomas.braun, szeder, john If at all possible, please use your real email address as the From address. It is pointless to hide behind a fake address because as Git contributor you will have to reveal your identity anyway. Please study item (5) "Sign your work" in Documentation/SubmittingPatches and sign off your work. I'm by no means a bash completion expert, but I have a comment on this patch. Am 22.01.2017 um 23:57 schrieb bitte.keine.werbung.einwerfen@googlemail.com: > Recognize several new long-options for bash completion in the following > commands: AFAIR, it was a deliberate decision that potentially destructive command line options are not included in command completions. In the list given, I find these: > - apply: --unsafe-paths > - reset: --merge --mixed --hard --soft --patch --keep > - rm: --force Additionally, these options are only for internal purposes, but I may be wrong: > - archive: --remote= --exec= -- Hannes ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v2 0/7] completion: recognize more long-options 2017-01-24 7:15 [PATCH 7/7] completion: recognize more long-options Johannes Sixt @ 2017-01-27 21:17 ` cornelius.weig 2017-01-27 21:17 ` [PATCH v2 7/7] " cornelius.weig 0 siblings, 1 reply; 15+ messages in thread From: cornelius.weig @ 2017-01-27 21:17 UTC (permalink / raw) To: j6t; +Cc: szeder.dev, spearce, git, Cornelius Weig From: Cornelius Weig <cornelius.weig@tngtech.com> This revision addresses Johannes' concerns. Changes wrt v1: - fixed the commit message: two of the "dangerous" options erroneously ended up in the commit message. These options were already in the list of auto-completable options. - removed the possibly dangerous option '--unsafe-paths' from git-apply. - added my sign-off Patches 1-6 are not resent, because they have not changed (other than my added sign-off). Also, I added further people to CC, because nobody actually has looked at the code yet. Cornelius Weig (7): completion: recognize more long-options contrib/completion/git-completion.bash | 132 +++++++++++++++++++++++++++------ 1 file changed, 110 insertions(+), 22 deletions(-) -- 2.10.2 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v2 7/7] completion: recognize more long-options 2017-01-27 21:17 ` [PATCH v2 0/7] " cornelius.weig @ 2017-01-27 21:17 ` cornelius.weig 2017-01-31 22:17 ` SZEDER Gábor 0 siblings, 1 reply; 15+ messages in thread From: cornelius.weig @ 2017-01-27 21:17 UTC (permalink / raw) To: j6t; +Cc: szeder.dev, spearce, git, Cornelius Weig From: Cornelius Weig <cornelius.weig@tngtech.com> Recognize several new long-options for bash completion in the following commands: - apply: --recount --directory= - archive: --output - branch: --column --no-column --sort= --points-at - clone: --no-single-branch --shallow-submodules - commit: --patch --short --date --allow-empty - describe: --first-parent - fetch, pull: --unshallow --update-shallow - fsck: --name-objects - grep: --break --heading --show-function --function-context --untracked --no-index - mergetool: --prompt --no-prompt - reset: --keep - revert: --strategy= --strategy-option= - rm: --force - shortlog: --email - tag: --merged --no-merged --create-reflog Signed-off-by: Cornelius Weig <cornelius.weig@tngtech.com> Helped-by: Johannes Sixt <j6t@kdbg.org> --- contrib/completion/git-completion.bash | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 0e09519..933bb6e 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -936,6 +936,7 @@ _git_apply () --apply --no-add --exclude= --ignore-whitespace --ignore-space-change --whitespace= --inaccurate-eof --verbose + --recount --directory= " return esac @@ -974,7 +975,7 @@ _git_archive () --*) __gitcomp " --format= --list --verbose - --prefix= --remote= --exec= + --prefix= --remote= --exec= --output " return ;; @@ -1029,6 +1030,7 @@ _git_branch () --track --no-track --contains --merged --no-merged --set-upstream-to= --edit-description --list --unset-upstream --delete --move --remotes + --column --no-column --sort= --points-at " ;; *) @@ -1142,6 +1144,8 @@ _git_clone () --single-branch --branch --recurse-submodules + --no-single-branch + --shallow-submodules " return ;; @@ -1183,6 +1187,7 @@ _git_commit () --reset-author --file= --message= --template= --cleanup= --untracked-files --untracked-files= --verbose --quiet --fixup= --squash= + --patch --short --date --allow-empty " return esac @@ -1201,7 +1206,7 @@ _git_describe () --*) __gitcomp " --all --tags --contains --abbrev= --candidates= - --exact-match --debug --long --match --always + --exact-match --debug --long --match --always --first-parent " return esac @@ -1284,6 +1289,7 @@ __git_fetch_recurse_submodules="yes on-demand no" __git_fetch_options=" --quiet --verbose --append --upload-pack --force --keep --depth= --tags --no-tags --all --prune --dry-run --recurse-submodules= + --unshallow --update-shallow " _git_fetch () @@ -1333,7 +1339,7 @@ _git_fsck () --*) __gitcomp " --tags --root --unreachable --cache --no-reflogs --full - --strict --verbose --lost-found + --strict --verbose --lost-found --name-objects " return ;; @@ -1377,6 +1383,8 @@ _git_grep () --max-depth --count --and --or --not --all-match + --break --heading --show-function --function-context + --untracked --no-index " return ;; @@ -1576,7 +1584,7 @@ _git_mergetool () return ;; --*) - __gitcomp "--tool=" + __gitcomp "--tool= --prompt --no-prompt" return ;; esac @@ -2456,7 +2464,7 @@ _git_reset () case "$cur" in --*) - __gitcomp "--merge --mixed --hard --soft --patch" + __gitcomp "--merge --mixed --hard --soft --patch --keep" return ;; esac @@ -2472,7 +2480,10 @@ _git_revert () fi case "$cur" in --*) - __gitcomp "--edit --mainline --no-edit --no-commit --signoff" + __gitcomp " + --edit --mainline --no-edit --no-commit --signoff + --strategy= --strategy-option= + " return ;; esac @@ -2483,7 +2494,7 @@ _git_rm () { case "$cur" in --*) - __gitcomp "--cached --dry-run --ignore-unmatch --quiet" + __gitcomp "--cached --dry-run --ignore-unmatch --quiet --force" return ;; esac @@ -2500,7 +2511,7 @@ _git_shortlog () __gitcomp " $__git_log_common_options $__git_log_shortlog_options - --numbered --summary + --numbered --summary --email " return ;; @@ -2778,8 +2789,8 @@ _git_tag () --*) __gitcomp " --list --delete --verify --annotate --message --file - --sign --cleanup --local-user --force --column --sort - --contains --points-at + --sign --cleanup --local-user --force --column --sort= + --contains --points-at --merged --no-merged --create-reflog " ;; esac -- 2.10.2 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH v2 7/7] completion: recognize more long-options 2017-01-27 21:17 ` [PATCH v2 7/7] " cornelius.weig @ 2017-01-31 22:17 ` SZEDER Gábor 2017-02-01 16:49 ` Cornelius Weig 0 siblings, 1 reply; 15+ messages in thread From: SZEDER Gábor @ 2017-01-31 22:17 UTC (permalink / raw) To: Cornelius Weig; +Cc: j6t, spearce, git On Fri, Jan 27, 2017 at 10:17 PM, <cornelius.weig@tngtech.com> wrote: > From: Cornelius Weig <cornelius.weig@tngtech.com> > > Recognize several new long-options for bash completion in the following > commands: Adding more long options that git commands learn along the way is always an improvement. However, seeing "_several_ new long options" (or "some long options" in one of the other patches in the series) makes the reader wonder: are these the only new long options missing or are there more? If there are more, why only these are added? If there aren't any more missing long options left, then please say so, e.g. "Add all missing long options, except the potentially desctructive ones, for the following commands: ...." > - apply: --recount --directory= > - archive: --output > - branch: --column --no-column --sort= --points-at > - clone: --no-single-branch --shallow-submodules > - commit: --patch --short --date --allow-empty > - describe: --first-parent > - fetch, pull: --unshallow --update-shallow > - fsck: --name-objects > - grep: --break --heading --show-function --function-context > --untracked --no-index > - mergetool: --prompt --no-prompt > - reset: --keep > - revert: --strategy= --strategy-option= > - rm: --force '--force' is a potentially destructive option, too. > - shortlog: --email > - tag: --merged --no-merged --create-reflog > > Signed-off-by: Cornelius Weig <cornelius.weig@tngtech.com> > Helped-by: Johannes Sixt <j6t@kdbg.org> > --- > contrib/completion/git-completion.bash | 31 +++++++++++++++++++++---------- > 1 file changed, 21 insertions(+), 10 deletions(-) > > diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash > index 0e09519..933bb6e 100644 > --- a/contrib/completion/git-completion.bash > +++ b/contrib/completion/git-completion.bash > @@ -936,6 +936,7 @@ _git_apply () > --apply --no-add --exclude= > --ignore-whitespace --ignore-space-change > --whitespace= --inaccurate-eof --verbose > + --recount --directory= > " > return > esac > @@ -974,7 +975,7 @@ _git_archive () > --*) > __gitcomp " > --format= --list --verbose > - --prefix= --remote= --exec= > + --prefix= --remote= --exec= --output > " > return > ;; > @@ -1029,6 +1030,7 @@ _git_branch () > --track --no-track --contains --merged --no-merged > --set-upstream-to= --edit-description --list > --unset-upstream --delete --move --remotes > + --column --no-column --sort= --points-at > " > ;; > *) > @@ -1142,6 +1144,8 @@ _git_clone () > --single-branch > --branch > --recurse-submodules > + --no-single-branch > + --shallow-submodules > " > return > ;; > @@ -1183,6 +1187,7 @@ _git_commit () > --reset-author --file= --message= --template= > --cleanup= --untracked-files --untracked-files= > --verbose --quiet --fixup= --squash= > + --patch --short --date --allow-empty > " > return > esac > @@ -1201,7 +1206,7 @@ _git_describe () > --*) > __gitcomp " > --all --tags --contains --abbrev= --candidates= > - --exact-match --debug --long --match --always > + --exact-match --debug --long --match --always --first-parent > " > return > esac > @@ -1284,6 +1289,7 @@ __git_fetch_recurse_submodules="yes on-demand no" > __git_fetch_options=" > --quiet --verbose --append --upload-pack --force --keep --depth= > --tags --no-tags --all --prune --dry-run --recurse-submodules= > + --unshallow --update-shallow > " > > _git_fetch () > @@ -1333,7 +1339,7 @@ _git_fsck () > --*) > __gitcomp " > --tags --root --unreachable --cache --no-reflogs --full > - --strict --verbose --lost-found > + --strict --verbose --lost-found --name-objects > " > return > ;; > @@ -1377,6 +1383,8 @@ _git_grep () > --max-depth > --count > --and --or --not --all-match > + --break --heading --show-function --function-context > + --untracked --no-index > " > return > ;; > @@ -1576,7 +1584,7 @@ _git_mergetool () > return > ;; > --*) > - __gitcomp "--tool=" > + __gitcomp "--tool= --prompt --no-prompt" > return > ;; > esac > @@ -2456,7 +2464,7 @@ _git_reset () > > case "$cur" in > --*) > - __gitcomp "--merge --mixed --hard --soft --patch" > + __gitcomp "--merge --mixed --hard --soft --patch --keep" > return > ;; > esac > @@ -2472,7 +2480,10 @@ _git_revert () > fi > case "$cur" in > --*) > - __gitcomp "--edit --mainline --no-edit --no-commit --signoff" > + __gitcomp " > + --edit --mainline --no-edit --no-commit --signoff > + --strategy= --strategy-option= > + " > return > ;; > esac > @@ -2483,7 +2494,7 @@ _git_rm () > { > case "$cur" in > --*) > - __gitcomp "--cached --dry-run --ignore-unmatch --quiet" > + __gitcomp "--cached --dry-run --ignore-unmatch --quiet --force" > return > ;; > esac > @@ -2500,7 +2511,7 @@ _git_shortlog () > __gitcomp " > $__git_log_common_options > $__git_log_shortlog_options > - --numbered --summary > + --numbered --summary --email > " > return > ;; > @@ -2778,8 +2789,8 @@ _git_tag () > --*) > __gitcomp " > --list --delete --verify --annotate --message --file > - --sign --cleanup --local-user --force --column --sort > - --contains --points-at > + --sign --cleanup --local-user --force --column --sort= > + --contains --points-at --merged --no-merged --create-reflog > " > ;; > esac > -- > 2.10.2 > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v2 7/7] completion: recognize more long-options 2017-01-31 22:17 ` SZEDER Gábor @ 2017-02-01 16:49 ` Cornelius Weig 2017-02-02 2:00 ` SZEDER Gábor 0 siblings, 1 reply; 15+ messages in thread From: Cornelius Weig @ 2017-02-01 16:49 UTC (permalink / raw) To: SZEDER Gábor; +Cc: j6t, spearce, git Hi Gabor, thanks for taking a look at these commits. On 01/31/2017 11:17 PM, SZEDER Gábor wrote: > On Fri, Jan 27, 2017 at 10:17 PM, <cornelius.weig@tngtech.com> wrote: >> From: Cornelius Weig <cornelius.weig@tngtech.com> >> >> Recognize several new long-options for bash completion in the following >> commands: > > Adding more long options that git commands learn along the way is > always an improvement. However, seeing "_several_ new long options" > (or "some long options" in one of the other patches in the series) > makes the reader wonder: are these the only new long options missing > or are there more? If there are more, why only these are added? If > there aren't any more missing long options left, then please say so, > e.g. "Add all missing long options, except the potentially > desctructive ones, for the following commands: ...." Personally, I agree with you that > Adding more long options that git commands learn along the way is > always an improvement. However, people may start complaining that their terminal becomes too cluttered when doing a double-Tab. In my cover letter, I go to length about this. My assumption was that all options that are mentioned in the introduction of the command man-page should be important enough to have them in the completion list. I'll change my commit message accordingly. >> - rm: --force > > '--force' is a potentially destructive option, too. Thanks for spotting this. Btw, I haven't found that non-destructive options should not be eligible for completion. To avoid confusion about this in the future, I suggest to also change the documentation: index 933bb6e..96f1c7f 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -13,7 +13,7 @@ # *) git email aliases for git-send-email # *) tree paths within 'ref:path/to/file' expressions # *) file paths within current working directory and index -# *) common --long-options +# *) common non-destructive --long-options # # To use these routines: # I take it you have also looked at the code itself? Then I would gladly mention you as reviewer in my sign-off. ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH v2 7/7] completion: recognize more long-options 2017-02-01 16:49 ` Cornelius Weig @ 2017-02-02 2:00 ` SZEDER Gábor 2017-02-02 10:40 ` Cornelius Weig 0 siblings, 1 reply; 15+ messages in thread From: SZEDER Gábor @ 2017-02-02 2:00 UTC (permalink / raw) To: Cornelius Weig; +Cc: j6t, Shawn Pearce, git On Wed, Feb 1, 2017 at 5:49 PM, Cornelius Weig <cornelius.weig@tngtech.com> wrote: > Hi Gabor, > > thanks for taking a look at these commits. > > On 01/31/2017 11:17 PM, SZEDER Gábor wrote: >> On Fri, Jan 27, 2017 at 10:17 PM, <cornelius.weig@tngtech.com> wrote: >>> From: Cornelius Weig <cornelius.weig@tngtech.com> >>> >>> Recognize several new long-options for bash completion in the following >>> commands: >> >> Adding more long options that git commands learn along the way is >> always an improvement. However, seeing "_several_ new long options" >> (or "some long options" in one of the other patches in the series) >> makes the reader wonder: are these the only new long options missing >> or are there more? If there are more, why only these are added? If >> there aren't any more missing long options left, then please say so, >> e.g. "Add all missing long options, except the potentially >> desctructive ones, for the following commands: ...." > > Personally, I agree with you that >> Adding more long options that git commands learn along the way is >> always an improvement. > However, people may start complaining that their terminal becomes too > cluttered when doing a double-Tab. In my cover letter, I go to length > about this. My assumption was that all options that are mentioned in the > introduction of the command man-page should be important enough to have > them in the completion list. But that doesn't mean that the ones not mentioned in the synopsis section are not worth completing. The list of options listed by the completion script for several of these commands fits on a single line. The command with the most options among these is 'git pull', and even its options don't fill more than half of a 80x25 screen. I see no danger of people coming complaining. > I'll change my commit message accordingly. > >>> - rm: --force >> >> '--force' is a potentially destructive option, too. > > Thanks for spotting this. > > Btw, I haven't found that non-destructive options should not be eligible > for completion. To avoid confusion about this in the future, I suggest > to also change the documentation: > > index 933bb6e..96f1c7f 100644 > --- a/contrib/completion/git-completion.bash > +++ b/contrib/completion/git-completion.bash > @@ -13,7 +13,7 @@ > # *) git email aliases for git-send-email > # *) tree paths within 'ref:path/to/file' expressions > # *) file paths within current working directory and index > -# *) common --long-options > +# *) common non-destructive --long-options I don't mind such a change, but I don't think that list was ever meant to be comprehensive or decisive. It is definitely not the former, as it's missing several things that the completion script does support. OTOH, it talks about .git/remotes, which has been considered legacy for quite some years (though it's right, because the completion script still supports it). > I take it you have also looked at the code itself? Then I would gladly > mention you as reviewer in my sign-off. Yeah, most of the changes was rather straightforward, except the completion of 'git remote's subcommands' options, but that looks good, too. Gábor ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v2 7/7] completion: recognize more long-options 2017-02-02 2:00 ` SZEDER Gábor @ 2017-02-02 10:40 ` Cornelius Weig 0 siblings, 0 replies; 15+ messages in thread From: Cornelius Weig @ 2017-02-02 10:40 UTC (permalink / raw) To: SZEDER Gábor; +Cc: j6t, Shawn Pearce, git On 02/02/2017 03:00 AM, SZEDER Gábor wrote: >> Personally, I agree with you that >>> Adding more long options that git commands learn along the way is >>> always an improvement. >> However, people may start complaining that their terminal becomes too >> cluttered when doing a double-Tab. In my cover letter, I go to length >> about this. My assumption was that all options that are mentioned in the >> introduction of the command man-page should be important enough to have >> them in the completion list. > > But that doesn't mean that the ones not mentioned in the synopsis > section are not worth completing. Absolutely. What I meant is that at least the options from the synopsis should be contained in the set of completable options. >> Btw, I haven't found that non-destructive options should not be eligible >> for completion. To avoid confusion about this in the future, I suggest >> to also change the documentation: >> >> index 933bb6e..96f1c7f 100644 >> --- a/contrib/completion/git-completion.bash >> +++ b/contrib/completion/git-completion.bash >> @@ -13,7 +13,7 @@ >> # *) git email aliases for git-send-email >> # *) tree paths within 'ref:path/to/file' expressions >> # *) file paths within current working directory and index >> -# *) common --long-options >> +# *) common non-destructive --long-options > > I don't mind such a change, but I don't think that list was ever meant > to be comprehensive or decisive. It is definitely not the former, as > it's missing several things that the completion script does support. > OTOH, it talks about .git/remotes, which has been considered legacy > for quite some years (though it's right, because the completion script > still supports it). Then let's not do that change, because for some commands destructive long-options have been in the list of completed options for quite a while. Given that, the above change of the documentation, might stir up more confusion than it settles. ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2017-02-07 9:00 UTC | newest] Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-02-03 11:01 [PATCH v2 0/7] completion bash: add more options and commands cornelius.weig 2017-02-03 11:01 ` [PATCH v2 1/7] completion: teach submodule subcommands to complete options cornelius.weig 2017-02-03 11:01 ` [PATCH v2 2/7] completion: add subcommand completion for rerere cornelius.weig 2017-02-03 11:01 ` [PATCH v2 3/7] completion: improve bash completion for git-add cornelius.weig 2017-02-03 11:01 ` [PATCH v2 4/7] completion: teach ls-remote to complete options cornelius.weig 2017-02-03 11:01 ` [PATCH v2 5/7] completion: teach replace " cornelius.weig 2017-02-03 11:01 ` [PATCH v2 6/7] completion: teach remote subcommands " cornelius.weig 2017-02-03 11:01 ` [PATCH v2 7/7] completion: recognize more long-options cornelius.weig 2017-02-06 21:29 ` [PATCH v2 0/7] completion bash: add more options and commands Junio C Hamano 2017-02-07 9:00 ` Johannes Sixt -- strict thread matches above, loose matches on Subject: below -- 2017-01-24 7:15 [PATCH 7/7] completion: recognize more long-options Johannes Sixt 2017-01-27 21:17 ` [PATCH v2 0/7] " cornelius.weig 2017-01-27 21:17 ` [PATCH v2 7/7] " cornelius.weig 2017-01-31 22:17 ` SZEDER Gábor 2017-02-01 16:49 ` Cornelius Weig 2017-02-02 2:00 ` SZEDER Gábor 2017-02-02 10:40 ` Cornelius Weig
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).