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

Re: [PATCH 1/5] submodule--helper update: use display path helper

From
Glen Choo <chooglen@google.com>
Date
Jun 28, 2022, 17:34 UTC
Message-ID
<kl6ly1xghetp.fsf@chooglen-macbookpro.roam.corp.google.com>
In-Reply-To
<220628.861qv9gpg5.gmgdl@evledraar.gmail.com>

Thanks! Everything not mentioned here seems like an obviously good suggestion. I especially appreciate the translation/compiler flow analysis pieces (I hadn't considered either).

Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
Show 19 quoted lines
> On Mon, Jun 27 2022, Glen Choo via GitGitGadget wrote:
>
>> From: Glen Choo <chooglen@google.com>
>>
>> There are two locations in prepare_to_clone_next_submodule() that
>> manually calculate the submodule display path, but should just use
>> do_get_submodule_displaypath() for consistency.
>>
>> Do this replacement and reorder the code slightly to avoid computing
>> the display path twice.
>>
>> This code was never tested, and adding tests shows that both these sites
>> have been computing the display path incorrectly ever since they were
>> introduced in 48308681b0 (git submodule update: have a dedicated helper
>> for cloning, 2016-02-29) [1]:
>
> I think the tests should really be split up as their own preceding
> commit, so we're assured that this "git rebase -x 'make test'"'s
> cleanly.

Hm, I'm not sure how this changes the result of "git rebase -x 'make test'", since these tests will fail prior to this patch. I could modify the tests to demonstrate the broken behavior though, which would save me some effort in describing it in the commit message.

Show 50 quoted lines
>> diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh
>> index 43f779d751c..e1dc3b1041b 100755
>> --- a/t/t7406-submodule-update.sh
>> +++ b/t/t7406-submodule-update.sh
>> @@ -1116,4 +1116,63 @@ test_expect_success 'submodule update --filter sets partial clone settings' '
>>  	test_cmp_config -C super-filter/submodule blob:none remote.origin.partialclonefilter
>>  '
>>  
>> +# NEEDSWORK: Clean up the tests so that we can reuse the test setup.
>> +# Don't reuse the existing repos because the earlier tests have
>> +# intentionally disruptive configurations.
>
> Yeah this does seem a bit repetative...
>
>> +test_expect_success 'setup clean recursive superproject' '
>> +	git init bottom &&
>> +	test_commit -C bottom "bottom" &&
>> +	git init middle &&
>> +	git -C middle submodule add ../bottom bottom &&
>> +	git -C middle commit -m "middle" &&
>> +	git init top &&
>> +	git -C top submodule add ../middle middle &&
>> +	git -C top commit -m "top" &&
>> +	git clone --recurse-submodules top top-clean
>> +'
>> +
>> +test_expect_success 'submodule update should skip unmerged submodules' '
>> +	test_when_finished "rm -fr top-cloned" &&
>> +	cp -r top-clean top-cloned &&
>> +
>> +	# Create an upstream commit in each repo
>> +	test_commit -C bottom upstream_commit &&
>> +	(cd middle &&
>> +	 git -C bottom fetch &&
>> +	 git -C bottom checkout -f FETCH_HEAD &&
>> +	 git add bottom &&
>> +	 git commit -m "upstream_commit"
>> +	) &&
>> +	(cd top &&
>> +	 git -C middle fetch &&
>> +	 git -C middle checkout -f FETCH_HEAD &&
>> +	 git add middle &&
>> +	 git commit -m "upstream_commit"
>> +	) &&
>
> E.g. here the mixture of "cd" and "-C" is a bit odd, can't we just use:
>
>     git -C middle/bottom ...
>     ...
>     git -C middle add 

Yeah admittedly this is quite odd. I was hoping that this would be more readable than big chunks of "-C", since I personally find those quite difficult to follow when the directory changes from line to line. But, maybe it's just better to be consistent in just using "-C", and I'll find some way of organizing the lines that keeps them readable.

> I also wonder if this can't be a for-loop with the right params

I suppose so, though I think there isn't enough repetition here to justify the readability/correctness trade-off.

Previous: Ævar Arnfjörð BjarmasonNext: Glen Choo via GitGitGadget
Message 4 of 48 in “submodule: remove "--recursive-prefix"”
  1. 0/5 submodule: remove "--recursive-prefix"Glen Choo via GitGitGadget, Jun 27, 2022
  2. 1/5 submodule--helper update: use display path helperGlen Choo via GitGitGadget, Jun 27, 2022
  3. Ævar Arnfjörð BjarmasonJun 28, 2022
  4. Glen ChooJun 28, 2022
  5. 2/5 submodule--helper: don't recreate recursive prefixGlen Choo via GitGitGadget, Jun 27, 2022
  6. 3/5 submodule--helper: use correct display path helperGlen Choo via GitGitGadget, Jun 27, 2022
  7. 4/5 submodule--helper update: use --super-prefixGlen Choo via GitGitGadget, Jun 27, 2022
  8. Ævar Arnfjörð BjarmasonJun 28, 2022
  9. Glen ChooJun 28, 2022
  10. 5/5 submodule--helper: remove display path helperGlen Choo via GitGitGadget, Jun 27, 2022
  11. Glen ChooJun 28, 2022
  12. 00/18 submodule: remove "--recursive-prefix"Glen Choo via GitGitGadget, Jun 30, 2022
  13. 01/18 git-submodule.sh: remove unused sanitize_submodule_env()Ævar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  14. 02/18 git-submodule.sh: remove unused $prefix variableÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  15. 03/18 git-submodule.sh: make the "$cached" variable a booleanÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  16. 04/18 git-submodule.sh: remove unused top-level "--branch" argumentÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  17. 05/18 submodule--helper: have --require-init imply --initÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  18. 06/18 submodule update: remove "-v" optionÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  19. 07/18 submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"Ævar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  20. 08/18 submodule--helper: report "submodule" as our name in some "-h" outputÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  21. 09/18 submodule--helper: understand --checkout, --merge and --rebase synonymsÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  22. 10/18 submodule--helper: eliminate internal "--update" optionGlen Choo via GitGitGadget, Jun 30, 2022
  23. 11/18 git-submodule.sh: use "$quiet", not "$GIT_QUIET"Ævar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  24. 12/18 git-sh-setup.sh: remove "say" function, change last usersÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  25. 13/18 submodule--helper update: use display path helperGlen Choo via GitGitGadget, Jun 30, 2022
  26. 14/18 submodule--helper: don't recreate recursive prefixGlen Choo via GitGitGadget, Jun 30, 2022
  27. 15/18 submodule--helper: use correct display path helperGlen Choo via GitGitGadget, Jun 30, 2022
  28. 16/18 submodule--helper: remove unused SUPPORT_SUPER_PREFIX flagsÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  29. 18/18 submodule--helper: remove display path helperGlen Choo via GitGitGadget, Jun 30, 2022
  30. 17/18 submodule--helper update: use --super-prefixGlen Choo via GitGitGadget, Jun 30, 2022
  31. Glen ChooJun 30, 2022
  32. 0/6 submodule: remove "--recursive-prefix"Glen Choo, Jun 30, 2022
  33. 1/6 submodule--helper update: use display path helperGlen Choo, Jun 30, 2022
  34. 2/6 submodule--helper: don't recreate recursive prefixGlen Choo, Jun 30, 2022
  35. 3/6 submodule--helper: use correct display path helperGlen Choo, Jun 30, 2022
  36. 4/6 submodule--helper: remove unused SUPPORT_SUPER_PREFIX flagsGlen Choo, Jun 30, 2022
  37. 5/6 submodule--helper update: use --super-prefixGlen Choo, Jun 30, 2022
  38. 6/6 submodule--helper: remove display path helperGlen Choo, Jun 30, 2022
  39. 0/7 submodule: remove "--recursive-prefix"Glen Choo, Jul 1, 2022
  40. 1/7 submodule--helper tests: add missing "display path" coverageGlen Choo, Jul 1, 2022
  41. 2/7 submodule--helper update: use display path helperGlen Choo, Jul 1, 2022
  42. 3/7 submodule--helper: don't recreate recursive prefixGlen Choo, Jul 1, 2022
  43. 4/7 submodule--helper: use correct display path helperGlen Choo, Jul 1, 2022
  44. 6/7 submodule--helper update: use --super-prefixGlen Choo, Jul 1, 2022
  45. 5/7 submodule--helper: remove unused SUPPORT_SUPER_PREFIX flagsGlen Choo, Jul 1, 2022
  46. 7/7 submodule--helper: remove display path helperGlen Choo, Jul 1, 2022
  47. Ævar Arnfjörð BjarmasonJun 30, 2022
  48. Glen ChooJun 30, 2022

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.