git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 1/2] Allow using stdin in run_on_* functions

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 3, 2024, 19:11 UTC
Message-ID
<xmqqttewimbn.fsf@gitster.g>
In-Reply-To
<b310593aec24ff102e2d5cf29c1d8386adbce45d.1725386044.git.gitgitgadget@gmail.com>
"Kevin Lyles via GitGitGadget" <gitgitgadget@gmail.com> writes:
> Subject: Re: [PATCH v3 1/2] Allow using stdin in run_on_* functions

Imagine that these two commits are applied and appear among hundreds of other commits in the list of contributions. Would this commit title blend in and belong to others?

    $ git log --oneline --no-merges -100
cf. Documentation/SubmittingPatches:describe-changes.

At least, it should somehow hint that the patch is about updating the t1092 test script.

    Subject: t1092: allow run_on_* functions to use standard input
or something.
> From: Kevin Lyles <klyles@epic.com>
>
> The 'run_on_sparse' and 'run_on_all' functions previously did not work
> correctly for commands accepting standard input.

Our convention is to first describe the status quo in the present tense, so "previously did not" -> "do not".

It would be helpful to explain why they do not work, perhaps like so:

    ... functions do not work for commands that consume their
    standard input, because they attempt to run the same command in
    multiple repositories that are set up differently to inspect
    their behaviour differences.
> This also indirectly
> affected 'test_all_match' and 'test_sparse_match'.
"affected" -> "affects".
> Now, we accept standard input and will send it to each command that we
> run. This does not impact using the functions for commands that don't
> need standard input.

And after presenting the observation on the status quo and pointing out the issue we are going to address, it is our convention to write what to do in imperative mood, as if we are ordering the codebase to "become like so". E.g.

    To allow these commands to consume the standard input, first
    slurp the contents fed from the standard input to a temporary
    file, and then run each attempt with its standard input
    redirected from the temporary file.  This way, these multiple
    attempts will all see the same contents from their standard
    input.
    Note that a command that does not read from the standard input
    does not have to redirect its standard input from </dev/null
    when using these run_on_* helper functions, as the standard
    input of the test environment is already connected to /dev/null.
or something, perhaps.
Show 14 quoted lines
> Signed-off-by: Kevin Lyles <klyles@epic.com>
> ---
>  t/t1092-sparse-checkout-compatibility.sh | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/t/t1092-sparse-checkout-compatibility.sh b/t/t1092-sparse-checkout-compatibility.sh
> index 6fa7f5e9587..87953abf872 100755
> --- a/t/t1092-sparse-checkout-compatibility.sh
> +++ b/t/t1092-sparse-checkout-compatibility.sh
> @@ -179,22 +179,26 @@ init_repos_as_submodules () {
>  }
>  
>  run_on_sparse () {
> +	cat >run_on_sparse-input &&

Mixture of word_with_underscore-and-dash-separation look unexpected; use "run-on-sparse-input" instead, as the output files seem to be named that way?

Show 10 quoted lines
>  	(
>  		cd sparse-checkout &&
>  		GIT_PROGRESS_DELAY=100000 "$@" >../sparse-checkout-out 2>../sparse-checkout-err
> -	) &&
> +	) <run_on_sparse-input &&
>  	(
>  		cd sparse-index &&
>  		GIT_PROGRESS_DELAY=100000 "$@" >../sparse-index-out 2>../sparse-index-err
> -	)
> +	) <run_on_sparse-input

Shouldn't the temporary file be removed at the end, or are the callers expected to live with them? Unless the test is about "ls-files -u" or "status", that is usually OK.

Show 24 quoted lines
>  }
>  
>  run_on_all () {
> +	cat >run_on_all-input &&
> +
>  	(
>  		cd full-checkout &&
>  		GIT_PROGRESS_DELAY=100000 "$@" >../full-checkout-out 2>../full-checkout-err
> -	) &&
> -	run_on_sparse "$@"
> +	) <run_on_all-input &&
> +	run_on_sparse "$@" <run_on_all-input
>  }
>  
>  test_all_match () {
> @@ -221,7 +225,7 @@ test_sparse_unstaged () {
>  	done
>  }
>  
> -# Usage: test_sprase_checkout_set "<c1> ... <cN>" "<s1> ... <sM>"
> +# Usage: test_sparse_checkout_set "<c1> ... <cN>" "<s1> ... <sM>"
>  # Verifies that "git sparse-checkout set <c1> ... <cN>" succeeds and
>  # leaves the sparse index in a state where <s1> ... <sM> are sparse
>  # directories (and <c1> ... <cN> are not).
Previous: Kevin Lyles via GitGitGadgetNext: Kevin Lyles via GitGitGadget
Message 10 of 17 in “Mark `cat-file` sparse-index compatible”
  1. Mark `cat-file` sparse-index compatibleKevin Lyles via GitGitGadget, Aug 26, 2024
  2. Derrick StoleeAug 29, 2024
  3. 0/2 Mark cat-file sparse-index compatibleKevin Lyles via GitGitGadget, Aug 30, 2024
  4. 1/2 Allow using stdin in run_on_* functionsKevin Lyles via GitGitGadget, Aug 30, 2024
  5. 2/2 Mark 'git cat-file' sparse-index compatibleKevin Lyles via GitGitGadget, Aug 30, 2024
  6. Derrick StoleeSep 3, 2024
  7. Junio C HamanoSep 3, 2024
  8. 0/2 Mark 'git cat-file' sparse-index compatibleKevin Lyles via GitGitGadget, Sep 3, 2024
  9. 1/2 Allow using stdin in run_on_* functionsKevin Lyles via GitGitGadget, Sep 3, 2024
  10. Junio C HamanoSep 3, 2024
  11. 2/2 Mark 'git cat-file' sparse-index compatibleKevin Lyles via GitGitGadget, Sep 3, 2024
  12. Junio C HamanoSep 3, 2024
  13. 0/2 builtin/cat-file: mark 'git cat-file' sparse-index compatibleKevin Lyles via GitGitGadget, Sep 3, 2024
  14. 1/2 t1092: allow run_on_* functions to use standard inputKevin Lyles via GitGitGadget, Sep 3, 2024
  15. Junio C HamanoSep 4, 2024
  16. 2/2 builtin/cat-file: mark 'git cat-file' sparse-index compatibleKevin Lyles via GitGitGadget, Sep 3, 2024
  17. Junio C HamanoSep 4, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.