[PATCH v2 0/6] completion: improve completion for 'git worktree'
From: SZEDER Gábor <hidden>
Date: 2019-12-19 15:09:34
Complete paths of working trees and refs for 'git worktree's various
subcommands.
The last two patches do the actual improvements, the first four are
preparatory steps.
Changes since v1:
- Added an in-code comment and clarified the commit message of patch
5/6.
v1: https://public-inbox.org/git/20191017173501.3198-1-szeder.dev@gmail.com/T/#u
SZEDER Gábor (6):
t9902-completion: add tests for the __git_find_on_cmdline() helper
completion: clean up the __git_find_on_cmdline() helper function
completion: return the index of found word from
__git_find_on_cmdline()
completion: simplify completing 'git worktree' subcommands and options
completion: list existing working trees for 'git worktree' subcommands
completion: list paths and refs for 'git worktree add'
contrib/completion/git-completion.bash | 119 +++++++++++++++++++------
t/t9902-completion.sh | 57 ++++++++++++
2 files changed, 150 insertions(+), 26 deletions(-)
Range-diff against v1:
1: bd68b0b64b = 1: b370a97edc t9902-completion: add tests for the __git_find_on_cmdline() helper
2: b5c0312db6 = 2: fb8f1e4840 completion: clean up the __git_find_on_cmdline() helper function
3: 6999b0b8e2 = 3: 47aecb9ac0 completion: return the index of found word from __git_find_on_cmdline()
4: dd38374f2f = 4: 00c5a0f7df completion: simplify completing 'git worktree' subcommands and options
5: 619ff7021c ! 5: 2e4b1b3931 completion: list existing working trees for 'git worktree' subcommands
@@ Commit message
Never list the path of the main working tree, as it cannot be moved,
removed, locked, or unlocked.
- Arguably 'git worktree unlock <TAB>' should only complete locked
- working trees, but 'git worktree list --porcelain' doesn't indicate
- which working trees are locked. So for now it will complete the paths
- of all existing working trees, including non-locked ones as well.
+ Ideally we would only list unlocked working trees for the 'move',
+ 'remove', and 'lock' subcommands, and only locked ones for 'unlock'.
+ Alas, 'git worktree list --porcelain' doesn't indicate which working
+ trees are locked, so for now we'll complete the paths of all existing
+ working trees.
Signed-off-by: SZEDER Gábor [off-list ref]
@@ contrib/completion/git-completion.bash: _git_whatchanged ()
+{
+ local IFS=$'\n'
+ __gitcomp_nl "$(git worktree list --porcelain |
++ # Skip the first entry: it's the path of the main worktree,
++ # which can't be moved, removed, locked, etc.
+ sed -n -e '2,$ s/^worktree //p')"
+}
+
6: 29a32e5d36 = 6: 16a9b5f4b2 completion: list paths and refs for 'git worktree add'
--
2.24.1.982.ga4d4aba446