refs: pseudorefs are no refs
commit993d57ededa2238e7526ccdb05b39b0265053f37
authorPatrick Steinhardt <ps@pks.im>
Wed, 15 May 2024 06:51:01 +0000 (15 08:51 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 15 May 2024 14:30:52 +0000 (15 07:30 -0700)
tree6e690bb62f878a9db3853934d2586b41daea43a6
parent31951c22489dc4238ef881478a896a460531b722
refs: pseudorefs are no refs

The `is_root_ref()` function will happily clarify a pseudoref as a root
ref, even though pseudorefs are no refs. Next to being wrong, it also
leads to inconsistent behaviour across ref backends: while the "files"
backend accidentally knows to parse those pseudorefs and thus yields
them to the caller, the "reftable" backend won't ever see the pseudoref
at all because they are never stored in the "reftable" backend.

Fix this issue by filtering out pseudorefs in `is_root_ref()`.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs.c
t/t6302-for-each-ref-filter.sh