From: "Anh Le via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Timothy Jones <timothy@canva.com>,
Jeff Hostetler <jeffhost@microsoft.com>,
Jeff Hostetler <git@jeffhostetler.com>,
Derrick Stolee <derrickstolee@github.com>,
Taylor Blau <me@ttaylorr.com>, Anh Le <anh@canva.com>
Subject: [PATCH v4 0/2] index: add trace2 region for clear skip worktree
Date: Thu, 03 Nov 2022 23:04:59 +0000 [thread overview]
Message-ID: <pull.1368.v4.git.git.1667516701.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1368.v3.git.git.1667177791591.gitgitgadget@gmail.com>
In large repository using sparse checkout, checking whether a file marked
with skip worktree is present on disk and its skip worktree bit should be
cleared can take a considerable amount of time. Add a trace2 region to
surface this information.
Anh Le (2):
index: add trace2 region for clear skip worktree
index: raise a bug if the index is materialised more than once
sparse-index.c | 30 ++++++++++++++++++++++++------
1 file changed, 24 insertions(+), 6 deletions(-)
base-commit: 1fc3c0ad407008c2f71dd9ae1241d8b75f8ef886
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1368%2FHaizzz%2Fmaster-v4
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1368/Haizzz/master-v4
Pull-Request: https://github.com/git/git/pull/1368
Range-diff vs v3:
1: d0d9f258b08 ! 1: 33e9b2afd91 index: add trace2 region for clear skip worktree
@@ Metadata
## Commit message ##
index: add trace2 region for clear skip worktree
- In a large repository using sparse checkout, checking whether a file marked
- with skip worktree is present on disk and its skip worktree bit should be
- cleared can take a considerable amount of time. Add a trace2 region to
- surface this information, keeping a count of how many paths have been
- checked and separately keep counts for after a full index is materialised.
+ When using sparse checkout, clear_skip_worktree_from_present_files() must
+ enumerate index entries to find ones with the SKIP_WORKTREE bit to
+ determine whether those index entries exist on disk (in which case their
+ SKIP_WORKTREE bit should be removed).
+
+ In a large repository, this may take considerable time depending on the
+ size of the index.
+
+ Add a trace2 region to surface this information, keeping a count of how
+ many paths have been checked. Separately, keep counts after a full index is
+ materialized.
Signed-off-by: Anh Le <anh@canva.com>
@@ sparse-index.c: void clear_skip_worktree_from_present_files(struct index_state *
return;
+ trace2_region_enter("index", "clear_skip_worktree_from_present_files",
-+ istate->repo);
++ istate->repo);
restart:
for (i = 0; i < istate->cache_nr; i++) {
struct cache_entry *ce = istate->cache[i];
@@ sparse-index.c: void clear_skip_worktree_from_present_files(struct index_state *
+ path_count[restarted]++;
+ if (path_found(ce->name, &last_dirname, &dir_len, &dir_found)) {
+ if (S_ISSPARSEDIR(ce->ce_mode)) {
-+ if (restarted)
-+ BUG("ensure-full-index did not fully flatten?");
+ ensure_full_index(istate);
+ restarted = 1;
+ goto restart;
@@ sparse-index.c: void clear_skip_worktree_from_present_files(struct index_state *
+
+ if (path_count[0])
+ trace2_data_intmax("index", istate->repo,
-+ "sparse_path_count", path_count[0]);
++ "sparse_path_count", path_count[0]);
+ if (restarted)
+ trace2_data_intmax("index", istate->repo,
-+ "sparse_path_count_full", path_count[1]);
++ "sparse_path_count_full", path_count[1]);
+ trace2_region_leave("index", "clear_skip_worktree_from_present_files",
-+ istate->repo);
++ istate->repo);
}
/*
-: ----------- > 2: 91ad7973307 index: raise a bug if the index is materialised more than once
--
gitgitgadget
next prev parent reply other threads:[~2022-11-03 23:05 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-26 0:05 [PATCH] index: add trace2 region for clear skip worktree Anh Le via GitGitGadget
2022-10-26 3:16 ` Junio C Hamano
2022-10-26 14:13 ` Jeff Hostetler
2022-10-26 16:01 ` Junio C Hamano
2022-10-26 18:29 ` Jeff Hostetler
2022-10-27 0:04 ` Anh Le
2022-10-28 0:46 ` [PATCH v2] " Anh Le via GitGitGadget
2022-10-28 15:49 ` Derrick Stolee
2022-10-28 17:17 ` Junio C Hamano
2022-10-30 23:28 ` Anh Le
2022-10-28 16:50 ` Jeff Hostetler
2022-10-31 0:56 ` [PATCH v3] " Anh Le via GitGitGadget
2022-10-31 22:34 ` Taylor Blau
2022-11-03 23:04 ` Anh Le via GitGitGadget [this message]
2022-11-03 23:05 ` [PATCH v4 1/2] " Anh Le via GitGitGadget
2022-11-03 23:05 ` [PATCH v4 2/2] index: raise a bug if the index is materialised more than once Anh Le via GitGitGadget
2022-11-05 0:29 ` [PATCH v4 0/2] index: add trace2 region for clear skip worktree Taylor Blau
2022-11-07 20:50 ` Derrick Stolee
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.1368.v4.git.git.1667516701.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=anh@canva.com \
--cc=derrickstolee@github.com \
--cc=git@jeffhostetler.com \
--cc=git@vger.kernel.org \
--cc=jeffhost@microsoft.com \
--cc=me@ttaylorr.com \
--cc=timothy@canva.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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.