From: Patrick Steinhardt <ps@pks.im>
To: Heghedus Razvan <heghedus.razvan@protonmail.com>
Cc: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: Re: git init BUG when gitconfig has includeIf
Date: Wed, 22 May 2024 10:06:13 +0200 [thread overview]
Message-ID: <Zk2ndVx4gMTV8ZUf@tanuki> (raw)
In-Reply-To: <D1FH40J6URHF.186U29CMRJ0N3@protonmail.com>
[-- Attachment #1: Type: text/plain, Size: 2653 bytes --]
On Tue, May 21, 2024 at 04:46:23PM +0000, Heghedus Razvan wrote:
> On Tue May 21, 2024 at 7:36 PM EEST, Junio C Hamano wrote:
> > Heghedus Razvan <heghedus.razvan@protonmail.com> writes:
> >
> > > Yesterday I stumble upon a bug when doing git init. I didn't
> > > find any references to it, so I don't know if is a known problem
> > > or not.
> > >
> > > Steps to reproduce:
> > > # git init .
> > > BUG: refs.c:2123: reference backend is unknown
> >
> > Patrick, this looks similar to an earlier one during "git clone"
> > that was discussed at
> >
> > https://lore.kernel.org/git/72771da0-a0ef-4fd9-8071-6467cd7b6a6b@kernel-space.org/
> >
> > that was fixed with 199f44cb (builtin/clone: allow remote helpers to
> > detect repo, 2024-02-27)? The fix was about "git clone", but the
> > crux of the fix went to setup.c:initialize_repository_version()
> > which is also called by setup.c:init_db() that is the workhorse of
> > "git init", so it may already have been fixed (I didn't try).
>
> I guess I forgot to mention, but I tested the current master 4365c6fcf9
> and the issue is still present.
I cannot reproduce the issue as-is, neither on Git v2.44 nor on the
current master branch. So clearly, there must be something special to
your setup. The following testcase and variants of it do not reproduce:
test_expect_success 'init with includeIf.onbranch condition' '
git config -f ./config foo.bar baz &&
include=$(test-tool path-utils absolute_path config) &&
test_when_finished "rm -rf repo" &&
git -c includeIf.onbranch:main.path="$(<include)" init repo
'
Now digging into the code, the condition gets evaluated in
`include_by_branch()`. The call to `refs_resolve_ref_unsafe()` is
guarded by `the_repository->gitdir`, which is `NULL` the first time it
is called by git-init(1). It does get called a second time, but at that
point we already initialized the refdb and configured the ref storage
format as expected.
Aha! Seems like this only happens when re-initializing an already
existent repository, that's what's missing. In that case we do already
have `the_repository->gitdir` set even though we did not yet set up the
ref storage format. I'll investigate and send a patch.
Can you confirm that this is what you see, or do you also see this when
creating an entirely new repository?
> > Even if it is already fixed in the current version by the same
> > 199f44cb, we may want to follow up 0eab85b9 (t5601: exercise clones
> > with "includeIf.*.onbranch", 2024-03-12) with an additional test to
> > cover "git init".
Agreed.
Patrick
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2024-05-22 8:06 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-21 7:54 git init BUG when gitconfig has includeIf Heghedus Razvan
2024-05-21 16:36 ` Junio C Hamano
2024-05-21 16:46 ` Heghedus Razvan
2024-05-22 8:06 ` Patrick Steinhardt [this message]
2024-05-22 8:21 ` Heghedus Razvan
2024-05-22 8:27 ` Patrick Steinhardt
2024-05-22 10:38 ` [PATCH] setup: fix bug with "includeIf.onbranch" when initializing dir Patrick Steinhardt
2024-05-22 10:58 ` Heghedus Razvan
2024-05-22 19:06 ` Junio C Hamano
2024-05-23 0:41 ` Junio C Hamano
2024-05-23 5:26 ` Patrick Steinhardt
2024-05-23 0:43 ` [PATCH v2] " Junio C Hamano
2024-05-23 0:56 ` [rPATCH " Junio C Hamano
2024-05-23 5:26 ` [PATCH " Patrick Steinhardt
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=Zk2ndVx4gMTV8ZUf@tanuki \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=heghedus.razvan@protonmail.com \
/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