Subject: Re: [BUG] cannot git clone with includeif onbranch

From: Patrick Steinhardt <[email-masked]>
Date: Tue, 12 Mar 2024 00:30:14 +0100

On Fri, Mar 08, 2024 at 08:10:56PM +0000, brian m. carlson wrote:
> On 2024-03-08 at 19:25:52, Angelo Dureghello wrote:
> > Hi,
> > 
> > below the bug report, not totally sure this is a bug btw.
> > 
> > ---
> > 
> > Thank you for filling out a Git bug report!
> > Please answer the following questions to help us understand your issue.
> > 
> > What did you do before the bug happened? (Steps to reproduce your issue)
> > 
> > Perform a git clone https with includeif onbranch in the .gitconfig
> > 
> > Create a .gitconfig
> > with
> > [includeIf "onbranch:wip/pippo/**"]
> >         path = ~/.gitconfig.pippo.inc
> > 
> > git clone https://github.com/analogdevicesinc/no-OS.git
> > 
> > Cloning into 'no-OS'...
> > BUG: refs.c:2083: reference backend is unknown
> > error: git-remote-https died of signal 6
> 
> Thanks for the report.
> 
> I can definitely confirm this with a local Git 2.44.0 built out of my
> working tree.  It seems to trigger as long as there's a `path` entry
> whether the path exists or not.  It _doesn't_ seem to trigger with a
> `gitdir` check, but does trigger for `onbranch`.  v2.43.0 is not
> affected.
> 
> I do definitely think this is a bug.  First of all, we should not
> trigger BUG conditions, even if the user has done something naughty, so
> we should fix it for that reason.  Second of all, this seems like a
> completely reasonable thing to want to do, and considering it triggers
> for existing files, and that it worked just fine in v2.43.0, I don't see
> a reason we shouldn't have this work.
> 
> A bisection[0] leads us to 0fcc285c5e ("refs: refactor logic to look up
> storage backends", 2023-12-29).  I've CCed the author of that commit,
> who hopefully can provide some more helpful context.
> 
> I have some guesses about what's going on here, but I haven't poked
> further into the situation, so I'll refrain from speculating for now.
> 
> [0] git bisect run sh -c 'make -j12 && cd $TMPDIR && rm -fr no-OS && PATH="$HOME/checkouts/git/bin-wrappers:$PATH" git clone https://github.com/analogdevicesinc/no-OS.git; RET=$?; [ "$RET" -eq 128 ] && RET=1; exit $RET'

Thanks for bisecting! My first hunch would've been that it's caused by
the change that changed when we initialize the refdb. I would have thus
hoped for 199f44cb2e (builtin/clone: allow remote helpers to detect
repo, 2024-02-27) to have fixed the issue. But the bisected commit
points into a different direction, so I'd be surprised if that was it.

Anyway, I didn't yet have the time to investigate this issue further,
and am currently a bit short on time. I will have a deeper look next
week at the latest.

Patrick