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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.