From: Justin Tobler <jltobler@gmail.com>
To: Patrick Steinhardt <ps@pks.im>
Cc: Kristofer Karlsson <krka@spotify.com>,
Kristofer Karlsson via GitGitGadget <gitgitgadget@gmail.com>,
git@vger.kernel.org, Jeff King <peff@peff.net>
Subject: Re: [PATCH v2] odb: do not list our own refs as alternate refs in the quarantine
Date: Tue, 3 Nov 2026 15:53:11 -0600 [thread overview]
Message-ID: <aupPATAGBWH1RIe6@denethor> (raw)
In-Reply-To: <aunS6dE0B-JAJnBk@pks.im>
On 26/11/03 01:26PM, Patrick Steinhardt wrote:
> On Tue, Nov 03, 2026 at 01:05:29PM +0100, Kristofer Karlsson wrote:
> > That does sound like the cleaner fix. Since you are already deep into
> > this area, I would be happy to drop the fix and wait for that instead.
> > I expect very few users to be affected in practice: mostly git hosts
> > with many hidden refs, which is the case bcec6780b2 was about.
> >
> > In that case I could send just the tests, with the hidden refs case
> > marked as test_expect_failure, so that it is covered once a long-term
> > fix lands. Or, if you would rather have a short-term fix in the
> > meantime, I can send a v3 with the change above.
>
> I certainly do care about this case and would like to see this fixed :)
> I'd like to get Justin's opinion on that proposal first though, as he's
> worked on transactions quite extensively over the last couple months.
Regarding the fix proposed in this patch, I'm not quite sure this is
really the right layer to address the problem. The root of the problem
is that we are swapping around the "real" and quarantine object
directories to facilitate writing to the "files" ODB transaction. IMO,
this is already rather fragile. So I do agree with Patrick that I think
the better long-term fix is to stop modifying the primary object
directory altogether and instead propagate some context about the
pending transaction via environment variables to the child process that
it can use to reconstruct the proper environment. This is certainly a
more involved change, but something that I've been wanting to do for a
while now regardless.
If we are interested in a more simple fix for the short-term, we could
adapt `odb_transaction_env()` to have a "read-only" mode flag that does
not modify the primary object directory and only appends the quarantine
directory as an alternate. For the connectivity check in
git-receive-pack(1) we don't write any object anyways, so configuring
the environment in this manner should be sufficient to fix the issue.
-Justin
prev parent reply other threads:[~2026-11-03 21:53 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-28 15:18 [PATCH] odb: do not list our own refs as alternate refs in the quarantine Kristofer Karlsson via GitGitGadget
2026-10-29 16:57 ` Justin Tobler
2026-10-30 11:29 ` Kristofer Karlsson
2026-10-29 17:24 ` Junio C Hamano
2026-10-30 11:51 ` Kristofer Karlsson
2026-10-30 16:05 ` Junio C Hamano
2026-10-30 18:17 ` Jeff King
2026-11-02 11:45 ` [PATCH v2] " Kristofer Karlsson via GitGitGadget
2026-11-03 0:37 ` Junio C Hamano
2026-11-03 1:12 ` Junio C Hamano
2026-11-03 10:19 ` Kristofer Karlsson
2026-11-03 11:00 ` Patrick Steinhardt
2026-11-03 12:05 ` Kristofer Karlsson
2026-11-03 12:26 ` Patrick Steinhardt
2026-11-03 21:53 ` Justin Tobler [this message]
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=aupPATAGBWH1RIe6@denethor \
--to=jltobler@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=krka@spotify.com \
--cc=peff@peff.net \
--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