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

[PATCH v3 0/7] No more adding submodule ODB as alternate

From
JTJonathan Tan <jonathantanmy@google.com>
Date
Sep 29, 2021, 23:06 UTC
Message-ID
<cover.1632956589.git.jonathantanmy@google.com>
In-Reply-To
<cover.1632242495.git.jonathantanmy@google.com>

This is on a merge of jk/ref-paranoia and jt/add-submodule-odb-clean-up (same as v2).

Here's the same patch set except that the repo is plumbed into the ref stores. (Iterators currently do not have any reference to their ref stores, so some of them still need repo fields. But because the ref stores now know their repos, calling code does not need to pass a repo when these iterators are instantiated.)

As you can see from the shorter patch list, this eliminates the need for some patches.

Jonathan Tan (7):
  refs: plumb repo into ref stores
  refs: teach arbitrary repo support to iterators
  refs: peeling non-the_repository iterators is BUG
  merge-{ort,recursive}: remove add_submodule_odb()
  object-file: only register submodule ODB if needed
  submodule: pass repo to check_has_commit()
  submodule: trace adding submodule ODB as alternate
 merge-ort.c                            | 18 +++--------
 merge-recursive.c                      | 41 +++++++++++++-------------
 object-file.c                          |  3 +-
 refs.c                                 | 32 +++++++++++++++-----
 refs/files-backend.c                   | 16 ++++++----
 refs/packed-backend.c                  | 13 ++++++--
 refs/packed-backend.h                  |  3 +-
 refs/ref-cache.c                       | 10 +++++++
 refs/ref-cache.h                       |  1 +
 refs/refs-internal.h                   | 11 +++++--
 strbuf.c                               | 12 ++++++--
 strbuf.h                               |  6 ++--
 submodule.c                            | 18 +++++++++--
 t/t5526-fetch-submodules.sh            |  3 ++
 t/t5531-deep-submodule-push.sh         |  3 ++
 t/t5545-push-options.sh                |  3 ++
 t/t5572-pull-submodule.sh              |  3 ++
 t/t6437-submodule-merge.sh             |  3 ++
 t/t7418-submodule-sparse-gitmodules.sh |  3 ++
 19 files changed, 139 insertions(+), 63 deletions(-)
