From: Elijah Newren <newren@gmail.com>
To: Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
Cc: Git Mailing List <git@vger.kernel.org>,
Junio C Hamano <gitster@pobox.com>,
Matheus Tavares Bernardino <matheus.bernardino@usp.br>,
Derrick Stolee <stolee@gmail.com>,
Derrick Stolee <derrickstolee@github.com>,
Derrick Stolee <dstolee@microsoft.com>
Subject: Re: [PATCH v5 10/14] diff-lib: handle index diffs with sparse dirs
Date: Tue, 8 Jun 2021 22:47:27 -0700 [thread overview]
Message-ID: <CABPp-BEp0NzUqW_pWpTGoUvrB1JMp9fVHr28Sp8RZqV6w0-hEw@mail.gmail.com> (raw)
In-Reply-To: <b9b97e0112939d1787ff1d2a13c48e5b406408db.1623069252.git.gitgitgadget@gmail.com>
On Mon, Jun 7, 2021 at 5:34 AM Derrick Stolee via GitGitGadget
<gitgitgadget@gmail.com> wrote:
>
> From: Derrick Stolee <dstolee@microsoft.com>
>
> While comparing an index to a tree, we may see a sparse directory entry.
> In this case, we should compare that portion of the tree to the tree
> represented by that entry. This could include a new tree which needs to
> be expanded to a full list of added files. It could also include an
> existing tree, in which case all of the changes inside are important to
> describe, including the modifications, additions, and deletions. Note
> that the case where the tree has a path and the index does not remains
> identical to before: the lack of a cache entry is the same with a sparse
> index.
>
> In the case where a tree is modified, we need to expand the tree
> recursively, and start comparing each contained entry as either an
> addition, deletion, or modification. This causes an interesting
> recursion that did not exist before.
So, I haven't read through this in detail yet...but there's a big
question I'm curious about:
Git already has code for comparing an index to a tree, a tree to a
tree, or a tree to the working directory, right? So, when comparing a
sparse-index to a tree...can't we re-use the compare a tree to a tree
code when we hit a sparse directory?
Maybe there's a really good reason to conceptually duplicate the
compare a tree to a tree code, but it seems the commit message should
at least address that reason and why we need to reimplement that
logic.
> Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
> ---
> diff-lib.c | 188 +++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 188 insertions(+)
>
> diff --git a/diff-lib.c b/diff-lib.c
> index b73cc1859a49..ba4c683d4bc4 100644
> --- a/diff-lib.c
> +++ b/diff-lib.c
> @@ -314,6 +314,48 @@ static int get_stat_data(const struct cache_entry *ce,
> return 0;
> }
>
> +struct show_new_tree_context {
> + struct rev_info *revs;
> + unsigned added:1;
> +};
> +
> +static int show_new_file_from_tree(const struct object_id *oid,
> + struct strbuf *base, const char *path,
> + unsigned int mode, void *context)
> +{
> + struct show_new_tree_context *ctx = context;
> + struct cache_entry *new_file = make_transient_cache_entry(mode, oid, path, /* stage */ 0);
> +
> + diff_index_show_file(ctx->revs, ctx->added ? "+" : "-", new_file, oid, !is_null_oid(oid), mode, 0);
> + discard_cache_entry(new_file);
> + return 0;
> +}
> +
> +static void show_directory(struct rev_info *revs,
> + const struct cache_entry *new_dir,
> + int added)
> +{
> + /*
> + * new_dir is a sparse directory entry, so we want to collect all
> + * of the new files within the tree. This requires recursively
> + * expanding the trees.
> + */
> + struct show_new_tree_context ctx = { revs, added };
> + struct repository *r = revs->repo;
> + struct strbuf base = STRBUF_INIT;
> + struct pathspec ps;
> + struct tree *tree = lookup_tree(r, &new_dir->oid);
> +
> + memset(&ps, 0, sizeof(ps));
> + ps.recursive = 1;
> + ps.has_wildcard = 1;
> + ps.max_depth = -1;
> +
> + strbuf_add(&base, new_dir->name, new_dir->ce_namelen);
> + read_tree_at(r, tree, &base, &ps,
> + show_new_file_from_tree, &ctx);
> +}
> +
> static void show_new_file(struct rev_info *revs,
> const struct cache_entry *new_file,
> int cached, int match_missing)
> @@ -322,6 +364,11 @@ static void show_new_file(struct rev_info *revs,
> unsigned int mode;
> unsigned dirty_submodule = 0;
>
> + if (new_file && S_ISSPARSEDIR(new_file->ce_mode)) {
> + show_directory(revs, new_file, /*added */ 1);
> + return;
> + }
> +
> /*
> * New file in the index: it might actually be different in
> * the working tree.
> @@ -333,6 +380,136 @@ static void show_new_file(struct rev_info *revs,
> diff_index_show_file(revs, "+", new_file, oid, !is_null_oid(oid), mode, dirty_submodule);
> }
>
> +static int show_modified(struct rev_info *revs,
> + const struct cache_entry *old_entry,
> + const struct cache_entry *new_entry,
> + int report_missing,
> + int cached, int match_missing);
> +
> +static int compare_within_sparse_dir(int n, unsigned long mask,
> + unsigned long dirmask, struct name_entry *entry,
> + struct traverse_info *info)
> +{
> + struct rev_info *revs = info->data;
> + struct object_id *oid0 = &entry[0].oid;
> + struct object_id *oid1 = &entry[1].oid;
> +
> + if (oideq(oid0, oid1))
> + return mask;
> +
> + /* Directory/file conflicts are handled earlier. */
> + if (S_ISDIR(entry[0].mode) && S_ISDIR(entry[1].mode)) {
> + struct tree_desc t[2];
> + void *buf[2];
> + struct traverse_info info_r = { NULL, };
> +
> + info_r.name = xstrfmt("%s%s", info->traverse_path, entry[0].path);
> + info_r.namelen = strlen(info_r.name);
> + info_r.traverse_path = xstrfmt("%s/", info_r.name);
> + info_r.fn = compare_within_sparse_dir;
> + info_r.prev = info;
> + info_r.mode = entry[0].mode;
> + info_r.pathlen = entry[0].pathlen;
> + info_r.df_conflicts = 0;
> + info_r.data = revs;
> +
> + buf[0] = fill_tree_descriptor(revs->repo, &t[0], oid0);
> + buf[1] = fill_tree_descriptor(revs->repo, &t[1], oid1);
> +
> + traverse_trees(NULL, 2, t, &info_r);
> +
> + free((char *)info_r.name);
> + free((char *)info_r.traverse_path);
> + free(buf[0]);
> + free(buf[1]);
> + } else {
> + char *old_path = NULL, *new_path = NULL;
> + struct cache_entry *old_entry = NULL, *new_entry = NULL;
> +
> + if (entry[0].path) {
> + old_path = xstrfmt("%s%s", info->traverse_path, entry[0].path);
> + old_entry = make_transient_cache_entry(
> + entry[0].mode, &entry[0].oid,
> + old_path, /* stage */ 0);
> + old_entry->ce_flags |= CE_SKIP_WORKTREE;
> + }
> + if (entry[1].path) {
> + new_path = xstrfmt("%s%s", info->traverse_path, entry[1].path);
> + new_entry = make_transient_cache_entry(
> + entry[1].mode, &entry[1].oid,
> + new_path, /* stage */ 0);
> + new_entry->ce_flags |= CE_SKIP_WORKTREE;
> + }
> +
> + if (entry[0].path && entry[1].path)
> + show_modified(revs, old_entry, new_entry, 0, 1, 0);
> + else if (entry[0].path)
> + diff_index_show_file(revs, revs->prefix,
> + old_entry, &entry[0].oid,
> + 0, entry[0].mode, 0);
> + else if (entry[1].path)
> + show_new_file(revs, new_entry, 1, 0);
> +
> + discard_cache_entry(old_entry);
> + discard_cache_entry(new_entry);
> + free(old_path);
> + free(new_path);
> + }
> +
> + return mask;
> +}
> +
> +static void show_modified_sparse_directory(struct rev_info *revs,
> + const struct cache_entry *old_entry,
> + const struct cache_entry *new_entry,
> + int report_missing,
> + int cached, int match_missing)
> +{
> + struct tree_desc t[2];
> + void *buf[2];
> + struct traverse_info info = { NULL };
> + struct strbuf name = STRBUF_INIT;
> + struct strbuf parent_path = STRBUF_INIT;
> + char *last_dir_sep;
> +
> + if (oideq(&old_entry->oid, &new_entry->oid))
> + return;
> +
> + info.fn = compare_within_sparse_dir;
> + info.prev = &info;
> +
> + strbuf_add(&name, new_entry->name, new_entry->ce_namelen - 1);
> + info.name = name.buf;
> + info.namelen = name.len;
> +
> + strbuf_add(&parent_path, new_entry->name, new_entry->ce_namelen - 1);
> + if ((last_dir_sep = find_last_dir_sep(parent_path.buf)) > parent_path.buf)
> + strbuf_setlen(&parent_path, (last_dir_sep - parent_path.buf) - 1);
> + else
> + strbuf_setlen(&parent_path, 0);
> +
> + info.pathlen = parent_path.len;
> +
> + if (parent_path.len)
> + info.traverse_path = parent_path.buf;
> + else
> + info.traverse_path = "";
> +
> + info.mode = new_entry->ce_mode;
> + info.df_conflicts = 0;
> + info.data = revs;
> +
> + buf[0] = fill_tree_descriptor(revs->repo, &t[0], &old_entry->oid);
> + buf[1] = fill_tree_descriptor(revs->repo, &t[1], &new_entry->oid);
> +
> + traverse_trees(NULL, 2, t, &info);
> +
> + free(buf[0]);
> + free(buf[1]);
> + strbuf_release(&name);
> + strbuf_release(&parent_path);
> +}
> +
> static int show_modified(struct rev_info *revs,
> const struct cache_entry *old_entry,
> const struct cache_entry *new_entry,
> @@ -343,6 +520,17 @@ static int show_modified(struct rev_info *revs,
> const struct object_id *oid;
> unsigned dirty_submodule = 0;
>
> + /*
> + * If both are sparse directory entries, then expand the
> + * modifications to the file level.
> + */
> + if (old_entry && new_entry &&
> + S_ISSPARSEDIR(old_entry->ce_mode) &&
> + S_ISSPARSEDIR(new_entry->ce_mode)) {
> + show_modified_sparse_directory(revs, old_entry, new_entry, report_missing, cached, match_missing);
> + return 0;
> + }
> +
> if (get_stat_data(new_entry, &oid, &mode, cached, match_missing,
> &dirty_submodule, &revs->diffopt) < 0) {
> if (report_missing)
> --
> gitgitgadget
>
next prev parent reply other threads:[~2021-06-09 5:48 UTC|newest]
Thread overview: 215+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-13 14:01 [PATCH 00/10] Sparse-index: integrate with status and add Derrick Stolee via GitGitGadget
2021-04-13 14:01 ` [PATCH 01/10] t1092: add tests for status/add and sparse files Derrick Stolee via GitGitGadget
2021-04-20 21:52 ` Elijah Newren
2021-04-21 13:21 ` Derrick Stolee
2021-04-21 15:14 ` Matheus Tavares Bernardino
2021-04-23 20:12 ` Derrick Stolee
2021-04-13 14:01 ` [PATCH 02/10] unpack-trees: make sparse aware Derrick Stolee via GitGitGadget
2021-04-20 23:00 ` Elijah Newren
2021-04-21 13:41 ` Derrick Stolee
2021-04-21 16:11 ` Elijah Newren
2021-04-22 2:24 ` Matheus Tavares Bernardino
2021-04-21 17:27 ` Derrick Stolee
2021-04-21 18:55 ` Matheus Tavares Bernardino
2021-04-21 19:10 ` Elijah Newren
2021-04-21 19:51 ` Matheus Tavares Bernardino
2021-04-21 18:56 ` Elijah Newren
2021-04-23 20:16 ` Derrick Stolee
2021-04-13 14:01 ` [PATCH 03/10] dir.c: accept a directory as part of cone-mode patterns Derrick Stolee via GitGitGadget
2021-04-20 23:21 ` Elijah Newren
2021-04-21 13:47 ` Derrick Stolee
2021-04-13 14:01 ` [PATCH 04/10] status: skip sparse-checkout percentage with sparse-index Derrick Stolee via GitGitGadget
2021-04-20 23:26 ` Elijah Newren
2021-04-21 13:51 ` Derrick Stolee
2021-04-13 14:01 ` [PATCH 05/10] status: use sparse-index throughout Derrick Stolee via GitGitGadget
2021-04-21 0:44 ` Elijah Newren
2021-04-21 13:55 ` Derrick Stolee
2021-04-13 14:01 ` [PATCH 06/10] dir: use expand_to_path() for sparse directories Derrick Stolee via GitGitGadget
2021-04-21 0:52 ` Elijah Newren
2021-04-21 0:53 ` Elijah Newren
2021-04-21 14:03 ` Derrick Stolee
2021-04-13 14:01 ` [PATCH 07/10] add: allow operating on a sparse-only index Derrick Stolee via GitGitGadget
2021-04-13 14:01 ` [PATCH 08/10] pathspec: stop calling ensure_full_index Derrick Stolee via GitGitGadget
2021-04-21 0:57 ` Elijah Newren
2021-04-13 14:01 ` [PATCH 09/10] t7519: add sparse directories to FS monitor tests Derrick Stolee via GitGitGadget
2021-04-13 14:01 ` [PATCH 10/10] fsmonitor: test with sparse index Derrick Stolee via GitGitGadget
2021-04-21 7:00 ` Elijah Newren
2021-04-13 20:45 ` [PATCH 00/10] Sparse-index: integrate with status and add Matheus Tavares Bernardino
2021-04-14 16:31 ` Derrick Stolee
2021-04-23 21:34 ` [PATCH v2 0/8] Sparse-index: integrate with status Derrick Stolee via GitGitGadget
2021-04-23 21:34 ` [PATCH v2 1/8] t1092: add tests for status/add and sparse files Derrick Stolee via GitGitGadget
2021-05-13 12:40 ` Matheus Tavares Bernardino
2021-05-14 12:27 ` Derrick Stolee
2021-04-23 21:34 ` [PATCH v2 2/8] unpack-trees: preserve cache_bottom Derrick Stolee via GitGitGadget
2021-04-23 21:34 ` [PATCH v2 3/8] unpack-trees: compare sparse directories correctly Derrick Stolee via GitGitGadget
2021-05-13 3:26 ` Elijah Newren
2021-04-23 21:34 ` [PATCH v2 4/8] unpack-trees: stop recursing into sparse directories Derrick Stolee via GitGitGadget
2021-05-13 3:31 ` Elijah Newren
2021-04-23 21:34 ` [PATCH v2 5/8] dir.c: accept a directory as part of cone-mode patterns Derrick Stolee via GitGitGadget
2021-04-23 21:34 ` [PATCH v2 6/8] status: skip sparse-checkout percentage with sparse-index Derrick Stolee via GitGitGadget
2021-04-23 21:34 ` [PATCH v2 7/8] status: use sparse-index throughout Derrick Stolee via GitGitGadget
2021-04-23 21:34 ` [PATCH v2 8/8] fsmonitor: test with sparse index Derrick Stolee via GitGitGadget
2021-05-13 4:12 ` [PATCH v2 0/8] Sparse-index: integrate with status Elijah Newren
2021-05-14 18:28 ` Derrick Stolee
2021-05-14 18:30 ` [PATCH v3 00/12] " Derrick Stolee via GitGitGadget
2021-05-14 18:31 ` [PATCH v3 01/12] sparse-index: skip indexes with unmerged entries Derrick Stolee via GitGitGadget
2021-05-14 18:31 ` [PATCH v3 02/12] sparse-index: include EXTENDED flag when expanding Derrick Stolee via GitGitGadget
2021-05-18 1:33 ` Elijah Newren
2021-05-18 14:57 ` Derrick Stolee
2021-05-18 17:48 ` Elijah Newren
2021-05-18 18:16 ` Derrick Stolee
2021-05-14 18:31 ` [PATCH v3 03/12] t1092: expand repository data shape Derrick Stolee via GitGitGadget
2021-05-18 1:49 ` Elijah Newren
2021-05-18 14:59 ` Derrick Stolee
2021-05-14 18:31 ` [PATCH v3 04/12] t1092: add tests for status/add and sparse files Derrick Stolee via GitGitGadget
2021-05-14 18:31 ` [PATCH v3 05/12] unpack-trees: preserve cache_bottom Derrick Stolee via GitGitGadget
2021-05-14 18:31 ` [PATCH v3 06/12] unpack-trees: compare sparse directories correctly Derrick Stolee via GitGitGadget
2021-05-14 18:31 ` [PATCH v3 07/12] unpack-trees: stop recursing into sparse directories Derrick Stolee via GitGitGadget
2021-05-18 2:03 ` Elijah Newren
2021-05-18 2:06 ` Elijah Newren
2021-05-18 19:20 ` Derrick Stolee
2021-05-14 18:31 ` [PATCH v3 08/12] dir.c: accept a directory as part of cone-mode patterns Derrick Stolee via GitGitGadget
2021-05-14 18:31 ` [PATCH v3 09/12] status: skip sparse-checkout percentage with sparse-index Derrick Stolee via GitGitGadget
2021-05-14 18:31 ` [PATCH v3 10/12] status: use sparse-index throughout Derrick Stolee via GitGitGadget
2021-05-14 18:31 ` [PATCH v3 11/12] wt-status: expand added sparse directory entries Derrick Stolee via GitGitGadget
2021-05-18 2:27 ` Elijah Newren
2021-05-18 18:26 ` Derrick Stolee
2021-05-18 19:04 ` Derrick Stolee
2021-05-19 8:38 ` Elijah Newren
2021-05-14 18:31 ` [PATCH v3 12/12] fsmonitor: integrate with sparse index Derrick Stolee via GitGitGadget
2021-05-21 11:59 ` [PATCH v4 00/12] Sparse-index: integrate with status Derrick Stolee via GitGitGadget
2021-05-21 11:59 ` [PATCH v4 01/12] sparse-index: skip indexes with unmerged entries Derrick Stolee via GitGitGadget
2021-05-21 11:59 ` [PATCH v4 02/12] sparse-index: include EXTENDED flag when expanding Derrick Stolee via GitGitGadget
2021-05-21 11:59 ` [PATCH v4 03/12] t1092: expand repository data shape Derrick Stolee via GitGitGadget
2021-05-21 11:59 ` [PATCH v4 04/12] t1092: add tests for status/add and sparse files Derrick Stolee via GitGitGadget
2021-05-21 11:59 ` [PATCH v4 05/12] unpack-trees: preserve cache_bottom Derrick Stolee via GitGitGadget
2021-05-21 11:59 ` [PATCH v4 06/12] unpack-trees: compare sparse directories correctly Derrick Stolee via GitGitGadget
2021-05-21 11:59 ` [PATCH v4 07/12] unpack-trees: be careful around sparse directory entries Derrick Stolee via GitGitGadget
2021-05-28 11:36 ` Derrick Stolee
2021-05-21 11:59 ` [PATCH v4 08/12] dir.c: accept a directory as part of cone-mode patterns Derrick Stolee via GitGitGadget
2021-05-21 11:59 ` [PATCH v4 09/12] status: skip sparse-checkout percentage with sparse-index Derrick Stolee via GitGitGadget
2021-05-21 11:59 ` [PATCH v4 10/12] status: use sparse-index throughout Derrick Stolee via GitGitGadget
2021-05-21 11:59 ` [PATCH v4 11/12] wt-status: expand added sparse directory entries Derrick Stolee via GitGitGadget
2021-05-21 11:59 ` [PATCH v4 12/12] fsmonitor: integrate with sparse index Derrick Stolee via GitGitGadget
2021-06-07 12:33 ` [PATCH v5 00/14] Sparse-index: integrate with status Derrick Stolee via GitGitGadget
2021-06-07 12:33 ` [PATCH v5 01/14] sparse-index: skip indexes with unmerged entries Derrick Stolee via GitGitGadget
2021-06-07 12:34 ` [PATCH v5 02/14] sparse-index: include EXTENDED flag when expanding Derrick Stolee via GitGitGadget
2021-06-08 18:56 ` Elijah Newren
2021-06-09 17:39 ` Derrick Stolee
2021-06-09 18:11 ` Elijah Newren
2021-06-07 12:34 ` [PATCH v5 03/14] t1092: replace incorrect 'echo' with 'cat' Derrick Stolee via GitGitGadget
2021-06-08 19:18 ` Elijah Newren
2021-06-07 12:34 ` [PATCH v5 04/14] t1092: expand repository data shape Derrick Stolee via GitGitGadget
2021-06-07 12:34 ` [PATCH v5 05/14] t1092: add tests for status/add and sparse files Derrick Stolee via GitGitGadget
2021-06-07 12:34 ` [PATCH v5 06/14] unpack-trees: preserve cache_bottom Derrick Stolee via GitGitGadget
2021-06-07 12:34 ` [PATCH v5 07/14] unpack-trees: compare sparse directories correctly Derrick Stolee via GitGitGadget
2021-06-07 12:34 ` [PATCH v5 08/14] unpack-trees: unpack sparse directory entries Derrick Stolee via GitGitGadget
2021-06-09 3:48 ` Elijah Newren
2021-06-09 20:21 ` Derrick Stolee
2021-06-07 12:34 ` [PATCH v5 09/14] dir.c: accept a directory as part of cone-mode patterns Derrick Stolee via GitGitGadget
2021-06-07 12:34 ` [PATCH v5 10/14] diff-lib: handle index diffs with sparse dirs Derrick Stolee via GitGitGadget
2021-06-07 15:26 ` Derrick Stolee
2021-06-08 1:05 ` Junio C Hamano
2021-06-08 13:00 ` Derrick Stolee
2021-06-09 5:47 ` Elijah Newren [this message]
2021-06-09 6:32 ` Junio C Hamano
2021-06-09 8:11 ` Elijah Newren
2021-06-09 20:33 ` Derrick Stolee
2021-06-10 17:45 ` Derrick Stolee
2021-06-10 21:31 ` Elijah Newren
2021-06-11 12:57 ` Derrick Stolee
2021-06-11 17:27 ` Derrick Stolee
2021-06-07 12:34 ` [PATCH v5 11/14] status: skip sparse-checkout percentage with sparse-index Derrick Stolee via GitGitGadget
2021-06-07 12:34 ` [PATCH v5 12/14] status: use sparse-index throughout Derrick Stolee via GitGitGadget
2021-06-07 12:34 ` [PATCH v5 13/14] wt-status: expand added sparse directory entries Derrick Stolee via GitGitGadget
2021-06-09 5:27 ` Elijah Newren
2021-06-09 20:49 ` Derrick Stolee
2021-06-07 12:34 ` [PATCH v5 14/14] fsmonitor: integrate with sparse index Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 00/14] Sparse-index: integrate with status Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 01/14] sparse-index: skip indexes with unmerged entries Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 02/14] sparse-index: include EXTENDED flag when expanding Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 03/14] t1092: replace incorrect 'echo' with 'cat' Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 04/14] t1092: expand repository data shape Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 05/14] t1092: add tests for status/add and sparse files Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 06/14] unpack-trees: preserve cache_bottom Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 07/14] unpack-trees: compare sparse directories correctly Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 08/14] unpack-trees: unpack sparse directory entries Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 09/14] dir.c: accept a directory as part of cone-mode patterns Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 10/14] diff-lib: handle index diffs with sparse dirs Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 11/14] status: skip sparse-checkout percentage with sparse-index Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 12/14] status: use sparse-index throughout Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 13/14] wt-status: expand added sparse directory entries Derrick Stolee via GitGitGadget
2021-06-29 1:51 ` [PATCH v6 14/14] fsmonitor: integrate with sparse index Derrick Stolee via GitGitGadget
2021-06-29 2:02 ` [PATCH v6 00/14] Sparse-index: integrate with status Derrick Stolee
2021-06-29 2:04 ` [PATCH v7 00/16] " Derrick Stolee via GitGitGadget
2021-06-29 2:04 ` [PATCH v7 01/16] sparse-index: skip indexes with unmerged entries Derrick Stolee via GitGitGadget
2021-06-29 2:04 ` [PATCH v7 02/16] sparse-index: include EXTENDED flag when expanding Derrick Stolee via GitGitGadget
2021-06-29 2:04 ` [PATCH v7 03/16] t1092: replace incorrect 'echo' with 'cat' Derrick Stolee via GitGitGadget
2021-06-29 2:04 ` [PATCH v7 04/16] t1092: expand repository data shape Derrick Stolee via GitGitGadget
2021-06-29 2:04 ` [PATCH v7 05/16] t1092: add tests for status/add and sparse files Derrick Stolee via GitGitGadget
2021-06-29 2:04 ` [PATCH v7 06/16] unpack-trees: preserve cache_bottom Derrick Stolee via GitGitGadget
2021-06-29 2:04 ` [PATCH v7 07/16] unpack-trees: compare sparse directories correctly Derrick Stolee via GitGitGadget
2021-06-29 2:04 ` [PATCH v7 08/16] unpack-trees: rename unpack_nondirectories() Derrick Stolee via GitGitGadget
2021-06-29 2:04 ` [PATCH v7 09/16] unpack-trees: unpack sparse directory entries Derrick Stolee via GitGitGadget
2021-07-07 22:25 ` Elijah Newren
2021-06-29 2:04 ` [PATCH v7 10/16] unpack-trees: handle dir/file conflict of sparse entries Derrick Stolee via GitGitGadget
2021-07-07 23:19 ` Elijah Newren
2021-07-09 0:58 ` Elijah Newren
2021-07-12 13:46 ` Derrick Stolee
2021-06-29 2:04 ` [PATCH v7 11/16] dir.c: accept a directory as part of cone-mode patterns Derrick Stolee via GitGitGadget
2021-06-29 2:04 ` [PATCH v7 12/16] diff-lib: handle index diffs with sparse dirs Derrick Stolee via GitGitGadget
2021-07-08 23:10 ` Elijah Newren
2021-07-08 23:51 ` Elijah Newren
2021-07-12 13:52 ` Derrick Stolee
2021-06-29 2:04 ` [PATCH v7 13/16] status: skip sparse-checkout percentage with sparse-index Derrick Stolee via GitGitGadget
2021-06-29 2:04 ` [PATCH v7 14/16] status: use sparse-index throughout Derrick Stolee via GitGitGadget
2021-06-29 2:04 ` [PATCH v7 15/16] wt-status: expand added sparse directory entries Derrick Stolee via GitGitGadget
2021-07-09 1:03 ` Elijah Newren
2021-07-12 13:56 ` Derrick Stolee
2021-07-12 19:32 ` Elijah Newren
2021-07-12 19:41 ` Derrick Stolee
2021-06-29 2:04 ` [PATCH v7 16/16] fsmonitor: integrate with sparse index Derrick Stolee via GitGitGadget
2021-06-29 2:16 ` [PATCH v7 00/16] Sparse-index: integrate with status Derrick Stolee
2021-06-30 14:32 ` Elijah Newren
2021-07-09 1:16 ` Elijah Newren
2021-07-12 14:46 ` Derrick Stolee
2021-07-12 17:55 ` [PATCH v8 00/15] " Derrick Stolee via GitGitGadget
2021-07-12 17:55 ` [PATCH v8 01/15] sparse-index: skip indexes with unmerged entries Derrick Stolee via GitGitGadget
2021-07-12 17:55 ` [PATCH v8 02/15] sparse-index: include EXTENDED flag when expanding Derrick Stolee via GitGitGadget
2021-07-12 17:55 ` [PATCH v8 03/15] t1092: replace incorrect 'echo' with 'cat' Derrick Stolee via GitGitGadget
2021-07-14 0:02 ` Bagas Sanjaya
2021-07-12 17:55 ` [PATCH v8 04/15] t1092: expand repository data shape Derrick Stolee via GitGitGadget
2021-07-12 17:55 ` [PATCH v8 05/15] t1092: add tests for status/add and sparse files Derrick Stolee via GitGitGadget
2021-07-12 17:55 ` [PATCH v8 06/15] unpack-trees: preserve cache_bottom Derrick Stolee via GitGitGadget
2021-07-12 17:55 ` [PATCH v8 07/15] unpack-trees: compare sparse directories correctly Derrick Stolee via GitGitGadget
2021-07-12 17:55 ` [PATCH v8 08/15] unpack-trees: rename unpack_nondirectories() Derrick Stolee via GitGitGadget
2021-07-12 17:55 ` [PATCH v8 09/15] unpack-trees: unpack sparse directory entries Derrick Stolee via GitGitGadget
2021-07-12 17:55 ` [PATCH v8 10/15] dir.c: accept a directory as part of cone-mode patterns Derrick Stolee via GitGitGadget
2021-07-12 17:55 ` [PATCH v8 11/15] diff-lib: handle index diffs with sparse dirs Derrick Stolee via GitGitGadget
2021-07-12 17:55 ` [PATCH v8 12/15] status: skip sparse-checkout percentage with sparse-index Derrick Stolee via GitGitGadget
2021-07-12 17:55 ` [PATCH v8 13/15] status: use sparse-index throughout Derrick Stolee via GitGitGadget
2021-07-12 17:55 ` [PATCH v8 14/15] wt-status: expand added sparse directory entries Derrick Stolee via GitGitGadget
2021-07-12 17:55 ` [PATCH v8 15/15] fsmonitor: integrate with sparse index Derrick Stolee via GitGitGadget
2021-07-12 19:38 ` [PATCH v8 00/15] Sparse-index: integrate with status Elijah Newren
2021-07-13 12:57 ` Derrick Stolee
2021-07-13 17:37 ` Elijah Newren
2021-07-14 13:12 ` [PATCH v9 00/16] " Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 01/16] sparse-index: skip indexes with unmerged entries Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 02/16] sparse-index: include EXTENDED flag when expanding Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 03/16] t1092: replace incorrect 'echo' with 'cat' Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 04/16] t1092: expand repository data shape Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 05/16] t1092: add tests for status/add and sparse files Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 06/16] unpack-trees: preserve cache_bottom Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 07/16] unpack-trees: compare sparse directories correctly Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 08/16] unpack-trees: rename unpack_nondirectories() Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 09/16] unpack-trees: unpack sparse directory entries Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 10/16] dir.c: accept a directory as part of cone-mode patterns Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 11/16] diff-lib: handle index diffs with sparse dirs Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 12/16] status: skip sparse-checkout percentage with sparse-index Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 13/16] status: use sparse-index throughout Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 14/16] wt-status: expand added sparse directory entries Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 15/16] fsmonitor: integrate with sparse index Derrick Stolee via GitGitGadget
2021-07-14 13:12 ` [PATCH v9 16/16] t1092: document bad sparse-checkout behavior Derrick Stolee via GitGitGadget
2021-07-14 15:08 ` [PATCH v9 00/16] Sparse-index: integrate with status Elijah Newren
2021-07-14 20:37 ` Junio C Hamano
2021-07-15 2:41 ` Elijah Newren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CABPp-BEp0NzUqW_pWpTGoUvrB1JMp9fVHr28Sp8RZqV6w0-hEw@mail.gmail.com \
--to=newren@gmail.com \
--cc=derrickstolee@github.com \
--cc=dstolee@microsoft.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=gitster@pobox.com \
--cc=matheus.bernardino@usp.br \
--cc=stolee@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).