git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 00/51] completion: revamp

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Aug 30, 2022, 09:30 UTC
Message-ID
<20220830093138.1581538-1-felipe.contreras@gmail.com>
This patch series revamps the completion code to git-completion 1.4.

I used to send this series minimizing the delta to git upstream in order to maximize the chances of it being merged, but it has not received any feedback since the first time it was sent in 2020 [1], so it is safe to say upstream has zero interest in getting this merged. It makes no sense for me to do extra work to maximize the chances of something that will never happen.

Therefore this series starts with the most intrusive change: zsh completion tests.

For several years git-completion has been running zsh completion tests to make sure everything works correctly, not only for bash, but also for zsh.

The zsh code delta between upstream and git-completion results in 14 tests now passing. The new patch series makes that clear now.

Here's a summary of the differences between upstream and git-completion:
 * Fixed alias regression
 * Make tests work when user has configured GIT_PS1_* variables
 * Enable colors in bash without prompt command
 * Fix suboptions for zsh
 * Fix COMP_WORDBREAKS handling
 * Fix main option handling for zsh
 * Fix -C handling for zsh
 * Fix -c handling for zsh
 * Fix generic completions for zsh
 * Fix configurations with value for zsh (e1e00089da)
 * Fix option relationships for zsh
 * Add improved removable suffix for zsh
 * Plenty of reorganizations and cleanups
For more information check [2].
Cheers.

[1] https://lore.kernel.org/git/20201110212136.870769-1-felipe.contreras@gmail.com/ [2] https://github.com/felipec/git-completion

Felipe Contreras (50):
  test: completion add test for __git_cmd_idx
  test: add zsh completion tests
  completion: fix __git_cmd_idx regression for zsh
  completion: bash: trivial cleanup
  completion: zsh: add higher-priority location
  zsh: simplify realpath dirname idiom
  test: reset environment variables
  completion: prompt: use generic colors
  completion: fix for suboptions with value
  completion: zsh: trivial improvement
  completion: bash: do not modify COMP_WORDBREAKS
  test: completion: fix currently typed words
  test: completion: switch __gitcomp_nl prefix test
  test: completion: add run_func() helper
  completion: bash: remove non-append functionality
  completion: bash: get rid of _append() functions
  completion: bash: get rid of any non-append code
  completion: zsh: fix options with arguments
  completion: zsh: expand --git-dir file argument
  completion: zsh: add support for general -C opts
  completion: zsh: fix for undefined completions
  completion: zsh: add support for general -c opts
  completion: zsh: fix extra space on foo=
  completion: zsh: add excluded options
  completion: zsh: always set compset
  completion: factor out check in __gitcomp
  completion: simplify equal suffix check
  completion: refactor __gitcomp
  completion: simplify __gitcomp
  completion: bash: change suffix check in __gitcomp
  completion: improve __gitcomp suffix code
  test: completion: add missing test
  completion: bash: simplify config_variable_name
  completion: bash: improve __gitcomp description
  completion: add __gitcomp_opts
  completion: bash: cleanup __gitcomp* invocations
  completion: bash: shuffle __gitcomp functions
  completion: zsh: simplify __gitcomp_direct
  completion: zsh: shuffle __gitcomp* functions
  completion: zsh: fix direct quoting
  completion: zsh: add elements individually in __gitcomp_opts
  completion: zsh: add __gitcompadd helper
  completion: zsh: add correct removable suffix
  completion: bash: simplify _get_comp_words_by_ref()
  completion: bash: refactor _get_comp_words_by_ref()
  completion: bash: cleanup _get_comp_words_by_ref()
  completion: bash: trivial cleanup
  completion: bash: rename _get_comp_words_by_ref()
  zsh: remove version
  completion: bash: trivial grammar fix
Michael Bianco (1):
  zsh: resolve symlink of script
 contrib/completion/git-completion.bash |  637 ++++++-------
 contrib/completion/git-completion.zsh  |  146 ++-
 contrib/completion/git-prompt.sh       |   19 +-
 t/t9902-completion.sh                  |  159 ++--
 t/t9903-bash-prompt.sh                 |   16 +-
 t/t9904-zsh-completion.sh              | 1137 ++++++++++++++++++++++++
 t/t9904/.gitignore                     |    1 +
 t/t9904/.zshrc                         |   50 ++
 t/t9904/_git                           |    1 +
 t/t9904/completion                     |   11 +
 10 files changed, 1649 insertions(+), 528 deletions(-)
 create mode 100755 t/t9904-zsh-completion.sh
 create mode 100644 t/t9904/.gitignore
 create mode 100644 t/t9904/.zshrc
 create mode 120000 t/t9904/_git
 create mode 100755 t/t9904/completion
