Re: [PATCH] git: --no-lazy-fetch option
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 15, 2024, 17:04 UTC
- Message-ID
- <xmqqv86pslos.fsf@gitster.g>
- In-Reply-To
- <20240215053056.GD2821179@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 27 quoted lines
> On Thu, Feb 08, 2024 at 03:17:31PM -0800, Junio C Hamano wrote:
>
>> Sometimes, especially during tests of low level machinery, it is
>> handy to have a way to disable lazy fetching of objects. This
>> allows us to say, for example, "git cat-file -e <object-name>", to
>> see if the object is locally available.
>
> That seems like a good feature, but...
>
>> @@ -186,6 +187,8 @@ static int handle_options(const char ***argv, int *argc, int *envchanged)
>> use_pager = 0;
>> if (envchanged)
>> *envchanged = 1;
>> + } else if (!strcmp(cmd, "--no-lazy-fetch")) {
>> + fetch_if_missing = 0;
>> } else if (!strcmp(cmd, "--no-replace-objects")) {
>> disable_replace_refs();
>> setenv(NO_REPLACE_OBJECTS_ENVIRONMENT, "1", 1);
>
> This will only help builtin commands, and even then only the top-level
> one. If I run "git --no-lazy-fetch foo" and "foo" is a script or an
> alias, I'd expect it to still take effect. Ditto for sub-commands kicked
> off by a builtin (say, a "rev-list" connectivity check caused by a
> fetch).
>
> So this probably needs to be modeled after --no-replace-objects, etc,
> where we set an environment variable that makes it to child processes.Yuck, I was hoping that we can get away with the tiny change only for builtins,but you're right.