All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org
Cc: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH v2 00/41] Automate updating git-completion.bash a bit
Date: Wed, 31 Jan 2018 18:05:06 +0700	[thread overview]
Message-ID: <20180131110547.20577-1-pclouds@gmail.com> (raw)

I posted a proof of concept a while back [1]. This is the full version.

This series lets "git" binary help git-completion.bash to complete
--<stuff> so that when a new option is added, we don't have to update
git-completion.bash manually too (people often forget it). As a side
effect, about 180 more options are now completable.

parse-options is updated to allow developers to flag certain options
not to be completable if they want finer control over it.  But by
default, new non-hidden options are completable. Negative forms must
be handled manually. That's for the next step.

The number of patches is high, but changes after the first four
patches and 33/41 are quite simple. I still need some eyeballs though
to make sure I have not accidentally allowed completion of dangerous
options. Details are broken down per command in each commit message.

If people want to play with this, I have a script [2] that shows all
completable options for most commands (I ignore some that are
shell-based because I don't touch them in this series). You can then
do a "diff" to see new/old options.

There's a small conflict with 'pu' because --prune-tags is added in
git-completion.bash. The solution is simple and beautiful: ignore
those changes, --prune-tags will be completable anyway :)

[1] https://public-inbox.org/git/%3C20180116103700.4505-1-pclouds@gmail.com%3E/
[2] https://gist.github.com/pclouds/f337d4393b5cfab813909b8eea2eaa40

Nguyễn Thái Ngọc Duy (41):
  parse-options: support --git-completion-helper
  parse-options: add OPT_xxx_F() variants
  parse-options: let OPT__FORCE take optional flags argument
  git-completion.bash: introduce __gitcomp_builtin
  completion: use __gitcomp_builtin in _git_add
  completion: use __gitcomp_builtin in _git_am
  completion: use __gitcomp_builtin in _git_apply
  completion: use __gitcomp_builtin in _git_branch
  completion: use __gitcomp_builtin in _git_checkout
  completion: use __gitcomp_builtin in _git_cherry_pick
  completion: use __gitcomp_builtin in _git_clean
  completion: use __gitcomp_builtin in _git_clone
  completion: use __gitcomp_builtin in _git_commit
  completion: use __gitcomp_builtin in _git_config
  completion: use __gitcomp_builtin in _git_describe
  completion: use __gitcomp_builtin in _git_difftool
  completion: use __gitcomp_builtin in _git_fetch
  completion: use __gitcomp_builtin in _git_fsck
  completion: use __gitcomp_builtin in _git_gc
  completion: use __gitcomp_builtin in _git_grep
  completion: use __gitcomp_builtin in _git_help
  completion: use __gitcomp_builtin in _git_init
  completion: use __gitcomp_builtin in _git_ls_files
  completion: use __gitcomp_builtin in _git_ls_remote
  completion: use __gitcomp_builtin in _git_merge
  completion: use __gitcomp_builtin in _git_merge_base
  completion: use __gitcomp_builtin in _git_mv
  completion: use __gitcomp_builtin in _git_name_rev
  completion: use __gitcomp_builtin in _git_notes
  completion: use __gitcomp_builtin in _git_pull
  completion: use __gitcomp_builtin in _git_push
  completion: use __gitcomp_builtin in _git_remote
  remote: force completing --mirror= instead of --mirror
  completion: use __gitcomp_builtin in _git_replace
  completion: use __gitcomp_builtin in _git_reset
  completion: use __gitcomp_builtin in _git_revert
  completion: use __gitcomp_builtin in _git_rm
  completion: use __gitcomp_builtin in _git_show_branch
  completion: use __gitcomp_builtin in _git_status
  completion: use __gitcomp_builtin in _git_tag
  completion: use __gitcomp_builtin in _git_worktree

 apply.c                                |   5 +-
 builtin/add.c                          |   2 +-
 builtin/am.c                           |  16 +-
 builtin/branch.c                       |   2 +-
 builtin/checkout-index.c               |   2 +-
 builtin/checkout.c                     |   7 +-
 builtin/clean.c                        |   2 +-
 builtin/fetch.c                        |   2 +-
 builtin/gc.c                           |   7 +-
 builtin/grep.c                         |  13 +-
 builtin/ls-remote.c                    |   5 +-
 builtin/mv.c                           |   3 +-
 builtin/notes.c                        |   4 +-
 builtin/pull.c                         |   2 +-
 builtin/push.c                         |   2 +-
 builtin/remote.c                       |   2 +-
 builtin/replace.c                      |   3 +-
 builtin/revert.c                       |  12 +-
 builtin/rm.c                           |   2 +-
 builtin/tag.c                          |   2 +-
 builtin/update-server-info.c           |   2 +-
 builtin/worktree.c                     |   4 +-
 contrib/completion/git-completion.bash | 276 +++++++++----------------
 parse-options.c                        |  46 +++++
 parse-options.h                        |  40 ++--
 rerere.h                               |   3 +-
 t/t9902-completion.sh                  |  12 +-
 27 files changed, 236 insertions(+), 242 deletions(-)

