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

Re: [PATCH 5/6] completion: list existing working trees for 'git worktree' subcommands

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Oct 18, 2019, 15:00 UTC
Message-ID
<20191018150006.GD29845@szeder.dev>
In-Reply-To
<CAPig+cSGXqJuaZPhUhOVX5X=LMrjVfv8ye_6ncMUbyKox1i7QA@mail.gmail.com>
On Thu, Oct 17, 2019 at 02:08:12PM -0400, Eric Sunshine wrote:
Show 13 quoted lines
> On Thu, Oct 17, 2019 at 1:35 PM SZEDER Gábor <szeder.dev@gmail.com> wrote:
> > Complete the paths of existing working trees for 'git worktree's
> > 'move', 'remove', 'lock', and 'unlock' subcommands.
> > [...]
> > 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.
> 
> It is a long-standing To-Do[1] for "git worktree list [--porcelain]"
> to indicate whether a worktree is locked, prunable, etc. Looking at
> the implementation of builtin/worktree.c:show_worktree_porcelain(), it
> should be easy enough to add.
I didn't look at the implementation, but only at the docs, which says:
  --porcelain
      With list, output in an easy-to-parse format for scripts. This
      format will remain stable across Git versions and regardless of
      user configuration. See below for details.

I'm not sure whether introducing a new boolean attribute (i.e. a line containing only "locked") would still be considered acceptable, or would count as changing the format. I can imagine that a too strict parser would barf upon encountering the unrecognized "locked" attribute; but yeah, no sensible parser should be that strict IMO.

Furthermore, I'm not sure what to do with the reason for locking. In general I would think that it makes sense to display the reason in an easy-to-parse format as well. However, doing so will inherently make the format less easy to parse, because the reason could span multiple lines, so without some sort of encoding/escaping it would violate the "a line per attribute" format.

I would say that this is beyong the scope of this patch series :)
Show 11 quoted lines
> > diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> > @@ -2981,10 +2981,21 @@ _git_whatchanged ()
> > +__git_complete_worktree_paths ()
> > +{
> > +       local IFS=$'\n'
> > +       __gitcomp_nl "$(git worktree list --porcelain |
> > +               sed -n -e '2,$ s/^worktree //p')"
> > +}
> 
> I know that the commit message talks about it, but it might deserve an
> in-code comment
OK.
Previous: Eric SunshineNext: Eric Sunshine
Message 13 of 22 in “completion: improve completion for 'git worktree'”
  1. 0/6 completion: improve completion for 'git worktree'SZEDER Gábor, Oct 17, 2019
  2. 1/6 t9902-completion: add tests for the __git_find_on_cmdline() helperSZEDER Gábor, Oct 17, 2019
  3. 2/6 completion: clean up the __git_find_on_cmdline() helper functionSZEDER Gábor, Oct 17, 2019
  4. 3/6 completion: return the index of found word from __git_find_on_cmdline()SZEDER Gábor, Oct 17, 2019
  5. Eric SunshineOct 17, 2019
  6. SZEDER GáborOct 18, 2019
  7. Eric SunshineOct 18, 2019
  8. SZEDER GáborDec 19, 2019
  9. SZEDER GáborDec 19, 2019
  10. 6/6 completion: list paths and refs for 'git worktree add'SZEDER Gábor, Oct 17, 2019
  11. 5/6 completion: list existing working trees for 'git worktree' subcommandsSZEDER Gábor, Oct 17, 2019
  12. Eric SunshineOct 17, 2019
  13. SZEDER GáborOct 18, 2019
  14. Eric SunshineOct 18, 2019
  15. 4/6 completion: simplify completing 'git worktree' subcommands and optionsSZEDER Gábor, Oct 17, 2019
  16. 0/6 completion: improve completion for 'git worktree'SZEDER Gábor, Dec 19, 2019
  17. 1/6 t9902-completion: add tests for the __git_find_on_cmdline() helperSZEDER Gábor, Dec 19, 2019
  18. 2/6 completion: clean up the __git_find_on_cmdline() helper functionSZEDER Gábor, Dec 19, 2019
  19. 3/6 completion: return the index of found word from __git_find_on_cmdline()SZEDER Gábor, Dec 19, 2019
  20. 4/6 completion: simplify completing 'git worktree' subcommands and optionsSZEDER Gábor, Dec 19, 2019
  21. 5/6 completion: list existing working trees for 'git worktree' subcommandsSZEDER Gábor, Dec 19, 2019
  22. 6/6 completion: list paths and refs for 'git worktree add'SZEDER Gábor, Dec 19, 2019

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.