From: Patrick Steinhardt <ps@pks.im>
To: shejialuo <shejialuo@gmail.com>
Cc: Junio C Hamano <gitster@pobox.com>,
John Cai via GitGitGadget <gitgitgadget@gmail.com>,
git@vger.kernel.org, John Cai <johncai86@gmail.com>
Subject: Re: [PATCH v2 3/4] apply: remove the_repository global variable
Date: Tue, 1 Oct 2024 16:09:25 +0200 [thread overview]
Message-ID: <ZvwCj4J_HRiSF_S0@pks.im> (raw)
In-Reply-To: <Zvv723-OwvEr0qMV@ArchLinux>
On Tue, Oct 01, 2024 at 09:40:43PM +0800, shejialuo wrote:
> On Tue, Oct 01, 2024 at 02:32:30PM +0200, Patrick Steinhardt wrote:
> > On Tue, Oct 01, 2024 at 12:58:30PM +0800, shejialuo wrote:
> > > On Mon, Sep 30, 2024 at 01:06:55PM -0700, Junio C Hamano wrote:
> > > In my opinion, we should first think about how we handle the situation
> > > where we run builtins outside of the repository. The most easiest way is
> > > to pass the fallback object (aka "the_repository").
> > >
> > > However, this seems a little strange. We are truly outside of the
> > > repository but we really rely on the "struct repository *" to do many
> > > operations. It's unrealistic to change so many interfaces which use the
> > > "struct repository *". So, we should just use the fallback idea at
> > > current.
> >
> > I disagree with this statement. If code isn't prepare to not handle a
> > `NULL` repository we shouldn't fall back to `the_repository`, but we
> > should instead prepare the code to handle this case. This of course
> > requires us to do a ton of refactorings, but that is the idea of this
> > whole exercise to get rid of `the_repository`.
> >
>
> Actually, I also insist that we should refactor here. But I worry about
> the burden this would bring to John due to we may do a lot of work here.
> So, I expressed my meaning in a compromising way.
>
> But we should face the problem directly :).
True, all of this is a long-term effort that is probably going to take
us many months, likely even years. So people working on it should take
things slow and refactor chunks that are mostly ready to be converted to
get rid of `the_repository`.
That will sometimes mean that you have to scrap the conversion you're
currently working on because you discover that it inherently relies on
`the_repository` deep down in the stack, and refactoring it would be a
huge undertaking. That definitely happened to me multiple times while
introducing `USE_THE_REPOSITORY_VARIABLE`. And every time I did discover
that, I went one level deeper to try and fix the underpinnings first.
I mostly don't want us to blur the lines by silently falling back to
`the_repository` in situations where we don't intend to. So I'd rather
go a bit slower overall and design the code such that it doesn't fall
back anymore as a way to prove that something is indeed not relying on
`the_repository` anymore. Otherwise we're going to make everyones life
harder.
Patrick
next prev parent reply other threads:[~2024-10-01 14:09 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-24 13:42 [PATCH 0/4] Remove the_repository global for am, annotate, apply, archive builtins John Cai via GitGitGadget
2024-09-24 13:42 ` [PATCH 1/4] git: pass in repo for RUN_SETUP_GENTLY John Cai via GitGitGadget
2024-09-24 15:24 ` shejialuo
2024-09-24 17:45 ` Junio C Hamano
2024-09-24 17:58 ` Junio C Hamano
2024-09-26 14:24 ` Patrick Steinhardt
2024-09-26 16:41 ` Junio C Hamano
2024-09-24 13:42 ` [PATCH 2/4] annotate: remove usage of the_repository global John Cai via GitGitGadget
2024-09-24 13:42 ` [PATCH 3/4] apply: remove the_repository global variable John Cai via GitGitGadget
2024-09-24 18:32 ` Junio C Hamano
2024-09-24 18:50 ` Junio C Hamano
2024-09-26 18:59 ` John Cai
2024-09-26 19:17 ` Junio C Hamano
2024-09-24 13:42 ` [PATCH 4/4] archive: " John Cai via GitGitGadget
2024-09-24 18:35 ` Junio C Hamano
2024-09-30 17:40 ` [PATCH v2 0/4] Remove the_repository global for am, annotate, apply, archive builtins John Cai via GitGitGadget
2024-09-30 17:40 ` [PATCH v2 1/4] git: pass in repo for RUN_SETUP_GENTLY John Cai via GitGitGadget
2024-09-30 19:40 ` Junio C Hamano
2024-10-01 4:21 ` shejialuo
2024-09-30 17:40 ` [PATCH v2 2/4] annotate: remove usage of the_repository global John Cai via GitGitGadget
2024-09-30 19:43 ` Junio C Hamano
2024-09-30 17:40 ` [PATCH v2 3/4] apply: remove the_repository global variable John Cai via GitGitGadget
2024-09-30 20:06 ` Junio C Hamano
2024-10-01 4:58 ` shejialuo
2024-10-01 12:32 ` Patrick Steinhardt
2024-10-01 13:40 ` shejialuo
2024-10-01 14:09 ` Patrick Steinhardt [this message]
2024-10-01 17:10 ` Junio C Hamano
2024-10-03 18:28 ` johncai86
2024-09-30 17:40 ` [PATCH v2 4/4] archive: " John Cai via GitGitGadget
2024-09-30 20:01 ` Junio C Hamano
2024-10-04 20:05 ` johncai86
2024-10-05 3:30 ` [PATCH v3 0/3] Remove the_repository global for am, annotate, apply, archive builtins John Cai via GitGitGadget
2024-10-05 3:30 ` [PATCH v3 1/3] git: pass in repo to builtin based on setup_git_directory_gently John Cai via GitGitGadget
2024-10-05 6:51 ` shejialuo
2024-10-05 3:30 ` [PATCH v3 2/3] annotate: remove usage of the_repository global John Cai via GitGitGadget
2024-10-05 3:30 ` [PATCH v3 3/3] archive: remove the_repository global variable John Cai via GitGitGadget
2024-10-05 7:13 ` shejialuo
2024-10-10 18:27 ` johncai86
2024-10-10 21:13 ` [PATCH v4 0/3] Remove the_repository global for am, annotate, apply, archive builtins John Cai via GitGitGadget
2024-10-10 21:13 ` [PATCH v4 1/3] git: pass in repo to builtin based on setup_git_directory_gently John Cai via GitGitGadget
2024-10-10 21:13 ` [PATCH v4 2/3] annotate: remove usage of the_repository global John Cai via GitGitGadget
2024-10-10 21:13 ` [PATCH v4 3/3] archive: remove the_repository global variable John Cai via GitGitGadget
2024-10-11 17:47 ` [PATCH v4 0/3] Remove the_repository global for am, annotate, apply, archive builtins Junio C Hamano
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=ZvwCj4J_HRiSF_S0@pks.im \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=gitster@pobox.com \
--cc=johncai86@gmail.com \
--cc=shejialuo@gmail.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;
as well as URLs for NNTP newsgroup(s).