Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

virtualization: add new builtin command to print hydration level #659

Merged
merged 3 commits into from
Jun 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/scalar-functional-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
fail-fast: false
matrix:
# Order by runtime (in descending order)
os: [windows-2019, macos-11, ubuntu-20.04, ubuntu-22.04]
os: [windows-2019, macos-13, ubuntu-20.04, ubuntu-22.04]
# Scalar.NET used to be tested using `features: [false, experimental]`
# But currently, Scalar/C ignores `feature.scalar` altogether, so let's
# save some electrons and run only one of them...
Expand Down
2 changes: 2 additions & 0 deletions t/t1093-virtualfilesystem.sh
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ test_expect_success 'verify status is clean' '
git status > actual &&
cat > expected <<-\EOF &&
On branch main
You are in a partially-hydrated checkout with 75% of tracked files present.

nothing to commit, working tree clean
EOF
test_cmp expected actual
Expand Down
43 changes: 39 additions & 4 deletions wt-status.c
Original file line number Diff line number Diff line change
Expand Up @@ -1604,10 +1604,15 @@ static void show_sparse_checkout_in_use(struct wt_status *s,
{
if (s->state.sparse_checkout_percentage == SPARSE_CHECKOUT_DISABLED)
return;
if (core_virtualfilesystem)
return;

if (s->state.sparse_checkout_percentage == SPARSE_CHECKOUT_SPARSE_INDEX)
if (core_virtualfilesystem) {
if (s->state.sparse_checkout_percentage == SPARSE_CHECKOUT_SPARSE_INDEX)
status_printf_ln(s, color,
_("You are in a partially-hydrated checkout with a sparse index."));
else
status_printf_ln(s, color,
_("You are in a partially-hydrated checkout with %d%% of tracked files present."),
s->state.sparse_checkout_percentage);
} else if (s->state.sparse_checkout_percentage == SPARSE_CHECKOUT_SPARSE_INDEX)
status_printf_ln(s, color, _("You are in a sparse checkout."));
else
status_printf_ln(s, color,
Expand Down Expand Up @@ -2560,6 +2565,36 @@ void wt_status_print(struct wt_status *s)
s->untracked.nr);
trace2_data_intmax("status", s->repo, "count/ignored", s->ignored.nr);

switch (s->state.sparse_checkout_percentage) {
case SPARSE_CHECKOUT_DISABLED:
break;
case SPARSE_CHECKOUT_SPARSE_INDEX:
/*
* Log just the observed size of the sparse-index.
*
* When sparse-index is enabled we can have
* sparse-directory entries in addition to individual
* sparse-file entries, so we don't know the complete
* size of the index. And we do not want to force
* expand it just to emit some telemetry data. So we
* cannot report a percentage for the space savings.
*
* It is possible that if the telemetry data is
* aggregated, someone will have a good estimate for
* the size of a fully populated index and can compute
* a percentage after the fact.
*/
trace2_data_intmax("status", s->repo,
"sparse-index/size",
s->repo->index->cache_nr);
break;
default:
trace2_data_intmax("status", s->repo,
"sparse-checkout/percentage",
s->state.sparse_checkout_percentage);
break;
}

trace2_region_enter("status", "print", s->repo);

switch (s->status_format) {
Expand Down
Loading