Message ID | pull.1441.v3.git.1673442860379.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3] scalar: show progress if stderr refer to a terminal | expand |
On 1/11/2023 8:14 AM, ZheNing Hu via GitGitGadget wrote: > From: ZheNing Hu <adlternative@gmail.com> > Range-diff vs v2: > -+test_expect_success 'progress without tty' ' > ++test_expect_success TTY 'progress without tty' ' I think this addition of the TTY prerequisite is not necessary... > +test_expect_success TTY 'progress without tty' ' > + enlistment=progress2 && > + > + test_config -C to-clone uploadpack.allowfilter true && > + test_config -C to-clone uploadpack.allowanysha1inwant true && > + > + GIT_PROGRESS_DELAY=0 scalar clone "file://$(pwd)/to-clone" "$enlistment" 2>stderr && > + ! grep "Enumerating objects" stderr && > + ! grep "Updating files" stderr && > + cleanup_clone $enlistment > +' ...because the test doesn't use the environment details for mimicing a TTY. The point is that stderr is redirected to a file and isatty(2) would report false. I don't think this is worth a re-roll, though, so I'm happy with this version. Thanks, -Stolee
Derrick Stolee <derrickstolee@github.com> writes: > On 1/11/2023 8:14 AM, ZheNing Hu via GitGitGadget wrote: >> From: ZheNing Hu <adlternative@gmail.com> > >> Range-diff vs v2: > >> -+test_expect_success 'progress without tty' ' >> ++test_expect_success TTY 'progress without tty' ' > > I think this addition of the TTY prerequisite is not necessary... > >> +test_expect_success TTY 'progress without tty' ' >> + enlistment=progress2 && >> + >> + test_config -C to-clone uploadpack.allowfilter true && >> + test_config -C to-clone uploadpack.allowanysha1inwant true && >> + >> + GIT_PROGRESS_DELAY=0 scalar clone "file://$(pwd)/to-clone" "$enlistment" 2>stderr && >> + ! grep "Enumerating objects" stderr && >> + ! grep "Updating files" stderr && >> + cleanup_clone $enlistment >> +' > > ...because the test doesn't use the environment details for > mimicing a TTY. The point is that stderr is redirected to a > file and isatty(2) would report false. Yup, the prerequisite was uttering misleading. I may queue it with local tweaks, but if I forget please send in an update. Thanks. > I don't think this is worth a re-roll, though, so I'm happy > with this version. > > Thanks, > -Stolee
diff --git a/scalar.c b/scalar.c index 6c52243cdf1..e5cc554c537 100644 --- a/scalar.c +++ b/scalar.c @@ -404,7 +404,7 @@ void load_builtin_commands(const char *prefix, struct cmdnames *cmds) static int cmd_clone(int argc, const char **argv) { const char *branch = NULL; - int full_clone = 0, single_branch = 0; + int full_clone = 0, single_branch = 0, show_progress = isatty(2); struct option clone_options[] = { OPT_STRING('b', "branch", &branch, N_("<branch>"), N_("branch to checkout after clone")), @@ -499,7 +499,9 @@ static int cmd_clone(int argc, const char **argv) if (set_recommended_config(0)) return error(_("could not configure '%s'"), dir); - if ((res = run_git("fetch", "--quiet", "origin", NULL))) { + if ((res = run_git("fetch", "--quiet", + show_progress ? "--progress" : "--no-progress", + "origin", NULL))) { warning(_("partial clone failed; attempting full clone")); if (set_config("remote.origin.promisor") || @@ -508,7 +510,9 @@ static int cmd_clone(int argc, const char **argv) goto cleanup; } - if ((res = run_git("fetch", "--quiet", "origin", NULL))) + if ((res = run_git("fetch", "--quiet", + show_progress ? "--progress" : "--no-progress", + "origin", NULL))) goto cleanup; } diff --git a/t/t9211-scalar-clone.sh b/t/t9211-scalar-clone.sh index dd33d87e9be..2da8ca6f2bb 100755 --- a/t/t9211-scalar-clone.sh +++ b/t/t9211-scalar-clone.sh @@ -3,6 +3,7 @@ test_description='test the `scalar clone` subcommand' . ./test-lib.sh +. "${TEST_DIRECTORY}/lib-terminal.sh" GIT_TEST_MAINT_SCHEDULER="crontab:test-tool crontab cron.txt,launchctl:true,schtasks:true" export GIT_TEST_MAINT_SCHEDULER @@ -148,4 +149,29 @@ test_expect_success '--no-single-branch clones all branches' ' cleanup_clone $enlistment ' +test_expect_success TTY 'progress with tty' ' + enlistment=progress1 && + + test_config -C to-clone uploadpack.allowfilter true && + test_config -C to-clone uploadpack.allowanysha1inwant true && + + test_terminal env GIT_PROGRESS_DELAY=0 \ + scalar clone "file://$(pwd)/to-clone" "$enlistment" 2>stderr && + grep "Enumerating objects" stderr >actual && + test_line_count = 2 actual && + cleanup_clone $enlistment +' + +test_expect_success TTY 'progress without tty' ' + enlistment=progress2 && + + test_config -C to-clone uploadpack.allowfilter true && + test_config -C to-clone uploadpack.allowanysha1inwant true && + + GIT_PROGRESS_DELAY=0 scalar clone "file://$(pwd)/to-clone" "$enlistment" 2>stderr && + ! grep "Enumerating objects" stderr && + ! grep "Updating files" stderr && + cleanup_clone $enlistment +' + test_done