Subject: Re: [PATCH v3 12/16] refs/packed-backend.c: ignore complicated hidden refs rules

From: Junio C Hamano <[email-masked]>
Date: Tue, 13 Jun 2023 17:40:15 -0700

Taylor Blau <[email-masked]> writes:

> In subsequent commits, we'll teach `receive-pack` and `upload-pack` to
> use the new skip-list feature in the packed-refs iterator by ignoring

"skip" -> "jump".

> references which are mentioned via its respective hideRefs lists.
>
> However, the packed-ref skip lists cannot handle un-hiding rules (that
> begin with '!'), or namespace comparisons (that begin with '^'). Detect
> and avoid these cases by falling back to the normal enumeration without
> a skip list when such patterns exist.

> +		 * We also can't feed any excludes from hidden refs
> +		 * config sections, since later rules may override
> +		 * previous ones. For example, with rules "refs/foo" and
> +		 * "!refs/foo/bar", we should show "refs/foo/bar" (and
> +		 * everything underneath it), but the earlier exclusion
> +		 * would cause us to skip all of "refs/foo".

Good observation.  The presence of !refs/foo/bar in hide list
forbids us from adding refs/foo to the jump list, and it is the
simplest to disable the whole jump list business when we have such a
feature in use.

Makes sense.  Thanks.