-- 
2.16.1.205.g271f633410


             reply	other threads:[~2018-01-31 11:06 UTC|newest]

Thread overview: 127+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-31 11:05 Nguyễn Thái Ngọc Duy [this message]
2018-01-31 11:05 ` [PATCH v2 01/41] parse-options: support --git-completion-helper Nguyễn Thái Ngọc Duy
2018-01-31 20:22   ` Eric Sunshine
2018-01-31 21:04   ` Eric Sunshine
2018-02-01  0:05     ` Duy Nguyen
2018-02-01  9:54       ` Eric Sunshine
2018-02-01 10:21         ` Duy Nguyen
2018-02-01 19:16           ` Eric Sunshine
2018-02-05  9:56             ` Duy Nguyen
2018-02-06  5:04               ` Eric Sunshine
2018-02-07 23:41                 ` SZEDER Gábor
2018-02-05 10:46     ` Ævar Arnfjörð Bjarmason
2018-02-05 11:22       ` Duy Nguyen
2018-01-31 11:05 ` [PATCH v2 02/41] parse-options: add OPT_xxx_F() variants Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 03/41] parse-options: let OPT__FORCE take optional flags argument Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 04/41] git-completion.bash: introduce __gitcomp_builtin Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 05/41] completion: use __gitcomp_builtin in _git_add Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 06/41] completion: use __gitcomp_builtin in _git_am Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 07/41] completion: use __gitcomp_builtin in _git_apply Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 08/41] completion: use __gitcomp_builtin in _git_branch Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 09/41] completion: use __gitcomp_builtin in _git_checkout Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 10/41] completion: use __gitcomp_builtin in _git_cherry_pick Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 11/41] completion: use __gitcomp_builtin in _git_clean Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 12/41] completion: use __gitcomp_builtin in _git_clone Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 13/41] completion: use __gitcomp_builtin in _git_commit Nguyễn Thái Ngọc Duy
2018-01-31 20:42   ` Eric Sunshine
2018-01-31 11:05 ` [PATCH v2 14/41] completion: use __gitcomp_builtin in _git_config Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 15/41] completion: use __gitcomp_builtin in _git_describe Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 16/41] completion: use __gitcomp_builtin in _git_difftool Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 17/41] completion: use __gitcomp_builtin in _git_fetch Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 18/41] completion: use __gitcomp_builtin in _git_fsck Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 19/41] completion: use __gitcomp_builtin in _git_gc Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 20/41] completion: use __gitcomp_builtin in _git_grep Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 21/41] completion: use __gitcomp_builtin in _git_help Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 22/41] completion: use __gitcomp_builtin in _git_init Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 23/41] completion: use __gitcomp_builtin in _git_ls_files Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 24/41] completion: use __gitcomp_builtin in _git_ls_remote Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 25/41] completion: use __gitcomp_builtin in _git_merge Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 26/41] completion: use __gitcomp_builtin in _git_merge_base Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 27/41] completion: use __gitcomp_builtin in _git_mv Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 28/41] completion: use __gitcomp_builtin in _git_name_rev Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 29/41] completion: use __gitcomp_builtin in _git_notes Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 30/41] completion: use __gitcomp_builtin in _git_pull Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 31/41] completion: use __gitcomp_builtin in _git_push Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 32/41] completion: use __gitcomp_builtin in _git_remote Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 33/41] remote: force completing --mirror= instead of --mirror Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 34/41] completion: use __gitcomp_builtin in _git_replace Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 35/41] completion: use __gitcomp_builtin in _git_reset Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 36/41] completion: use __gitcomp_builtin in _git_revert Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 37/41] completion: use __gitcomp_builtin in _git_rm Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 38/41] completion: use __gitcomp_builtin in _git_show_branch Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 39/41] completion: use __gitcomp_builtin in _git_status Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 40/41] completion: use __gitcomp_builtin in _git_tag Nguyễn Thái Ngọc Duy
2018-01-31 11:05 ` [PATCH v2 41/41] completion: use __gitcomp_builtin in _git_worktree Nguyễn Thái Ngọc Duy
2018-01-31 15:01 ` [PATCH v2 00/41] Automate updating git-completion.bash a bit Ævar Arnfjörð Bjarmason
2018-02-07 19:23 ` Junio C Hamano
2018-02-08 12:05   ` Duy Nguyen
2018-02-09 11:01 ` [PATCH v3 00/42] " Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 01/42] parse-options: support --git-completion-helper Nguyễn Thái Ngọc Duy
2018-12-02 13:41     ` Ævar Arnfjörð Bjarmason
2018-12-09 10:27       ` [PATCH] parse-options: fix SunCC compiler warning Nguyễn Thái Ngọc Duy
2018-12-10  6:36         ` Junio C Hamano
2018-12-10 15:26           ` Duy Nguyen
2018-12-11  2:13             ` Junio C Hamano
2018-12-11 15:40               ` Duy Nguyen
2018-12-12  7:50                 ` Junio C Hamano
2018-12-11 15:35         ` [PATCH v2] " Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 02/42] parse-options: add OPT_xxx_F() variants Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 03/42] parse-options: let OPT__FORCE take optional flags argument Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 04/42] git-completion.bash: introduce __gitcomp_builtin Nguyễn Thái Ngọc Duy
2018-02-09 18:59     ` Junio C Hamano
2018-02-14 15:35     ` SZEDER Gábor
2018-02-23 10:30       ` Duy Nguyen
2018-02-09 11:01   ` [PATCH v3 05/42] completion: use __gitcomp_builtin in _git_add Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 06/42] completion: use __gitcomp_builtin in _git_am Nguyễn Thái Ngọc Duy
2018-02-14 12:53     ` SZEDER Gábor
2018-02-22  9:13       ` Duy Nguyen
2018-02-22 18:19         ` Junio C Hamano
2018-02-23 10:17           ` Duy Nguyen
2018-02-23 18:08             ` Junio C Hamano
2018-02-24 13:58               ` Duy Nguyen
2018-02-09 11:01   ` [PATCH v3 07/42] completion: use __gitcomp_builtin in _git_apply Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 08/42] completion: use __gitcomp_builtin in _git_branch Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 09/42] completion: use __gitcomp_builtin in _git_checkout Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 10/42] completion: use __gitcomp_builtin in _git_cherry_pick Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 11/42] completion: use __gitcomp_builtin in _git_clean Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 12/42] completion: use __gitcomp_builtin in _git_clone Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 13/42] completion: use __gitcomp_builtin in _git_commit Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 14/42] completion: use __gitcomp_builtin in _git_config Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 15/42] completion: use __gitcomp_builtin in _git_describe Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 16/42] completion: use __gitcomp_builtin in _git_difftool Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 17/42] completion: use __gitcomp_builtin in _git_fetch Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 18/42] completion: use __gitcomp_builtin in _git_fsck Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 19/42] completion: use __gitcomp_builtin in _git_gc Nguyễn Thái Ngọc Duy
2018-02-09 11:01   ` [PATCH v3 20/42] completion: use __gitcomp_builtin in _git_grep Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 21/42] completion: use __gitcomp_builtin in _git_help Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 22/42] completion: use __gitcomp_builtin in _git_init Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 23/42] completion: use __gitcomp_builtin in _git_ls_files Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 24/42] completion: use __gitcomp_builtin in _git_ls_remote Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 25/42] completion: use __gitcomp_builtin in _git_merge Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 26/42] completion: use __gitcomp_builtin in _git_merge_base Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 27/42] completion: use __gitcomp_builtin in _git_mv Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 28/42] completion: use __gitcomp_builtin in _git_name_rev Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 29/42] completion: use __gitcomp_builtin in _git_notes Nguyễn Thái Ngọc Duy
2018-02-14 14:29     ` SZEDER Gábor
2018-02-23 10:33       ` Duy Nguyen
2018-02-23 10:59         ` Duy Nguyen
2018-02-14 15:15     ` SZEDER Gábor
2018-02-23 10:40       ` Duy Nguyen
2018-02-09 11:02   ` [PATCH v3 30/42] completion: use __gitcomp_builtin in _git_pull Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 31/42] completion: use __gitcomp_builtin in _git_push Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 32/42] completion: use __gitcomp_builtin in _git_remote Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 33/42] remote: force completing --mirror= instead of --mirror Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 34/42] completion: use __gitcomp_builtin in _git_replace Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 35/42] completion: use __gitcomp_builtin in _git_reset Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 36/42] completion: use __gitcomp_builtin in _git_revert Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 37/42] completion: use __gitcomp_builtin in _git_rm Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 38/42] completion: use __gitcomp_builtin in _git_show_branch Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 39/42] completion: use __gitcomp_builtin in _git_status Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 40/42] completion: use __gitcomp_builtin in _git_tag Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 41/42] completion: use __gitcomp_builtin in _git_worktree Nguyễn Thái Ngọc Duy
2018-02-09 11:02   ` [PATCH v3 42/42] git-completion.bash: add GIT_COMPLETION_OPTIONS=all config Nguyễn Thái Ngọc Duy
2018-02-09 14:19     ` Ævar Arnfjörð Bjarmason
2018-02-10  9:29       ` Duy Nguyen
2018-02-11 14:47         ` Ævar Arnfjörð Bjarmason
2018-02-11  1:59     ` Eric Sunshine
2018-02-12  0:34       ` Duy Nguyen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180131110547.20577-1-pclouds@gmail.com \
    --to=pclouds@gmail.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.