On Tue, Feb 14, 2017 at 10:24 PM,  <[email protected]> wrote:

> +               *)
> +                       __git_complete_tree_file "$ref" "$cur"
> +                       ;;

There is one more caveat here.

Both our __git_complete_index_file() and Bash's builtin filename
completion lists matching paths like this:

  $ git rm contrib/co<TAB>
  coccinelle/                        contacts/
  completion/                        convert-grafts-to-replace-refs.sh

i.e. the leading path components are not redundantly repeated.

Now, with this patch in this code path the list would look like this:

  $ git checkout completion-refs-speedup contrib/co<TAB>
  contrib/coccinelle/
  contrib/completion/
  contrib/contacts/
  contrib/convert-grafts-to-replace-refs.sh

See the difference?

I once made a feeble attempt to make completion of the <ref>:<path>
notation (i.e. what you extracted into __git_complete_tree_file())
look like regular filename completion, but couldn't.

Gábor

Reply via email to