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

Re: [PATCH v2 1/1] submodule foreach: fix recursion of options

From
Morian Sonnet <moriansonnet@gmail.com>
Date
Jun 18, 2019, 15:15 UTC
Message-ID
<201906181515.x5IFF8bg005587@pool-147-74-zam859.wlan.kfa-juelich.de>
In-Reply-To
<c46e5bd1403b45d25192220ce689fcd55d897981.1560371293.git.gitgitgadget@gmail.com>
"Morian Sonnet via GitGitGadget" <gitgitgadget@gmail.com> wrote:
I fixed the problem with the test case. Please take another look.
Show 79 quoted lines
> From: Morian Sonnet <MorianSonnet@googlemail.com>
>
> Calling
>
>     git submodule foreach --recursive git reset --hard
>
> leads to an error stating that the option --hard is unknown to
> submodule--helper.
>
> Reasons:
>
> . Above call is internally translated into
>
>     git submodule--helper foreach --recursive -- git reset --hard
>
> . After calling
>
>     git reset --hard
>
>   inside the first first level submodule,
>
>     git --super-prefix <submodulepath> submodule--helper \
>       foreach --recursive git reset --hard
>
>   is called. Note the missing --.
>
> . Due to the removal of PARSE_OPT_KEEP_UNKNOWN in commit a282f5a906 the
>   option --hard is not passed to
>
>     git reset
>
>   anymore, but leads to git submodule--helper complaining about an
>   unknown option.
>
> Fix:
>
> . Add -- before the command to execute, such that now correctly
>
>     git --super-prefix <submodulepath> submodule--helper \
>       foreach --recursive -- git reset --hard
>
>   is called.
>
> Signed-off-by: Morian Sonnet <moriansonnet@googlemail.com>
> ---
>  builtin/submodule--helper.c  | 1 +
>  t/t7407-submodule-foreach.sh | 7 +++++++
>  2 files changed, 8 insertions(+)
>
> diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
> index 0bf4aa088e..afaf0819c9 100644
> --- a/builtin/submodule--helper.c
> +++ b/builtin/submodule--helper.c
> @@ -540,6 +540,7 @@ static void runcommand_in_submodule_cb(const struct cache_entry *list_item,
>  		if (info->quiet)
>  			argv_array_push(&cpr.args, "--quiet");
>  
> +		argv_array_push(&cpr.args, "--");
>  		argv_array_pushv(&cpr.args, info->argv);
>  
>  		if (run_command(&cpr))
> diff --git a/t/t7407-submodule-foreach.sh b/t/t7407-submodule-foreach.sh
> index 706ae762e0..c554589e6f 100755
> --- a/t/t7407-submodule-foreach.sh
> +++ b/t/t7407-submodule-foreach.sh
> @@ -421,4 +421,11 @@ test_expect_success 'option-like arguments passed to foreach commands are not lo
>  	test_cmp expected actual
>  '
>  
> +test_expect_success 'option-like arguments passed to foreach recurse correctly' '
> +  (
> +    cd super &&
> +    git submodule foreach --recursive git reset --hard
> +  )
> +'
> +
>  test_done
> -- 
> gitgitgadget
Previous: Morian Sonnet via GitGitGadgetNext: Johannes Schindelin
Message 6 of 19 in “submodule foreach: fix recursion of options”
  1. 0/1 submodule foreach: fix recursion of optionsMorian Sonnet via GitGitGadget, Jun 12, 2019
  2. 1/1 submodule foreach: fix recursion of optionsMorian Sonnet via GitGitGadget, Jun 12, 2019
  3. Eric SunshineJun 12, 2019
  4. 0/1 submodule foreach: fix recursion of optionsMorian Sonnet via GitGitGadget, Jun 12, 2019
  5. 1/1 submodule foreach: fix recursion of optionsMorian Sonnet via GitGitGadget, Jun 12, 2019
  6. Morian SonnetJun 18, 2019
  7. Johannes SchindelinJun 19, 2019
  8. Morian SonnetJun 22, 2019
  9. Johannes SchindelinJun 24, 2019
  10. submodule foreach: fix recursion of optionsMorian Sonnet, Jun 24, 2019
  11. submodule foreach: fix recursion of optionsMorian Sonnet, Jun 24, 2019
  12. submodule foreach: fix recursion of optionsMorian Sonnet, Jun 24, 2019
  13. submodule foreach: fix recursion of optionsMorian Sonnet, Jun 24, 2019
  14. Johannes SchindelinJun 24, 2019
  15. Junio C HamanoJun 24, 2019
  16. submodule foreach: fix recursion of optionsMorian Sonnet, Jun 24, 2019
  17. submodule foreach: fix recursion of optionsMorian Sonnet, Jun 24, 2019
  18. Duy NguyenJun 25, 2019
  19. Junio C HamanoJun 25, 2019

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.