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

Re: [RFC PATCH v2 12/12] submodule: remove the .gitmodules file when it is empty

From
Stefan Beller <sbeller@google.com>
Date
Aug 2, 2018, 21:15 UTC
Message-ID
<CAGZ79kaDK9nuUm_hqAZKMHydiaBDhDkM_y1UFwpRHoGjCQoq4w@mail.gmail.com>
In-Reply-To
<20180802134634.10300-13-ao2@ao2.it>
On Thu, Aug 2, 2018 at 6:47 AM Antonio Ospite <ao2@ao2.it> wrote:
>
> In particular this makes it possible to really clean things up when
> removing the last submodule with "git rm".

This sentence is a continuation of the subject line, and I had to reread it to follow along.

>
> The rationale is that if git creates .gitmodules when adding the first
> submodule it should also remove it when removing the last submodule.

I agree with this sentiment. It seems slightly odd to me to have this tied in the same patch series that changes .gitmodules reading behavior as I could think of this feature as orthogonal to what this series achieved up to patch 10.

> -       test_cmp expect actual &&
> +       test_cmp expect.both_deleted actual &&

This seems to be the re-occuring pattern in t3600, and given that we have

  cat >expect <<EOF
  M  .gitmodules
  D  submod
  EOF
  cat >expect.both_deleted<<EOF
  D  .gitmodules
  D  submod
  EOF

with no other writing of expect in the range, this seems to be correct. Maybe worth testing that we do not delete a .gitmodules file if we have more than one submodule? (But I would expect this to be covered implicitly somewhere in the test suite. If so that would be worth mentioning in the commit message instead of writing a test -- just looking quickly we do have " git rm --cached submodule2" in t7406 which might be sufficient?)

Show 13 quoted lines
>  test_expect_success "rm absorbs submodule's nested .git directory" '
> diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh
> index 48fd14fae6..2bb42a4c8f 100755
> --- a/t/t7400-submodule-basic.sh
> +++ b/t/t7400-submodule-basic.sh
> @@ -99,6 +99,17 @@ inspect() {
>         )
>  }
>
> +test_expect_success 'removal of last submodule also removes empty .gitmodules' '
> +       (
> +               cd addtest &&
> +               test ! -d .git/modules &&
test_path_is_missing ?
> +               git submodule add -q "$submodurl" first_submod &&
> +               test -e .gitmodules &&
test_path_is_file
> +               git rm -f first_submod &&
Do we need to force it here?
> +               test ! -e .gitmodules
test_path_is_missing

Thanks for this series! Overall it was a pleasant read, though I had some comments.

Thanks, Stefan

Previous: Antonio OspiteNext: Antonio Ospite
Message 12 of 38 in “Make submodules work if .gitmodules is not checked out”
  1. 00/12 Make submodules work if .gitmodules is not checked outAntonio Ospite, Aug 2, 2018
  2. 01/12 submodule: add a print_config_from_gitmodules() helperAntonio Ospite, Aug 2, 2018
  3. Stefan BellerAug 2, 2018
  4. Antonio OspiteAug 9, 2018
  5. 10/12 t7416: add new test about HEAD:.gitmodules and not existing .gitmodulesAntonio Ospite, Aug 2, 2018
  6. Stefan BellerAug 2, 2018
  7. Antonio OspiteAug 9, 2018
  8. 07/12 submodule: use 'submodule--helper config --stage' to stage .gitmodulesAntonio Ospite, Aug 2, 2018
  9. 08/12 t7506: cleanup .gitmodules properly before setting up new scenarioAntonio Ospite, Aug 2, 2018
  10. Stefan BellerAug 2, 2018
  11. 12/12 submodule: remove the .gitmodules file when it is emptyAntonio Ospite, Aug 2, 2018
  12. Stefan BellerAug 2, 2018
  13. Antonio OspiteAug 3, 2018
  14. 11/12 dir: move is_empty_file() from builtin/am.c to dir.c and make it publicAntonio Ospite, Aug 2, 2018
  15. Stefan BellerAug 2, 2018
  16. Antonio OspiteAug 3, 2018
  17. 03/12 t7411: be nicer to future tests and really clean things upAntonio Ospite, Aug 2, 2018
  18. SZEDER GáborAug 2, 2018
  19. Stefan BellerAug 2, 2018
  20. Antonio OspiteAug 9, 2018
  21. Junio C HamanoAug 2, 2018
  22. 09/12 submodule: support reading .gitmodules even when it's not checked outAntonio Ospite, Aug 2, 2018
  23. Stefan BellerAug 2, 2018
  24. 02/12 submodule: factor out a config_set_in_gitmodules_file_gently functionAntonio Ospite, Aug 2, 2018
  25. 05/12 submodule: use the 'submodule--helper config' commandAntonio Ospite, Aug 2, 2018
  26. Stefan BellerAug 2, 2018
  27. 04/12 submodule--helper: add a new 'config' subcommandAntonio Ospite, Aug 2, 2018
  28. Stefan BellerAug 2, 2018
  29. Jeff KingAug 2, 2018
  30. Antonio OspiteAug 3, 2018
  31. 06/12 submodule--helper: add a '--stage' option to the 'config' sub commandAntonio Ospite, Aug 2, 2018
  32. Junio C HamanoAug 2, 2018
  33. Antonio OspiteAug 3, 2018
  34. Junio C HamanoAug 3, 2018
  35. Antonio OspiteAug 6, 2018
  36. Junio C HamanoAug 6, 2018
  37. Antonio OspiteAug 7, 2018
  38. Stefan BellerAug 6, 2018

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.