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

Re: [PATCH v2 00/20] Sparse Index: Design, Format, Tests

From
Elijah Newren <newren@gmail.com>
Date
Mar 11, 2021, 00:07 UTC
Message-ID
<CABPp-BGkr5D8bBgeeFob=j3p01_nJzUaQXDD=EGriUJ6XNX+Rw@mail.gmail.com>
In-Reply-To
<pull.883.v2.git.1615404664.gitgitgadget@gmail.com>

On Wed, Mar 10, 2021 at 11:31 AM Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com> wrote:

Show 37 quoted lines
>
> Here is the first full patch series submission coming out of the
> sparse-index RFC [1].
>
> [1]
> https://lore.kernel.org/git/pull.847.git.1611596533.gitgitgadget@gmail.com/
>
> I won't waste too much space here, because PATCH 1 includes a sizeable
> design document that describes the feature, the reasoning behind it, and my
> plan for getting this implemented widely throughout the codebase.
>
> There are some new things here that were not in the RFC:
>
>  * Design doc and format updates. (Patch 1)
>  * Performance test script. (Patches 2 and 20)
>
> Notably missing in this series from the RFC:
>
>  * The mega-patch inserting ensure_full_index() throughout the codebase.
>    That will be a follow-up series to this one.
>  * The integrations with git status and git add to demonstrate the improved
>    performance. Those will also appear in their own series later.
>
> I plan to keep my latest work in this area in my 'sparse-index/wip' branch
> [2]. It includes all of the work from the RFC right now, updated with the
> work from this series.
>
> [2] https://github.com/derrickstolee/git/tree/sparse-index/wip
>
>
> Updates in V2
> =============
>
>  * Various typos and awkward grammar is fixed.
>  * Cleaned up unnecessary commands in p2000-sparse-operations.sh
>  * Added a comment to the sparse_index member of struct index_state.
>  * Used tree_type, commit_type, and blob_type in test-read-cache.c.

I read through the range-diff and comments from the previous series. There's only a few things left (as I noted in comments), but they're all pretty trivial so this one is:

