]> git.ipfire.org Git - thirdparty/git.git/commit
builtin/cat-file: mark 'git cat-file' sparse-index compatible
authorKevin Lyles <klyles+github@epic.com>
Tue, 3 Sep 2024 22:06:47 +0000 (22:06 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 4 Sep 2024 16:19:04 +0000 (09:19 -0700)
commite65b0c7c36683a8634b345af1cc3dc7676b3904a
tree5f215c26474055ee3a924f9f3e42e02ea31ba6a6
parent68c57590d36a47eee57d9d2e73de213f74c044c9
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>
builtin/cat-file.c
t/t1092-sparse-checkout-compatibility.sh