Range-diff against v2:
 1:  e364b13a37 <  -:  ---------- refs: plumb repo param in begin-iterator functions
 -:  ---------- >  1:  8067397538 refs: plumb repo into ref stores
 2:  ec153eff7b !  2:  c8799d408f refs: teach arbitrary repo support to iterators
    @@ refs/files-backend.c: static struct ref_iterator *files_ref_iterator_begin(
      	base_ref_iterator_init(ref_iterator, &files_ref_iterator_vtable,
      			       overlay_iter->ordered);
      	iter->iter0 = overlay_iter;
    -+	iter->repo = repo;
    ++	iter->repo = ref_store->repo;
      	iter->flags = flags;
      
      	return ref_iterator;
    @@ refs/packed-backend.c: static struct ref_iterator *packed_ref_iterator_begin(
      
      	iter->base.oid = &iter->oid;
      
    -+	iter->repo = repo;
    ++	iter->repo = ref_store->repo;
      	iter->flags = flags;
      
      	if (prefix && *prefix)
 3:  dd1a8871f4 !  3:  e7fb60b7e7 refs: peeling non-the_repository iterators is BUG
    @@ refs/files-backend.c: static struct ref_iterator *files_ref_iterator_begin(
      
      	loose_iter = cache_ref_iterator_begin(get_loose_ref_cache(refs),
     -					      prefix, 1);
    -+					      prefix, repo, 1);
    ++					      prefix, ref_store->repo, 1);
      
      	/*
      	 * The packed-refs file might contain broken references, for
 4:  da0c9c2d44 <  -:  ---------- refs: teach refs_for_each_ref() arbitrary repos
 5:  dd70820d66 =  4:  e4a1be22c8 merge-{ort,recursive}: remove add_submodule_odb()
 6:  9c5ce004b2 =  5:  0200f1880b object-file: only register submodule ODB if needed
 7:  1fca3b1a25 !  6:  7a6a1ee5f9 submodule: pass repo to check_has_commit()
    @@ Commit message
     
         Pass the repo explicitly when calling check_has_commit() to avoid
         relying on add_submodule_odb(). With this commit and the parent commit,
    -    several tests no longer rely on add_submodule_odb(), so mark these tests
    -    accordingly.
    +    the last remaining tests no longer rely on add_submodule_odb(), so mark
    +    these tests accordingly.
     
         Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
     
    @@ t/t5526-fetch-submodules.sh: test_description='Recursive "git fetch" for submodu
      
      pwd=$(pwd)
     
    + ## t/t5531-deep-submodule-push.sh ##
    +@@ t/t5531-deep-submodule-push.sh: test_description='test push with submodules'
    + GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
    + export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
    + 
    ++GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB=1
    ++export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
    ++
    + . ./test-lib.sh
    + 
    + test_expect_success setup '
    +
    + ## t/t5545-push-options.sh ##
    +@@ t/t5545-push-options.sh: test_description='pushing to a repository using push options'
    + GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
    + export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
    + 
    ++GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB=1
    ++export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
    ++
    + . ./test-lib.sh
    + 
    + mk_repo_pair () {
    +
      ## t/t5572-pull-submodule.sh ##
     @@
      
 8:  7b5087a14d <  -:  ---------- refs: change refs_for_each_ref_in() to take repo
 9:  cef2a97840 =  7:  e4b6ee2186 submodule: trace adding submodule ODB as alternate
-- 
2.33.0.685.g46640cef36-goog
Previous: Jonathan TanNext: Jonathan Tan
Message 32 of 65 in “No more adding submodule ODB as alternate”
  1. 0/9 No more adding submodule ODB as alternateJonathan Tan, Sep 21, 2021
  2. 1/9 refs: make _advance() check struct repo, not flagJonathan Tan, Sep 21, 2021
  3. Junio C HamanoSep 23, 2021
  4. Jonathan TanSep 24, 2021
  5. Junio C HamanoSep 24, 2021
  6. Jeff KingSep 24, 2021
  7. Jonathan TanSep 24, 2021
  8. 2/9 refs: add repo paramater to _iterator_peel()Jonathan Tan, Sep 21, 2021
  9. 3/9 refs iterator: support non-the_repository advanceJonathan Tan, Sep 21, 2021
  10. 4/9 refs: teach refs_for_each_ref() arbitrary reposJonathan Tan, Sep 21, 2021
  11. 5/9 merge-{ort,recursive}: remove add_submodule_odb()Jonathan Tan, Sep 21, 2021
  12. Elijah NewrenSep 28, 2021
  13. 6/9 object-file: only register submodule ODB if neededJonathan Tan, Sep 21, 2021
  14. 7/9 submodule: pass repo to check_has_commit()Jonathan Tan, Sep 21, 2021
  15. 8/9 refs: change refs_for_each_ref_in() to take repoJonathan Tan, Sep 21, 2021
  16. 9/9 submodule: trace adding submodule ODB as alternateJonathan Tan, Sep 21, 2021
  17. Junio C HamanoSep 23, 2021
  18. 0/9 No more adding submodule ODB as alternateJonathan Tan, Sep 28, 2021
  19. 1/9 refs: plumb repo param in begin-iterator functionsJonathan Tan, Sep 28, 2021
  20. Junio C HamanoSep 28, 2021
  21. 2/9 refs: teach arbitrary repo support to iteratorsJonathan Tan, Sep 28, 2021
  22. Junio C HamanoSep 28, 2021
  23. Jonathan TanSep 29, 2021
  24. 3/9 refs: peeling non-the_repository iterators is BUGJonathan Tan, Sep 28, 2021
  25. 4/9 refs: teach refs_for_each_ref() arbitrary reposJonathan Tan, Sep 28, 2021
  26. Junio C HamanoSep 28, 2021
  27. 5/9 merge-{ort,recursive}: remove add_submodule_odb()Jonathan Tan, Sep 28, 2021
  28. 6/9 object-file: only register submodule ODB if neededJonathan Tan, Sep 28, 2021
  29. 7/9 submodule: pass repo to check_has_commit()Jonathan Tan, Sep 28, 2021
  30. 8/9 refs: change refs_for_each_ref_in() to take repoJonathan Tan, Sep 28, 2021
  31. 9/9 submodule: trace adding submodule ODB as alternateJonathan Tan, Sep 28, 2021
  32. 0/7 No more adding submodule ODB as alternateJonathan Tan, Sep 29, 2021
  33. 1/7 refs: plumb repo into ref storesJonathan Tan, Sep 29, 2021
  34. fixup! refs: plumb repo into ref storesCarlo Marcelo Arenas Belón, Sep 30, 2021
  35. fixup! refs: plumb repo into ref storesGlen Choo, Oct 6, 2021
  36. Jonathan TanOct 8, 2021
  37. Jonathan TanOct 8, 2021
  38. Josh SteadmonOct 7, 2021
  39. Jonathan TanOct 8, 2021
  40. 2/7 refs: teach arbitrary repo support to iteratorsJonathan Tan, Sep 29, 2021
  41. Glen ChooOct 7, 2021
  42. Jonathan TanOct 8, 2021
  43. 3/7 refs: peeling non-the_repository iterators is BUGJonathan Tan, Sep 29, 2021
  44. 5/7 object-file: only register submodule ODB if neededJonathan Tan, Sep 29, 2021
  45. Josh SteadmonOct 7, 2021
  46. Jonathan TanOct 8, 2021
  47. 4/7 merge-{ort,recursive}: remove add_submodule_odb()Jonathan Tan, Sep 29, 2021
  48. Josh SteadmonOct 7, 2021
  49. Jonathan TanOct 8, 2021
  50. 6/7 submodule: pass repo to check_has_commit()Jonathan Tan, Sep 29, 2021
  51. 7/7 submodule: trace adding submodule ODB as alternateJonathan Tan, Sep 29, 2021
  52. Josh SteadmonOct 7, 2021
  53. Jonathan TanOct 8, 2021
  54. Josh SteadmonOct 7, 2021
  55. 0/7 No more adding submodule ODB as alternateJonathan Tan, Oct 8, 2021
  56. 1/7 refs: plumb repo into ref storesJonathan Tan, Oct 8, 2021
  57. 2/7 refs: teach arbitrary repo support to iteratorsJonathan Tan, Oct 8, 2021
  58. 3/7 refs: peeling non-the_repository iterators is BUGJonathan Tan, Oct 8, 2021
  59. 4/7 merge-{ort,recursive}: remove add_submodule_odb()Jonathan Tan, Oct 8, 2021
  60. 5/7 object-file: only register submodule ODB if neededJonathan Tan, Oct 8, 2021
  61. 6/7 submodule: pass repo to check_has_commit()Jonathan Tan, Oct 8, 2021
  62. 7/7 submodule: trace adding submodule ODB as alternateJonathan Tan, Oct 8, 2021
  63. Glen ChooOct 12, 2021
  64. Josh SteadmonOct 12, 2021
  65. Junio C HamanoOct 12, 2021

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.