-- 
2.37.2.351.g9bf691b78c.dirty
Next: Felipe Contreras
Message 1 of 52 in “completion: revamp”
  1. 00/51 completion: revampFelipe Contreras, Aug 30, 2022
  2. 01/51 test: completion add test for __git_cmd_idxFelipe Contreras, Aug 30, 2022
  3. 03/51 completion: fix __git_cmd_idx regression for zshFelipe Contreras, Aug 30, 2022
  4. 02/51 test: add zsh completion testsFelipe Contreras, Aug 30, 2022
  5. 04/51 completion: bash: trivial cleanupFelipe Contreras, Aug 30, 2022
  6. 05/51 completion: zsh: add higher-priority locationFelipe Contreras, Aug 30, 2022
  7. 09/51 completion: prompt: use generic colorsFelipe Contreras, Aug 30, 2022
  8. 07/51 zsh: simplify realpath dirname idiomFelipe Contreras, Aug 30, 2022
  9. 10/51 completion: fix for suboptions with valueFelipe Contreras, Aug 30, 2022
  10. 06/51 zsh: resolve symlink of scriptFelipe Contreras, Aug 30, 2022
  11. 08/51 test: reset environment variablesFelipe Contreras, Aug 30, 2022
  12. 11/51 completion: zsh: trivial improvementFelipe Contreras, Aug 30, 2022
  13. 12/51 completion: bash: do not modify COMP_WORDBREAKSFelipe Contreras, Aug 30, 2022
  14. 13/51 test: completion: fix currently typed wordsFelipe Contreras, Aug 30, 2022
  15. 14/51 test: completion: switch __gitcomp_nl prefix testFelipe Contreras, Aug 30, 2022
  16. 15/51 test: completion: add run_func() helperFelipe Contreras, Aug 30, 2022
  17. 16/51 completion: bash: remove non-append functionalityFelipe Contreras, Aug 30, 2022
  18. 17/51 completion: bash: get rid of _append() functionsFelipe Contreras, Aug 30, 2022
  19. 18/51 completion: bash: get rid of any non-append codeFelipe Contreras, Aug 30, 2022
  20. 19/51 completion: zsh: fix options with argumentsFelipe Contreras, Aug 30, 2022
  21. 20/51 completion: zsh: expand --git-dir file argumentFelipe Contreras, Aug 30, 2022
  22. 21/51 completion: zsh: add support for general -C optsFelipe Contreras, Aug 30, 2022
  23. 23/51 completion: zsh: add support for general -c optsFelipe Contreras, Aug 30, 2022
  24. 24/51 completion: zsh: fix extra space on foo=Felipe Contreras, Aug 30, 2022
  25. 22/51 completion: zsh: fix for undefined completionsFelipe Contreras, Aug 30, 2022
  26. 28/51 completion: simplify equal suffix checkFelipe Contreras, Aug 30, 2022
  27. 30/51 completion: simplify __gitcompFelipe Contreras, Aug 30, 2022
  28. 32/51 completion: improve __gitcomp suffix codeFelipe Contreras, Aug 30, 2022
  29. 33/51 test: completion: add missing testFelipe Contreras, Aug 30, 2022
  30. 25/51 completion: zsh: add excluded optionsFelipe Contreras, Aug 30, 2022
  31. 27/51 completion: factor out check in __gitcompFelipe Contreras, Aug 30, 2022
  32. 26/51 completion: zsh: always set compsetFelipe Contreras, Aug 30, 2022
  33. 29/51 completion: refactor __gitcompFelipe Contreras, Aug 30, 2022
  34. 31/51 completion: bash: change suffix check in __gitcompFelipe Contreras, Aug 30, 2022
  35. 36/51 completion: add __gitcomp_optsFelipe Contreras, Aug 30, 2022
  36. 37/51 completion: bash: cleanup __gitcomp* invocationsFelipe Contreras, Aug 30, 2022
  37. 34/51 completion: bash: simplify config_variable_nameFelipe Contreras, Aug 30, 2022
  38. 35/51 completion: bash: improve __gitcomp descriptionFelipe Contreras, Aug 30, 2022
  39. 38/51 completion: bash: shuffle __gitcomp functionsFelipe Contreras, Aug 30, 2022
  40. 39/51 completion: zsh: simplify __gitcomp_directFelipe Contreras, Aug 30, 2022
  41. 42/51 completion: zsh: add elements individually in __gitcomp_optsFelipe Contreras, Aug 30, 2022
  42. 43/51 completion: zsh: add __gitcompadd helperFelipe Contreras, Aug 30, 2022
  43. 40/51 completion: zsh: shuffle __gitcomp* functionsFelipe Contreras, Aug 30, 2022
  44. 45/51 completion: bash: simplify _get_comp_words_by_ref()Felipe Contreras, Aug 30, 2022
  45. 41/51 completion: zsh: fix direct quotingFelipe Contreras, Aug 30, 2022
  46. 44/51 completion: zsh: add correct removable suffixFelipe Contreras, Aug 30, 2022
  47. 48/51 completion: bash: trivial cleanupFelipe Contreras, Aug 30, 2022
  48. 47/51 completion: bash: cleanup _get_comp_words_by_ref()Felipe Contreras, Aug 30, 2022
  49. 46/51 completion: bash: refactor _get_comp_words_by_ref()Felipe Contreras, Aug 30, 2022
  50. 49/51 completion: bash: rename _get_comp_words_by_ref()Felipe Contreras, Aug 30, 2022
  51. 50/51 zsh: remove versionFelipe Contreras, Aug 30, 2022
  52. 51/51 completion: bash: trivial grammar fixFelipe Contreras, Aug 30, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.