mbox series

[0/2] Fix attr magic combined with pathspec prefix

Message ID 20230707220457.3655121-1-gitster@pobox.com (mailing list archive)
Headers show
Series Fix attr magic combined with pathspec prefix | expand

Message

Junio C Hamano July 7, 2023, 10:04 p.m. UTC
Matthew Hughes noticed and reported that a pathspec that uses the
attribute magic with pathspec pattern does not work correctly.

After digging around, I found that

    $ git ls-files ":(attr:label)"

notices that the "label" attribute is set to path "sub/file" by
listing it, and combined with a pathspec pattern, i.e.

    $ git ls-files ":(attr:label)sub"

it still correctly reports "sub/file" has the "label" attribute, be
it defined in ".gitignore" or "sub/.gitignore".  The case that it
does not work is the command invocation is

    $ git ls-files ":(attr:label)sub/"

and the attribute "label" is defined in "sub/.gitattributes" for
"sub/file".

It turns out that the problematic invocation triggers the common
prefix optimization, which is totally broken for this case.

The first patch enhances the test coverage, and the second patch
fixes the broken common prefix optimization.

Junio C Hamano (2):
  t6135: attr magic with path pattern
  dir: do not feed path suffix to pathspec match

 dir.c                          | 31 ++++++-----------------
 t/t6135-pathspec-with-attrs.sh | 46 ++++++++++++++++++++++++++++++++--
 2 files changed, 52 insertions(+), 25 deletions(-)