sparse-index: add 'sdir' index extension
The index format does not currently allow for sparse directory entries. This violates some expectations that older versions of Git or third-party tools might not understand. We need an indicator inside the index file to warn these tools to not interact with a sparse index unless they are aware of sparse directory entries. Add a new _required_ index extension, 'sdir', that indicates that the index may contain sparse directory entries. This allows us to continue to use the differences in index formats 2, 3, and 4 before we create a new index version 5 in a later change. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
836e25c51b
commit
cd42415fb4
@ -392,3 +392,15 @@ The remaining data of each directory block is grouped by type:
|
||||
in this block of entries.
|
||||
|
||||
- 32-bit count of cache entries in this block
|
||||
|
||||
== Sparse Directory Entries
|
||||
|
||||
When using sparse-checkout in cone mode, some entire directories within
|
||||
the index can be summarized by pointing to a tree object instead of the
|
||||
entire expanded list of paths within that tree. An index containing such
|
||||
entries is a "sparse index". Index format versions 4 and less were not
|
||||
implemented with such entries in mind. Thus, for these versions, an
|
||||
index containing sparse directory entries will include this extension
|
||||
with signature { 's', 'd', 'i', 'r' }. Like the split-index extension,
|
||||
tools should avoid interacting with a sparse index unless they understand
|
||||
this extension.
|
||||
|
Reference in New Issue
Block a user