From: Junio C Hamano Date: Thu, 6 Jun 2024 19:49:23 +0000 (-0700) Subject: Merge branch 'th/quiet-lazy-fetch-from-promisor' X-Git-Tag: v2.46.0-rc0~75 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d11b0c75eca9b9cf0ede8caa0778faf6f22f674e;p=thirdparty%2Fgit.git Merge branch 'th/quiet-lazy-fetch-from-promisor' The promisor.quiet configuration knob can be set to true to make lazy fetching from promisor remotes silent. * th/quiet-lazy-fetch-from-promisor: promisor-remote: add promisor.quiet configuration option --- d11b0c75eca9b9cf0ede8caa0778faf6f22f674e diff --cc promisor-remote.c index b414922c44,384cbfea02..2ca7c2ae48 --- a/promisor-remote.c +++ b/promisor-remote.c @@@ -23,16 -22,8 +23,17 @@@ static int fetch_objects(struct reposit struct child_process child = CHILD_PROCESS_INIT; int i; FILE *child_in; + int quiet; + if (git_env_bool(NO_LAZY_FETCH_ENVIRONMENT, 0)) { + static int warning_shown; + if (!warning_shown) { + warning_shown = 1; + warning(_("lazy fetching disabled; some objects may not be available")); + } + return -1; + } + child.git_cmd = 1; child.in = -1; if (repo != the_repository) diff --cc t/t0410-partial-clone.sh index 7797391c03,8d468eb170..2c30c86e7b --- a/t/t0410-partial-clone.sh +++ b/t/t0410-partial-clone.sh @@@ -689,25 -690,48 +690,67 @@@ test_expect_success 'lazy-fetch when ac ! grep "[?]$FILE_HASH" out ' +test_expect_success 'push should not fetch new commit objects' ' + rm -rf server client && + test_create_repo server && + test_config -C server uploadpack.allowfilter 1 && + test_config -C server uploadpack.allowanysha1inwant 1 && + test_commit -C server server1 && + + git clone --filter=blob:none "file://$(pwd)/server" client && + test_commit -C client client1 && + + test_commit -C server server2 && + COMMIT=$(git -C server rev-parse server2) && + + test_must_fail git -C client push 2>err && + grep "fetch first" err && + git -C client rev-list --objects --missing=print "$COMMIT" >objects && + grep "^[?]$COMMIT" objects +' + + test_expect_success 'setup for promisor.quiet tests' ' + rm -rf server && + test_create_repo server && + test_commit -C server foo && + git -C server rm foo.t && + git -C server commit -m remove && + git -C server config uploadpack.allowanysha1inwant 1 && + git -C server config uploadpack.allowfilter 1 + ' + + test_expect_success TTY 'promisor.quiet=false shows progress messages' ' + rm -rf repo && + git clone --filter=blob:none "file://$(pwd)/server" repo && + git -C repo config promisor.quiet "false" && + + test_terminal git -C repo cat-file -p foo:foo.t 2>err && + + # Ensure that progress messages are written + grep "Receiving objects" err + ' + + test_expect_success TTY 'promisor.quiet=true does not show progress messages' ' + rm -rf repo && + git clone --filter=blob:none "file://$(pwd)/server" repo && + git -C repo config promisor.quiet "true" && + + test_terminal git -C repo cat-file -p foo:foo.t 2>err && + + # Ensure that no progress messages are written + ! grep "Receiving objects" err + ' + + test_expect_success TTY 'promisor.quiet=unconfigured shows progress messages' ' + rm -rf repo && + git clone --filter=blob:none "file://$(pwd)/server" repo && + + test_terminal git -C repo cat-file -p foo:foo.t 2>err && + + # Ensure that progress messages are written + grep "Receiving objects" err + ' + . "$TEST_DIRECTORY"/lib-httpd.sh start_httpd