On 05/09, Jeff King wrote:
> I was playing with the new :(attr) pathspecs in the upcoming v2.13
> today, and noticed:
>
> $ git ls-files -- ':(attr:-diff)'
> t/t0110/url-1
> t/t0110/url-10
> [etc]
>
> So far so good.
>
> $ git ls-tree HEAD -- ':(attr:-diff)'
> fatal: :(attr:-diff): pathspec magic not supported by this command: 'attr'
>
> Bummer, but I understand that sometimes the options need to be plumbed
> through to work everywhere.
>
> $ git log HEAD -- ':(attr:-diff)'
> fatal: BUG:tree-walk.c:947: unsupported magic 40
>
> Whoops. This is presumably ls-tree is protected, but I think we are
> missing a GUARD_PATHSPEC call somewhere.
>
> This isn't a huge deal, as the correct behavior is probably to die like
> ls-tree does, but we probably shouldn't be hitting BUG assertions as a
> general rule.
>
> -Peff
The die("BUG: ..."); is from a GAURD_PATHSPEC call. What really needs
to happen is to update the magic_mask passed into the parse_pathspec
call which initializes the pathspec object. Its this magic_mask which
catches unsupported magic and prints a better message.
I guess this means I (or someone else :D) should audit all the
parse_pathspec calls and ensure that 'attr' magic is turned off until we
won't run into these GAURD_PATHSPEC die's.
--
Brandon Williams