From: Junio C Hamano Date: Thu, 15 Feb 2024 17:04:51 GMT Subject: Re: [PATCH] git: --no-lazy-fetch option Message-ID: In-Reply-To: <20240215053056.GD2821179@coredump.intra.peff.net> Jeff King writes: > 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 ", 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.