From: "Kevin Lyles via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Derrick Stolee <stolee@gmail.com>, Kevin Lyles <klyles+github@epic.com>
Subject: [PATCH v3 0/2] Mark 'git cat-file' sparse-index compatible
Date: Tue, 03 Sep 2024 17:54:02 +0000 [thread overview]
Message-ID: <pull.1770.v3.git.git.1725386044.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1770.v2.git.git.1725052243.gitgitgadget@gmail.com>
Please note that this is my first contribution to git. I've tried to follow
the instructions about how to correctly submit a patch (I'm using
GitGitGadget as getting Outlook to do plain text e-mail correctly seems
impossible), but please let me know if I've missed something.
My motivation for making this change is purely performance. We have a large
repository that we enable the sparse index for, and I am developing a
pre-commit hook that (among other things) uses git cat-file to get the
staged contents of certain files. Without this change, getting the contents
of a single small file from the index can take upwards of 10 seconds due to
the index expansion. After this change, it only takes ~0.3 seconds unless
the file is outside of the sparse index.
Kevin Lyles (2):
Allow using stdin in run_on_* functions
Mark 'git cat-file' sparse-index compatible
builtin/cat-file.c | 3 ++
t/t1092-sparse-checkout-compatibility.sh | 50 +++++++++++++++++++++---
2 files changed, 48 insertions(+), 5 deletions(-)
base-commit: 4590f2e9412378c61eac95966709c78766d326ba
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1770%2Fklylesatepic%2Fkl%2Fmark-cat-file-sparse-index-compatible-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1770/klylesatepic/kl/mark-cat-file-sparse-index-compatible-v3
Pull-Request: https://github.com/git/git/pull/1770
Range-diff vs v2:
1: 7067a4c5da2 = 1: b310593aec2 Allow using stdin in run_on_* functions
2: a92825e502f ! 2: f4d1461b993 Mark 'git cat-file' sparse-index compatible
@@ t/t1092-sparse-checkout-compatibility.sh: test_expect_success 'advice.sparseInde
+ test_all_match git cat-file -p :deep/a &&
+ ensure_not_expanded cat-file -p :deep/a &&
+ test_all_match git cat-file -p :folder1/a &&
-+ ensure_expanded cat-file -p :folder1/a'
++ ensure_expanded cat-file -p :folder1/a
++'
+
+test_expect_success 'cat-file --batch' '
+ init_repos &&
@@ t/t1092-sparse-checkout-compatibility.sh: test_expect_success 'advice.sparseInde
+ echo "new content" >>sparse-index/deep/a &&
+ run_on_all git add deep/a &&
+
-+ echo ":deep/a">in &&
++ echo ":deep/a" >in &&
+ test_all_match git cat-file --batch <in &&
+ ensure_not_expanded cat-file --batch <in &&
+
-+ echo ":folder1/a">in &&
++ echo ":folder1/a" >in &&
+ test_all_match git cat-file --batch <in &&
+ ensure_expanded cat-file --batch <in &&
+
-+ cat <<-\EOF >in &&
++ cat >in <<-\EOF &&
+ :deep/a
+ :folder1/a
+ EOF
+ test_all_match git cat-file --batch <in &&
-+ ensure_expanded cat-file --batch <in'
++ ensure_expanded cat-file --batch <in
++'
+
test_done
--
gitgitgadget
next prev parent reply other threads:[~2024-09-03 17:54 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-26 18:08 [PATCH] Mark `cat-file` sparse-index compatible Kevin Lyles via GitGitGadget
2024-08-29 1:59 ` Derrick Stolee
2024-08-30 21:10 ` [PATCH v2 0/2] Mark cat-file " Kevin Lyles via GitGitGadget
2024-08-30 21:10 ` [PATCH v2 1/2] Allow using stdin in run_on_* functions Kevin Lyles via GitGitGadget
2024-08-30 21:10 ` [PATCH v2 2/2] Mark 'git cat-file' sparse-index compatible Kevin Lyles via GitGitGadget
2024-09-03 14:17 ` Derrick Stolee
2024-09-03 17:21 ` Junio C Hamano
2024-09-03 17:54 ` Kevin Lyles via GitGitGadget [this message]
2024-09-03 17:54 ` [PATCH v3 1/2] Allow using stdin in run_on_* functions Kevin Lyles via GitGitGadget
2024-09-03 19:11 ` Junio C Hamano
2024-09-03 17:54 ` [PATCH v3 2/2] Mark 'git cat-file' sparse-index compatible Kevin Lyles via GitGitGadget
2024-09-03 19:19 ` Junio C Hamano
2024-09-03 22:06 ` [PATCH v4 0/2] builtin/cat-file: mark " Kevin Lyles via GitGitGadget
2024-09-03 22:06 ` [PATCH v4 1/2] t1092: allow run_on_* functions to use standard input Kevin Lyles via GitGitGadget
2024-09-04 16:23 ` Junio C Hamano
2024-09-03 22:06 ` [PATCH v4 2/2] builtin/cat-file: mark 'git cat-file' sparse-index compatible Kevin Lyles via GitGitGadget
2024-09-04 16:35 ` Junio C Hamano
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.1770.v3.git.git.1725386044.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=git@vger.kernel.org \
--cc=klyles+github@epic.com \
--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.
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).