From cd42415fb4c9680f308ebf8f9f85ba90ae6014be Mon Sep 17 00:00:00 2001 From: Derrick Stolee Date: Tue, 30 Mar 2021 13:10:54 +0000 Subject: 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 Signed-off-by: Junio C Hamano --- Documentation/technical/index-format.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'Documentation/technical/index-format.txt') diff --git a/Documentation/technical/index-format.txt b/Documentation/technical/index-format.txt index 3b74c05647..65da0daaa5 100644 --- a/Documentation/technical/index-format.txt +++ b/Documentation/technical/index-format.txt @@ -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. -- cgit v1.2.3