On Fri, Feb 09, 2024 at 06:27:39PM +0000, Karthik Nayak wrote: > Junio C Hamano <gitster@xxxxxxxxx> writes: > > Patrick Steinhardt <ps@xxxxxx> writes: > >> Depending on the answer, I think we can go one of two ways: > >> > >> - Accept the diverging behaviour and add `--include-all-refs`. The > >> "files" backend does a best effort and only includes root refs, the > >> "reftable" backend lists all refs. > >> > >> - Double down on the fact that refs must either be pseudo refs or > >> start with "refs/" and treat any ref that doesn't fit this bill as > >> corrupted. The consequence here would be that we instead go with > >> `--include-root-refs` that can be implemented the same for both > >> backends. In addition, we add checks to git-fsck(1) to surface and > >> flag refs with bogus names for the "reftable" backend. > >> > >> While I seem to have convinced you that `--include-all-refs` might not > >> be a bad idea after all, you have convinced me by now that the second > >> option would be preferable. I'd be okay with either of these options as > >> both of them address the issue at hand. > > > > For now my tentative preference is the latter. If ref/head/foo is > > an end-user mistake with one backend, it is cleaner if it is > > considered a mistake with other backends. > > > > Doesn't our ref enumeration/iteration API have "include broken ones > > as well" bit? I wonder if this issue becomes easier to solve by > > (re|ab)using that bit. > > I'll then go ahead with point 2 then. > > I'll modify my patch series for now to fit in and will follow up "checks > to git-fsck(1) to surface and flag refs with bogus names for the > "reftable" backend" in a follow up series. Thanks. Note that the fsck checks are also proposed as one of the GSoC projects where you're listed as a mentor. Might be worth it to hold back until we know whether any student wants to work on it. Patrick
Attachment:
signature.asc
Description: PGP signature