diff options
author | Junio C Hamano <gitster@pobox.com> | 2024-02-27 17:48:29 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2024-02-27 18:53:14 +0100 |
commit | e6d5479e7ac301ae8d11daa3d8ef748e891c91c3 (patch) | |
tree | 6596f1d98f2bb2397eb21fcf28252789fa34c2c6 /git.c | |
parent | git: document GIT_NO_REPLACE_OBJECTS environment variable (diff) | |
download | git-e6d5479e7ac301ae8d11daa3d8ef748e891c91c3.tar.xz git-e6d5479e7ac301ae8d11daa3d8ef748e891c91c3.zip |
git: extend --no-lazy-fetch to work across subprocesses
Modeling after how the `--no-replace-objects` option is made usable
across subprocess spawning (e.g., cURL based remote helpers are
spawned as a separate process while running "git fetch"), allow the
`--no-lazy-fetch` option to be passed across process boundaries.
Do not model how the value of GIT_NO_REPLACE_OBJECTS environment
variable is ignored, though. Just use the usual git_env_bool() to
allow "export GIT_NO_LAZY_FETCH=0" and "unset GIT_NO_LAZY_FETCH"
to be equivalents.
Also do not model how the request is not propagated to subprocesses
we spawn (e.g. "git clone --local" that spawns a new process to work
in the origin repository, while the original one working in the
newly created one) by the "--no-replace-objects" option, as this "do
not lazily fetch from the promisor" is more about a per-request
debugging aid, not "this repository's promisor should not be relied
upon" property specific to a repository.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git.c')
-rw-r--r-- | git.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -189,6 +189,9 @@ static int handle_options(const char ***argv, int *argc, int *envchanged) *envchanged = 1; } else if (!strcmp(cmd, "--no-lazy-fetch")) { fetch_if_missing = 0; + setenv(NO_LAZY_FETCH_ENVIRONMENT, "1", 1); + if (envchanged) + *envchanged = 1; } else if (!strcmp(cmd, "--no-replace-objects")) { disable_replace_refs(); setenv(NO_REPLACE_OBJECTS_ENVIRONMENT, "1", 1); |