diff options
author | Derrick Stolee <dstolee@microsoft.com> | 2019-11-21 23:04:43 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-11-22 08:11:44 +0100 |
commit | eb42feca974a333e58c2ca0f3cfa8bf0dd421402 (patch) | |
tree | 5e9e8425ec5a8f1b9cffd3fb9226d3457a31f927 /dir.c | |
parent | sparse-checkout: init and set in cone mode (diff) | |
download | git-eb42feca974a333e58c2ca0f3cfa8bf0dd421402.tar.xz git-eb42feca974a333e58c2ca0f3cfa8bf0dd421402.zip |
unpack-trees: hash less in cone mode
The sparse-checkout feature in "cone mode" can use the fact that
the recursive patterns are "connected" to the root via parent
patterns to decide if a directory is entirely contained in the
sparse-checkout or entirely removed.
In these cases, we can skip hashing the paths within those
directories and simply set the skipworktree bit to the correct
value.
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'dir.c')
-rw-r--r-- | dir.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -1270,7 +1270,7 @@ enum pattern_match_result path_matches_pattern_list( if (hashmap_contains_path(&pl->recursive_hashmap, &parent_pathname)) { - result = MATCHED; + result = MATCHED_RECURSIVE; goto done; } @@ -1292,7 +1292,7 @@ enum pattern_match_result path_matches_pattern_list( if (hashmap_contains_parent(&pl->recursive_hashmap, pathname, &parent_pathname)) - result = MATCHED; + result = MATCHED_RECURSIVE; done: strbuf_release(&parent_pathname); |