git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Karthik Nayak <karthik.188@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, ps@pks.im, christian.couder@gmail.com
Subject: Re: [PATCH 2/2] ref-filter: support filtering of operational refs
Date: Tue, 2 Jan 2024 07:18:48 -0800	[thread overview]
Message-ID: <CAOLa=ZTPxWXnZ8kpBB7=cybNfdEv6d6O37Em7Vpmcw=enpY1_w@mail.gmail.com> (raw)
In-Reply-To: <xmqqsf3oj3u8.fsf@gitster.g>

[-- Attachment #1: Type: text/plain, Size: 2634 bytes --]

Junio C Hamano <gitster@pobox.com> writes:
>
> It would not begin with 40-hex, though.  If I were doing this,
> perhaps I'd say we should first split is_pseudoref_syntax() that is
> overly loose into to classes (e.g. "caps with underscores that ends
> with HEAD" and everything else), silently reject false positives
> among the latter class.  Then we rename those that are misnamed
> (there should be only few, like AUTO_MERGE that should be a
> pseudoref but named without _HEAD; I do not think of anything that
> ends with _HEAD that is not a ref) over time and drop the latter
> class.
>

I agree about checking the contents of the files to filter out false
positives around the filenames. Alright, this seems like a good way to
go.

Summarizing, we'll change `is_pseudoref_syntax()` to
1. Check for filename to be UPPERCASE including '-', '_'.
   a. If the filename ends with _HEAD, we return as positive
   b. Else check the file content for SHA1/SHA256 hex

This still leaves out HEAD ref, which is not a pseudo ref (since it can
be a symref at times). I'll figure out something there.

>
>> While you're here, I wonder if you have any thoughts on the last block
>> of my first mail.
>>
>>> Over this, I'm also curious on what the mailing list thinks about
>>> exposing this to the client side. Would an `--all` option for
>>> git-for-each-ref(1) be sufficient?
>
> "list pseudorefs in addition to things below refs/"?  Sounds OK to
> me as a feature.
>
> However, "--all" does not mean that in the context of "git log"
> family of commands.  Over there, it means "not just --branches,
> --tags, and --remotes, but everything" which is still limited below
> "refs/".
>

Good point, I agree, usage of "--all" would clash here.

> As "git for-each-ref" takes pattern that is prefix match, e.g.,
>
>     $ git for-each-ref refs/remotes/
>
> shows everything like refs/remotes/origin/main that begins with
> refs/remotes/, I wonder if
>
>     $ git for-each-ref ""
>
> should mean what you are asking for.  After all, "git for-each-ref"
> does *not* take "--branches" and others like "git log" family to
> limit its operation to subhierarchy of "refs/" to begin with.

But I don't think using an empty pattern is the best way to go forward.
This would break the pattern matching feature. For instance, what if the
user wanted to print all refs, but pattern match "*_HEAD"?

Would that be

      $ git for-each-ref "" "*_HEAD"

I think this would be confusing, since the first pattern is now acting
as an option, since its not really filtering rather its changing the
search space.

Maybe "--all-refs" or "--all-ref-types" instead?

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 690 bytes --]

  reply	other threads:[~2024-01-02 15:18 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-21 17:07 [RFC 0/2] Initial changes to support printing all refs Karthik Nayak
2023-12-21 17:07 ` [PATCH 1/2] refs: introduce the `refs_single_ref` function Karthik Nayak
2023-12-21 17:07 ` [PATCH 2/2] ref-filter: support filtering of operational refs Karthik Nayak
2023-12-21 20:40   ` Junio C Hamano
2023-12-22 14:05     ` Karthik Nayak
2023-12-26 17:01       ` Junio C Hamano
2024-01-02 15:18         ` Karthik Nayak [this message]
2024-01-02 16:49           ` Junio C Hamano
2024-01-02 18:47           ` Taylor Blau
2024-01-03  8:52             ` Patrick Steinhardt
2024-01-03 10:22               ` Karthik Nayak
2024-01-03 14:38                 ` Junio C Hamano
2024-01-03 15:50                   ` Patrick Steinhardt
2024-01-03 16:02                     ` Junio C Hamano
2024-01-03 16:17                       ` Patrick Steinhardt
2024-01-03 17:21                         ` Junio C Hamano
2024-01-03 17:36                           ` Patrick Steinhardt
2024-01-03 17:59                             ` Junio C Hamano
2024-01-03 18:01                               ` Patrick Steinhardt
2024-01-04 11:31                                 ` Karthik Nayak
2024-01-04 23:59                                   ` Junio C Hamano
2024-01-03 15:45               ` Taylor Blau
2024-01-03 15:52                 ` Patrick Steinhardt
2024-01-03 17:00                   ` Taylor Blau
2023-12-28 10:34     ` Patrick Steinhardt
2024-01-02 15:23       ` Karthik Nayak
2024-01-02 18:49       ` Taylor Blau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAOLa=ZTPxWXnZ8kpBB7=cybNfdEv6d6O37Em7Vpmcw=enpY1_w@mail.gmail.com' \
    --to=karthik.188@gmail.com \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=ps@pks.im \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).