Reviewed-by: Elijah Newren <newren@gmail.com>
Show 278 quoted lines
>
> Thanks, -Stolee
>
> Derrick Stolee (20):
>   sparse-index: design doc and format update
>   t/perf: add performance test for sparse operations
>   t1092: clean up script quoting
>   sparse-index: add guard to ensure full index
>   sparse-index: implement ensure_full_index()
>   t1092: compare sparse-checkout to sparse-index
>   test-read-cache: print cache entries with --table
>   test-tool: don't force full index
>   unpack-trees: ensure full index
>   sparse-checkout: hold pattern list in index
>   sparse-index: convert from full to sparse
>   submodule: sparse-index should not collapse links
>   unpack-trees: allow sparse directories
>   sparse-index: check index conversion happens
>   sparse-index: create extension for compatibility
>   sparse-checkout: toggle sparse index from builtin
>   sparse-checkout: disable sparse-index
>   cache-tree: integrate with sparse directory entries
>   sparse-index: loose integration with cache_tree_verify()
>   p2000: add sparse-index repos
>
>  Documentation/config/extensions.txt      |   8 +
>  Documentation/git-sparse-checkout.txt    |  14 ++
>  Documentation/technical/index-format.txt |   7 +
>  Documentation/technical/sparse-index.txt | 173 ++++++++++++++
>  Makefile                                 |   1 +
>  builtin/sparse-checkout.c                |  44 +++-
>  cache-tree.c                             |  40 ++++
>  cache.h                                  |  18 +-
>  read-cache.c                             |  35 ++-
>  repo-settings.c                          |  15 ++
>  repository.c                             |  11 +-
>  repository.h                             |   3 +
>  setup.c                                  |   3 +
>  sparse-index.c                           | 290 +++++++++++++++++++++++
>  sparse-index.h                           |  11 +
>  t/README                                 |   3 +
>  t/helper/test-read-cache.c               |  66 +++++-
>  t/perf/p2000-sparse-operations.sh        | 102 ++++++++
>  t/t1091-sparse-checkout-builtin.sh       |  13 +
>  t/t1092-sparse-checkout-compatibility.sh | 136 +++++++++--
>  unpack-trees.c                           |  16 +-
>  21 files changed, 969 insertions(+), 40 deletions(-)
>  create mode 100644 Documentation/technical/sparse-index.txt
>  create mode 100644 sparse-index.c
>  create mode 100644 sparse-index.h
>  create mode 100755 t/perf/p2000-sparse-operations.sh
>
>
> base-commit: 966e671106b2fd38301e7c344c754fd118d0bb07
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-883%2Fderrickstolee%2Fsparse-index%2Fformat-v2
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-883/derrickstolee/sparse-index/format-v2
> Pull-Request: https://github.com/gitgitgadget/git/pull/883
>
> Range-diff vs v1:
>
>   1:  daa9a6bcefbc !  1:  2fe413fdac80 sparse-index: design doc and format update
>      @@ Documentation/technical/sparse-index.txt (new)
>       +If we need to discover the details for paths within that directory, we
>       +can parse trees to find that list.
>       +
>      -+This addition of sparse-directory entries violates expectations about the
>      ++At time of writing, sparse-directory entries violate expectations about the
>       +index format and its in-memory data structure. There are many consumers in
>       +the codebase that expect to iterate through all of the index entries and
>       +see only files. In addition, they expect to see all files at `HEAD`. One
>      @@ Documentation/technical/sparse-index.txt (new)
>       +* `git merge`
>       +* `git rebase`
>       +
>      ++Hopefully, commands such as `git merge` and `git rebase` can benefit
>      ++instead from merge algorithms that do not use the index as a data
>      ++structure, such as the merge-ORT strategy. As these topics mature, we
>      ++may enalbe the ORT strategy by default for repositories using the
>      ++sparse-index feature.
>      ++
>       +Along with `git status` and `git add`, these commands cover the majority
>       +of users' interactions with the working directory. In addition, we can
>       +integrate with these commands:
>   2:  a8c6322a3dbe !  2:  540ab5495065 t/perf: add performance test for sparse operations
>      @@ t/perf/p2000-sparse-operations.sh (new)
>       + # Remove submodules from the example repo, because our
>       + # duplication of the entire repo creates an unlikly data shape.
>       + git config --file .gitmodules --get-regexp "submodule.*.path" >modules &&
>      -+ rm -f .gitmodules &&
>      -+ git add .gitmodules &&
>      ++ git rm -f .gitmodules &&
>       + for module in $(awk "{print \$2}" modules)
>       + do
>       +         git rm $module || return 1
>       + done &&
>      -+ git add . &&
>       + git commit -m "remove submodules" &&
>       +
>       + echo bogus >a &&
>   3:  6e783c88821e =  3:  5cbedb377b37 t1092: clean up script quoting
>   4:  01da4c48a1fa =  4:  6e21f776e883 sparse-index: add guard to ensure full index
>   5:  2b83989fbcd3 !  5:  399ddb0bad56 sparse-index: implement ensure_full_index()
>      @@ cache.h: struct index_state {
>                  updated_skipworktree : 1,
>       -          fsmonitor_has_run_once : 1;
>       +          fsmonitor_has_run_once : 1,
>      ++
>      ++          /*
>      ++           * sparse_index == 1 when sparse-directory
>      ++           * entries exist. Requires sparse-checkout
>      ++           * in cone mode.
>      ++           */
>       +          sparse_index : 1;
>         struct hashmap name_hash;
>         struct hashmap dir_hash;
>   6:  c9910a37579c =  6:  eac2db5efc22 t1092: compare sparse-checkout to sparse-index
>   7:  3d92df7a0cf9 !  7:  e9c82d2eda82 test-read-cache: print cache entries with --table
>      @@ Commit message
>
>        ## t/helper/test-read-cache.c ##
>       @@
>      + #include "test-tool.h"
>        #include "cache.h"
>        #include "config.h"
>      -
>      ++#include "blob.h"
>      ++#include "commit.h"
>      ++#include "tree.h"
>      ++
>       +static void print_cache_entry(struct cache_entry *ce)
>       +{
>      -+ printf("%06o ", ce->ce_mode & 0777777);
>      ++ const char *type;
>      ++ printf("%06o ", ce->ce_mode & 0177777);
>       +
>       + if (S_ISSPARSEDIR(ce->ce_mode))
>      -+         printf("tree ");
>      ++         type = tree_type;
>       + else if (S_ISGITLINK(ce->ce_mode))
>      -+         printf("commit ");
>      ++         type = commit_type;
>       + else
>      -+         printf("blob ");
>      ++         type = blob_type;
>       +
>      -+ printf("%s\t%s\n",
>      ++ printf("%s %s\t%s\n",
>      ++        type,
>       +        oid_to_hex(&ce->oid),
>       +        ce->name);
>       +}
>       +
>      -+static void print_cache(struct index_state *cache)
>      ++static void print_cache(struct index_state *istate)
>       +{
>       + int i;
>      -+ for (i = 0; i < the_index.cache_nr; i++)
>      -+         print_cache_entry(the_index.cache[i]);
>      ++ for (i = 0; i < istate->cache_nr; i++)
>      ++         print_cache_entry(istate->cache[i]);
>       +}
>      -+
>      +
>        int cmd__read_cache(int argc, const char **argv)
>        {
>       + struct repository *r = the_repository;
>   8:  94373e2bfbbc !  8:  243541fc5820 test-tool: don't force full index
>      @@ Commit message
>
>        ## t/helper/test-read-cache.c ##
>       @@
>      - #include "test-tool.h"
>      - #include "cache.h"
>      - #include "config.h"
>      + #include "blob.h"
>      + #include "commit.h"
>      + #include "tree.h"
>       +#include "sparse-index.h"
>
>        static void print_cache_entry(struct cache_entry *ce)
>   9:  e71f033c2871 =  9:  48f65093b3da unpack-trees: ensure full index
>  10:  f86d3dc154d1 ! 10:  83aac8b7a1ec sparse-checkout: hold pattern list in index
>      @@ Commit message
>           pattern set, we need access to that in-memory copy. Place a pointer to
>           a 'struct pattern_list' in the index so we can access this on-demand.
>           This will be used in the next change which uses the sparse-checkout
>      -    definition to filter out directories that are outsie the sparse cone.
>      +    definition to filter out directories that are outside the sparse cone.
>
>           Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
>
>  11:  a2d77c23a0cb ! 11:  f6db0c27a285 sparse-index: convert from full to sparse
>      @@ read-cache.c: int verify_path(const char *path, unsigned mode)
>                                 return 0;
>       +                 /*
>       +                  * allow terminating directory separators for
>      -+                  * sparse directory enries.
>      ++                  * sparse directory entries.
>       +                  */
>       +                 if (c == '\0')
>       +                         return S_ISDIR(mode);
>      @@ sparse-index.c
>       +         struct cache_entry *ce = istate->cache[i];
>       +
>       +         /*
>      -+          * Detect if this is a normal entry oustide of any subtree
>      ++          * Detect if this is a normal entry outside of any subtree
>       +          * entry.
>       +          */
>       +         base = ce->name + ct_pathlen;
>  12:  4405a9115c3b = 12:  f2a3e7298798 submodule: sparse-index should not collapse links
>  13:  fda23f07e6a2 ! 13:  6f1ebe6ccc08 unpack-trees: allow sparse directories
>      @@ Commit message
>           is possible to have a directory in a sparse index as long as that entry
>           is itself marked with the skip-worktree bit.
>
>      -    The negation of the 'pos' variable must be conditioned to only when it
>      -    starts as negative. This is identical behavior as before when the index
>      -    is full.
>      +    The 'pos' variable is assigned a negative value if an exact match is not
>      +    found. Since a directory name can be an exact match, it is no longer an
>      +    error to have a nonnegative 'pos' value.
>
>           Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
>
>  14:  7d4627574bb8 = 14:  3fa684b315fb sparse-index: check index conversion happens
>  15:  564503f78784 ! 15:  d74576d677f6 sparse-index: create extension for compatibility
>      @@ Commit message
>
>           We _could_ add a new index version that explicitly adds these
>           capabilities, but there are nuances to index formats 2, 3, and 4 that
>      -    are still valuable to select as options. For now, create a repo
>      -    extension, "extensions.sparseIndex", that specifies that the tool
>      -    reading this repository must understand sparse directory entries.
>      +    are still valuable to select as options. Until we add index format
>      +    version 5, create a repo extension, "extensions.sparseIndex", that
>      +    specifies that the tool reading this repository must understand sparse
>      +    directory entries.
>
>           This change only encodes the extension and enables it when
>           GIT_TEST_SPARSE_INDEX=1. Later, we will add a more user-friendly CLI
>      @@ Documentation/config/extensions.txt: extensions.objectFormat::
>       + When combined with `core.sparseCheckout=true` and
>       + `core.sparseCheckoutCone=true`, the index may contain entries
>       + corresponding to directories outside of the sparse-checkout
>      -+ definition. Versions of Git that do not understand this extension
>      -+ do not expect directory entries in the index.
>      ++ definition in lieu of containing each path under such directories.
>      ++ Versions of Git that do not understand this extension do not
>      ++ expect directory entries in the index.
>
>        ## cache.h ##
>       @@ cache.h: struct repository_format {
>  16:  6d6b230e3318 ! 16:  e530ca5f668d sparse-checkout: toggle sparse index from builtin
>      @@ Documentation/git-sparse-checkout.txt: To avoid interfering with other worktrees
>       +a sparse index until they are properly integrated with the feature.
>       ++
>       +**WARNING:** Using a sparse index requires modifying the index in a way
>      -+that is not completely understood by other tools. Enabling sparse index
>      -+enables the `extensions.spareseIndex` config value, which might cause
>      -+other tools to stop working with your repository. If you have trouble with
>      -+this compatibility, then run `git sparse-checkout sparse-index disable` to
>      -+remove this config and rewrite your index to not be sparse.
>      ++that is not completely understood by external tools. If you have trouble
>      ++with this compatibility, then run `git sparse-checkout sparse-index disable`
>      ++to rewrite your index to not be sparse. Older versions of Git will not
>      ++understand the `sparseIndex` repository extension and may fail to interact
>      ++with your repository until it is disabled.
>
>        'set'::
>         Write a set of patterns to the sparse-checkout file, as given as
>  17:  bcf960ef2362 = 17:  42d0da9c5def sparse-checkout: disable sparse-index
>  18:  e6afec58674e = 18:  6bb0976a6295 cache-tree: integrate with sparse directory entries
>  19:  2be4981fe698 = 19:  07f34e80609a sparse-index: loose integration with cache_tree_verify()
>  20:  a738b0ba8ab4 = 20:  41e3b56b9c17 p2000: add sparse-index repos
>
> --
> gitgitgadget
Previous: Derrick Stolee via GitGitGadgetNext: Derrick Stolee via GitGitGadget
Message 83 of 203 in “Sparse Index: Design, Format, Tests”
  1. 00/20 Sparse Index: Design, Format, TestsDerrick Stolee via GitGitGadget, Feb 23, 2021
  2. 01/20 sparse-index: design doc and format updateDerrick Stolee via GitGitGadget, Feb 23, 2021
  3. Elijah NewrenFeb 24, 2021
  4. Derrick StoleeFeb 25, 2021
  5. Elijah NewrenFeb 25, 2021
  6. 03/20 t1092: clean up script quotingDerrick Stolee via GitGitGadget, Feb 23, 2021
  7. 02/20 t/perf: add performance test for sparse operationsDerrick Stolee via GitGitGadget, Feb 23, 2021
  8. Elijah NewrenFeb 24, 2021
  9. Derrick StoleeMar 9, 2021
  10. 04/20 sparse-index: add guard to ensure full indexDerrick Stolee via GitGitGadget, Feb 23, 2021
  11. Elijah NewrenFeb 24, 2021
  12. 05/20 sparse-index: implement ensure_full_index()Derrick Stolee via GitGitGadget, Feb 23, 2021
  13. Elijah NewrenFeb 24, 2021
  14. 14/20 sparse-index: check index conversion happensDerrick Stolee via GitGitGadget, Feb 23, 2021
  15. 16/20 sparse-checkout: toggle sparse index from builtinDerrick Stolee via GitGitGadget, Feb 23, 2021
  16. Martin ÅgrenFeb 24, 2021
  17. Derrick StoleeMar 9, 2021
  18. Elijah NewrenMar 9, 2021
  19. Derrick StoleeMar 9, 2021
  20. Elijah NewrenMar 9, 2021
  21. Martin ÅgrenMar 14, 2021
  22. Derrick StoleeMar 15, 2021
  23. 07/20 test-read-cache: print cache entries with --tableDerrick Stolee via GitGitGadget, Feb 23, 2021
  24. Elijah NewrenFeb 25, 2021
  25. Derrick StoleeMar 9, 2021
  26. 06/20 t1092: compare sparse-checkout to sparse-indexDerrick Stolee via GitGitGadget, Feb 23, 2021
  27. Elijah NewrenFeb 25, 2021
  28. 11/20 sparse-index: convert from full to sparseDerrick Stolee via GitGitGadget, Feb 23, 2021
  29. Elijah NewrenFeb 25, 2021
  30. Derrick StoleeMar 9, 2021
  31. 10/20 sparse-checkout: hold pattern list in indexDerrick Stolee via GitGitGadget, Feb 23, 2021
  32. Elijah NewrenFeb 25, 2021
  33. 09/20 unpack-trees: ensure full indexDerrick Stolee via GitGitGadget, Feb 23, 2021
  34. 08/20 test-tool: don't force full indexDerrick Stolee via GitGitGadget, Feb 23, 2021
  35. 13/20 unpack-trees: allow sparse directoriesDerrick Stolee via GitGitGadget, Feb 23, 2021
  36. Elijah NewrenFeb 25, 2021
  37. Derrick StoleeMar 9, 2021
  38. Elijah NewrenMar 9, 2021
  39. 12/20 submodule: sparse-index should not collapse linksDerrick Stolee via GitGitGadget, Feb 23, 2021
  40. 15/20 sparse-index: create extension for compatibilityDerrick Stolee via GitGitGadget, Feb 23, 2021
  41. Elijah NewrenFeb 25, 2021
  42. Derrick StoleeMar 9, 2021
  43. 17/20 sparse-checkout: disable sparse-indexDerrick Stolee via GitGitGadget, Feb 23, 2021
  44. SZEDER GáborFeb 27, 2021
  45. Derrick StoleeMar 9, 2021
  46. Derrick StoleeMar 10, 2021
  47. 18/20 cache-tree: integrate with sparse directory entriesDerrick Stolee via GitGitGadget, Feb 23, 2021
  48. 20/20 p2000: add sparse-index reposDerrick Stolee via GitGitGadget, Feb 23, 2021
  49. 19/20 sparse-index: loose integration with cache_tree_verify()Derrick Stolee via GitGitGadget, Feb 23, 2021
  50. Elijah NewrenFeb 23, 2021
  51. Elijah NewrenFeb 26, 2021
  52. 00/20 Sparse Index: Design, Format, TestsDerrick Stolee via GitGitGadget, Mar 10, 2021
  53. 01/20 sparse-index: design doc and format updateDerrick Stolee via GitGitGadget, Mar 10, 2021
  54. Elijah NewrenMar 10, 2021
  55. 02/20 t/perf: add performance test for sparse operationsDerrick Stolee via GitGitGadget, Mar 10, 2021
  56. 05/20 sparse-index: implement ensure_full_index()Derrick Stolee via GitGitGadget, Mar 10, 2021
  57. Junio C HamanoMar 12, 2021
  58. Derrick StoleeMar 12, 2021
  59. Junio C HamanoMar 12, 2021
  60. Derrick StoleeMar 12, 2021
  61. Ævar Arnfjörð BjarmasonMar 15, 2021
  62. 04/20 sparse-index: add guard to ensure full indexDerrick Stolee via GitGitGadget, Mar 10, 2021
  63. 03/20 t1092: clean up script quotingDerrick Stolee via GitGitGadget, Mar 10, 2021
  64. 06/20 t1092: compare sparse-checkout to sparse-indexDerrick Stolee via GitGitGadget, Mar 10, 2021
  65. Elijah NewrenMar 10, 2021
  66. Derrick StoleeMar 11, 2021
  67. 07/20 test-read-cache: print cache entries with --tableDerrick Stolee via GitGitGadget, Mar 10, 2021
  68. 14/20 sparse-index: check index conversion happensDerrick Stolee via GitGitGadget, Mar 10, 2021
  69. 08/20 test-tool: don't force full indexDerrick Stolee via GitGitGadget, Mar 10, 2021
  70. 12/20 submodule: sparse-index should not collapse linksDerrick Stolee via GitGitGadget, Mar 10, 2021
  71. 13/20 unpack-trees: allow sparse directoriesDerrick Stolee via GitGitGadget, Mar 10, 2021
  72. 11/20 sparse-index: convert from full to sparseDerrick Stolee via GitGitGadget, Mar 10, 2021
  73. Elijah NewrenMar 10, 2021
  74. Derrick StoleeMar 11, 2021
  75. 09/20 unpack-trees: ensure full indexDerrick Stolee via GitGitGadget, Mar 10, 2021
  76. 15/20 sparse-index: create extension for compatibilityDerrick Stolee via GitGitGadget, Mar 10, 2021
  77. 19/20 sparse-index: loose integration with cache_tree_verify()Derrick Stolee via GitGitGadget, Mar 10, 2021
  78. 10/20 sparse-checkout: hold pattern list in indexDerrick Stolee via GitGitGadget, Mar 10, 2021
  79. 17/20 sparse-checkout: disable sparse-indexDerrick Stolee via GitGitGadget, Mar 10, 2021
  80. 18/20 cache-tree: integrate with sparse directory entriesDerrick Stolee via GitGitGadget, Mar 10, 2021
  81. 20/20 p2000: add sparse-index reposDerrick Stolee via GitGitGadget, Mar 10, 2021
  82. 16/20 sparse-checkout: toggle sparse index from builtinDerrick Stolee via GitGitGadget, Mar 10, 2021
  83. Elijah NewrenMar 11, 2021
  84. 00/20 Sparse Index: Design, Format, TestsDerrick Stolee via GitGitGadget, Mar 16, 2021
  85. 01/20 sparse-index: design doc and format updateDerrick Stolee via GitGitGadget, Mar 16, 2021
  86. Junio C HamanoMar 19, 2021
  87. Derrick StoleeMar 23, 2021
  88. Junio C HamanoMar 23, 2021
  89. Derrick StoleeMar 23, 2021
  90. 03/20 t1092: clean up script quotingDerrick Stolee via GitGitGadget, Mar 16, 2021
  91. Ævar Arnfjörð BjarmasonMar 17, 2021
  92. 02/20 t/perf: add performance test for sparse operationsDerrick Stolee via GitGitGadget, Mar 16, 2021
  93. Ævar Arnfjörð BjarmasonMar 17, 2021
  94. Derrick StoleeMar 17, 2021
  95. Ævar Arnfjörð BjarmasonMar 17, 2021
  96. Derrick StoleeMar 17, 2021
  97. 08/20 test-tool: don't force full indexDerrick Stolee via GitGitGadget, Mar 16, 2021
  98. 06/20 t1092: compare sparse-checkout to sparse-indexDerrick Stolee via GitGitGadget, Mar 16, 2021
  99. 04/20 sparse-index: add guard to ensure full indexDerrick Stolee via GitGitGadget, Mar 16, 2021
  100. 09/20 unpack-trees: ensure full indexDerrick Stolee via GitGitGadget, Mar 16, 2021
  101. 07/20 test-read-cache: print cache entries with --tableDerrick Stolee via GitGitGadget, Mar 16, 2021
  102. 1/5 ls-files: defer read_index() after parse_options() etc.Ævar Arnfjörð Bjarmason, Mar 17, 2021
  103. 2/5 ls-files: make "mode" in show_ce() loop a variableÆvar Arnfjörð Bjarmason, Mar 17, 2021
  104. Elijah NewrenMar 17, 2021
  105. Ævar Arnfjörð BjarmasonMar 24, 2021
  106. 3/5 ls-files: add and use a new --sparse optionÆvar Arnfjörð Bjarmason, Mar 17, 2021
  107. Elijah NewrenMar 17, 2021
  108. Ævar Arnfjörð BjarmasonMar 17, 2021
  109. Elijah NewrenMar 17, 2021
  110. Derrick StoleeMar 17, 2021
  111. Ævar Arnfjörð BjarmasonMar 24, 2021
  112. 4/5 test-tool read-cache: --table is redundant to ls-filesÆvar Arnfjörð Bjarmason, Mar 17, 2021
  113. 0/5 Re: [PATCH v3 07/20] test-read-cache: print cache entries with --tableÆvar Arnfjörð Bjarmason, Mar 17, 2021
  114. Elijah NewrenMar 17, 2021
  115. Derrick StoleeMar 17, 2021
  116. Elijah NewrenMar 17, 2021
  117. Derrick StoleeMar 17, 2021
  118. 5/5 test-tool: split up test-tool read-cacheÆvar Arnfjörð Bjarmason, Mar 17, 2021
  119. Ævar Arnfjörð BjarmasonMar 17, 2021
  120. 05/20 sparse-index: implement ensure_full_index()Derrick Stolee via GitGitGadget, Mar 16, 2021
  121. Ævar Arnfjörð BjarmasonMar 17, 2021
  122. 13/20 unpack-trees: allow sparse directoriesDerrick Stolee via GitGitGadget, Mar 16, 2021
  123. Ævar Arnfjörð BjarmasonMar 17, 2021
  124. 12/20 submodule: sparse-index should not collapse linksDerrick Stolee via GitGitGadget, Mar 16, 2021
  125. 10/20 sparse-checkout: hold pattern list in indexDerrick Stolee via GitGitGadget, Mar 16, 2021
  126. 11/20 sparse-index: convert from full to sparseDerrick Stolee via GitGitGadget, Mar 16, 2021
  127. Ævar Arnfjörð BjarmasonMar 17, 2021
  128. Derrick StoleeMar 17, 2021
  129. Derrick StoleeMar 18, 2021
  130. 14/20 sparse-index: check index conversion happensDerrick Stolee via GitGitGadget, Mar 16, 2021
  131. 15/20 sparse-index: create extension for compatibilityDerrick Stolee via GitGitGadget, Mar 16, 2021
  132. 17/20 sparse-checkout: disable sparse-indexDerrick Stolee via GitGitGadget, Mar 16, 2021
  133. 16/20 sparse-checkout: toggle sparse index from builtinDerrick Stolee via GitGitGadget, Mar 16, 2021
  134. 18/20 cache-tree: integrate with sparse directory entriesDerrick Stolee via GitGitGadget, Mar 16, 2021
  135. 19/20 sparse-index: loose integration with cache_tree_verify()Derrick Stolee via GitGitGadget, Mar 16, 2021
  136. 20/20 p2000: add sparse-index reposDerrick Stolee via GitGitGadget, Mar 16, 2021
  137. Derrick StoleeMar 16, 2021
  138. Elijah NewrenMar 16, 2021
  139. Junio C HamanoMar 18, 2021
  140. Derrick StoleeMar 19, 2021
  141. 00/20 Sparse Index: Design, Format, TestsDerrick Stolee via GitGitGadget, Mar 23, 2021
  142. 01/20 sparse-index: design doc and format updateDerrick Stolee via GitGitGadget, Mar 23, 2021
  143. SZEDER GáborMar 26, 2021
  144. Junio C HamanoMar 28, 2021
  145. Derrick StoleeMar 29, 2021
  146. 05/20 sparse-index: implement ensure_full_index()Derrick Stolee via GitGitGadget, Mar 23, 2021
  147. 04/20 sparse-index: add guard to ensure full indexDerrick Stolee via GitGitGadget, Mar 23, 2021
  148. 03/20 t1092: clean up script quotingDerrick Stolee via GitGitGadget, Mar 23, 2021
  149. 02/20 t/perf: add performance test for sparse operationsDerrick Stolee via GitGitGadget, Mar 23, 2021
  150. 10/20 sparse-checkout: hold pattern list in indexDerrick Stolee via GitGitGadget, Mar 23, 2021
  151. 07/20 test-read-cache: print cache entries with --tableDerrick Stolee via GitGitGadget, Mar 23, 2021
  152. Ævar Arnfjörð BjarmasonMar 24, 2021
  153. Derrick StoleeMar 24, 2021
  154. Ævar Arnfjörð BjarmasonMar 25, 2021
  155. Elijah NewrenMar 26, 2021
  156. Ævar Arnfjörð BjarmasonMar 28, 2021
  157. Derrick StoleeMar 29, 2021
  158. Junio C HamanoMar 29, 2021
  159. Derrick StoleeMar 30, 2021
  160. Ævar Arnfjörð BjarmasonMar 29, 2021
  161. Derrick StoleeMar 30, 2021
  162. Elijah NewrenMar 29, 2021
  163. 08/20 test-tool: don't force full indexDerrick Stolee via GitGitGadget, Mar 23, 2021
  164. 09/20 unpack-trees: ensure full indexDerrick Stolee via GitGitGadget, Mar 23, 2021
  165. 12/20 submodule: sparse-index should not collapse linksDerrick Stolee via GitGitGadget, Mar 23, 2021
  166. 06/20 t1092: compare sparse-checkout to sparse-indexDerrick Stolee via GitGitGadget, Mar 23, 2021
  167. 13/20 unpack-trees: allow sparse directoriesDerrick Stolee via GitGitGadget, Mar 23, 2021
  168. 11/20 sparse-index: convert from full to sparseDerrick Stolee via GitGitGadget, Mar 23, 2021
  169. 18/20 cache-tree: integrate with sparse directory entriesDerrick Stolee via GitGitGadget, Mar 23, 2021
  170. 15/20 sparse-index: create extension for compatibilityDerrick Stolee via GitGitGadget, Mar 23, 2021
  171. 16/20 sparse-checkout: toggle sparse index from builtinDerrick Stolee via GitGitGadget, Mar 23, 2021
  172. 14/20 sparse-index: check index conversion happensDerrick Stolee via GitGitGadget, Mar 23, 2021
  173. 17/20 sparse-checkout: disable sparse-indexDerrick Stolee via GitGitGadget, Mar 23, 2021
  174. 19/20 sparse-index: loose integration with cache_tree_verify()Derrick Stolee via GitGitGadget, Mar 23, 2021
  175. 20/20 p2000: add sparse-index reposDerrick Stolee via GitGitGadget, Mar 23, 2021
  176. Elijah NewrenMar 23, 2021
  177. 00/21 Sparse Index: Design, Format, TestsDerrick Stolee via GitGitGadget, Mar 30, 2021
  178. 09/21 unpack-trees: ensure full indexDerrick Stolee via GitGitGadget, Mar 30, 2021
  179. 01/21 sparse-index: design doc and format updateDerrick Stolee via GitGitGadget, Mar 30, 2021
  180. 05/21 sparse-index: implement ensure_full_index()Derrick Stolee via GitGitGadget, Mar 30, 2021
  181. 08/21 test-tool: don't force full indexDerrick Stolee via GitGitGadget, Mar 30, 2021
  182. 06/21 t1092: compare sparse-checkout to sparse-indexDerrick Stolee via GitGitGadget, Mar 30, 2021
  183. 04/21 sparse-index: add guard to ensure full indexDerrick Stolee via GitGitGadget, Mar 30, 2021
  184. 10/21 sparse-checkout: hold pattern list in indexDerrick Stolee via GitGitGadget, Mar 30, 2021
  185. 02/21 t/perf: add performance test for sparse operationsDerrick Stolee via GitGitGadget, Mar 30, 2021
  186. 13/21 submodule: sparse-index should not collapse linksDerrick Stolee via GitGitGadget, Mar 30, 2021
  187. 15/21 sparse-index: check index conversion happensDerrick Stolee via GitGitGadget, Mar 30, 2021
  188. 16/21 sparse-index: add index.sparse config optionDerrick Stolee via GitGitGadget, Mar 30, 2021
  189. 17/21 sparse-checkout: toggle sparse index from builtinDerrick Stolee via GitGitGadget, Mar 30, 2021
  190. 03/21 t1092: clean up script quotingDerrick Stolee via GitGitGadget, Mar 30, 2021
  191. 07/21 test-read-cache: print cache entries with --tableDerrick Stolee via GitGitGadget, Mar 30, 2021
  192. 11/21 sparse-index: add 'sdir' index extensionDerrick Stolee via GitGitGadget, Mar 30, 2021
  193. 20/21 sparse-index: loose integration with cache_tree_verify()Derrick Stolee via GitGitGadget, Mar 30, 2021
  194. 14/21 unpack-trees: allow sparse directoriesDerrick Stolee via GitGitGadget, Mar 30, 2021
  195. 12/21 sparse-index: convert from full to sparseDerrick Stolee via GitGitGadget, Mar 30, 2021
  196. 21/21 p2000: add sparse-index reposDerrick Stolee via GitGitGadget, Mar 30, 2021
  197. 18/21 sparse-checkout: disable sparse-indexDerrick Stolee via GitGitGadget, Mar 30, 2021
  198. 19/21 cache-tree: integrate with sparse directory entriesDerrick Stolee via GitGitGadget, Mar 30, 2021
  199. Junio C HamanoMar 30, 2021
  200. Derrick StoleeMar 30, 2021
  201. Junio C HamanoMar 30, 2021
  202. Elijah NewrenApr 1, 2021
  203. Elijah NewrenApr 1, 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.