diff options
author | Kevin Lyles <klyles+github@epic.com> | 2024-09-04 00:06:47 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2024-09-04 18:19:04 +0200 |
commit | e65b0c7c36683a8634b345af1cc3dc7676b3904a (patch) | |
tree | 5f215c26474055ee3a924f9f3e42e02ea31ba6a6 /builtin/cat-file.c | |
parent | t1092: allow run_on_* functions to use standard input (diff) | |
download | git-e65b0c7c36683a8634b345af1cc3dc7676b3904a.tar.xz git-e65b0c7c36683a8634b345af1cc3dc7676b3904a.zip |
builtin/cat-file: mark 'git cat-file' sparse-index compatible
This change affects how 'git cat-file' works with the index when
specifying an object with the ":<path>" syntax (which will give file
contents from the index).
'git cat-file' expands a sparse index to a full index any time contents
are requested from the index by specifying an object with the ":<path>"
syntax. This is true even when the requested file is part of the sparse
index, and results in much slower 'git cat-file' operations when working
within the sparse index.
Mark 'git cat-file' as not needing a full index, so that you only pay
the cost of expanding the sparse index to a full index when you request
a file outside of the sparse index.
Add tests to ensure both that:
- 'git cat-file' returns the correct file contents whether or not the
file is in the sparse index
- 'git cat-file' expands to the full index any time you request
something outside of the sparse index
Signed-off-by: Kevin Lyles <klyles+github@epic.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/cat-file.c')
-rw-r--r-- | builtin/cat-file.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/builtin/cat-file.c b/builtin/cat-file.c index 18fe58d6b8..1afdfb5cba 100644 --- a/builtin/cat-file.c +++ b/builtin/cat-file.c @@ -1047,6 +1047,9 @@ int cmd_cat_file(int argc, const char **argv, const char *prefix) if (batch.buffer_output < 0) batch.buffer_output = batch.all_objects; + prepare_repo_settings(the_repository); + the_repository->settings.command_requires_full_index = 0; + /* Return early if we're in batch mode? */ if (batch.enabled) { if (opt_cw) |