From: Raghul Nanth A <nanth.raghul@gmail.com>
To: git@vger.kernel.org
Cc: derrickstolee@github.com, vdye@github.com, nanth.raghul@gmail.com
Subject: [GSOC][PATCH v1] diff-index: enable diff-index
Date: Tue, 4 Apr 2023 00:35:38 +0530 [thread overview]
Message-ID: <20230403190538.361840-1-nanth.raghul@gmail.com> (raw)
Uses the run_diff_index() function to generate its diff. This function
has been made sparse-index aware in the series that led to 8d2c3732
(Merge branch 'ld/sparse-diff-blame', 2021-12-21). Hence we can just
set the requires-full-index to false for "diff-index".
Performance metrics
Test HEAD~1 HEAD
------------------------------------------------------------------------------------
2000.2: git diff-index HEAD (full-v3) 0.09(0.05+0.05) 0.09(0.06+0.04) +0.0%
2000.3: git diff-index HEAD (full-v4) 0.09(0.05+0.05) 0.09(0.06+0.03) +0.0%
2000.4: git diff-index HEAD (sparse-v3) 0.32(0.28+0.05) 0.01(0.01+0.04) -96.9%
2000.5: git diff-index HEAD (sparse-v4) 0.34(0.29+0.06) 0.01(0.02+0.03) -97.1%
2000.6: git diff-index HEAD~1 (full-v3) 3.77(3.62+0.14) 3.37(3.27+0.09) -10.6%
2000.7: git diff-index HEAD~1 (full-v4) 3.18(3.07+0.11) 3.20(3.10+0.09) +0.6%
2000.8: git diff-index HEAD~1 (sparse-v3) 3.78(3.65+0.12) 0.22(0.20+0.06) -94.2%
2000.9: git diff-index HEAD~1 (sparse-v4) 3.86(3.74+0.12) 0.28(0.28+0.04) -92.7%
Signed-off-by: Raghul Nanth A <nanth.raghul@gmail.com>
---
builtin/diff-index.c | 4 ++++
t/perf/p2000-sparse-operations.sh | 2 ++
t/t1092-sparse-checkout-compatibility.sh | 18 ++++++++++++++++++
3 files changed, 24 insertions(+)
diff --git a/builtin/diff-index.c b/builtin/diff-index.c
index 35dc9b23ee..8b9871d611 100644
--- a/builtin/diff-index.c
+++ b/builtin/diff-index.c
@@ -24,6 +24,10 @@ int cmd_diff_index(int argc, const char **argv, const char *prefix)
usage(diff_cache_usage);
git_config(git_diff_basic_config, NULL); /* no "diff" UI options */
+
+ prepare_repo_settings(the_repository);
+ the_repository->settings.command_requires_full_index = 0;
+
repo_init_revisions(the_repository, &rev, prefix);
rev.abbrev = 0;
prefix = precompose_argv_prefix(argc, argv, prefix);
diff --git a/t/perf/p2000-sparse-operations.sh b/t/perf/p2000-sparse-operations.sh
index 3242cfe91a..9e74cb22b9 100755
--- a/t/perf/p2000-sparse-operations.sh
+++ b/t/perf/p2000-sparse-operations.sh
@@ -125,5 +125,7 @@ test_perf_on_all git checkout-index -f --all
test_perf_on_all git update-index --add --remove $SPARSE_CONE/a
test_perf_on_all "git rm -f $SPARSE_CONE/a && git checkout HEAD -- $SPARSE_CONE/a"
test_perf_on_all git grep --cached --sparse bogus -- "f2/f1/f1/*"
+test_perf_on_all git diff-index HEAD
+test_perf_on_all git diff-index HEAD~1
test_done
diff --git a/t/t1092-sparse-checkout-compatibility.sh b/t/t1092-sparse-checkout-compatibility.sh
index 801919009e..13801f327d 100755
--- a/t/t1092-sparse-checkout-compatibility.sh
+++ b/t/t1092-sparse-checkout-compatibility.sh
@@ -1996,6 +1996,24 @@ test_expect_success 'sparse index is not expanded: rm' '
ensure_not_expanded rm -r deep
'
+test_expect_success 'sparse index is not expanded: diff-index' '
+ init_repos &&
+
+ echo "new" >>sparse-index/g &&
+ git -C sparse-index add g &&
+ git -C sparse-index commit -m "dummy" &&
+ ensure_not_expanded diff-index HEAD~1
+'
+
+test_expect_success 'match all: diff-index' '
+ init_repos &&
+
+ test_all_match git diff-index HEAD &&
+ run_on_all rm g &&
+ test_all_match git diff-index HEAD &&
+ test_all_match git diff-index HEAD --cached
+'
+
test_expect_success 'grep with and --cached' '
init_repos &&
--
2.40.0
next reply other threads:[~2023-04-03 19:06 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-03 19:05 Raghul Nanth A [this message]
2023-04-04 0:16 ` [GSOC][PATCH v1] diff-index: enable diff-index Junio C Hamano
2023-04-05 17:53 ` Victoria Dye
2023-04-05 19:28 ` Junio C Hamano
2023-04-08 11:23 ` [GSOC][PATCH v2] diff-index: enable sparse index Raghul Nanth A
2023-04-13 21:14 ` Victoria Dye
2023-04-19 15:15 ` RAGHUL NANTH
2023-04-22 21:25 ` Shuqi Liang
2023-05-02 9:46 ` [GSOC] " Raghul Nanth A
2023-05-02 17:35 ` Victoria Dye
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=20230403190538.361840-1-nanth.raghul@gmail.com \
--to=nanth.raghul@gmail.com \
--cc=derrickstolee@github.com \
--cc=git@vger.kernel.org \
--cc=vdye@github.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 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 NNTP newsgroup(s).