]> git.ipfire.org Git - thirdparty/git.git/commit
write-tree: integrate with sparse index
authorShuqi Liang <cheskaqiqi@gmail.com>
Tue, 4 Apr 2023 00:35:39 +0000 (20:35 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 4 Apr 2023 19:50:54 +0000 (12:50 -0700)
commit1a65b41b38a669f3d6e54edec38e6b8506ef6ee1
treedb74d6f1021741ac4a2aab09f567843ec83c6a84
parent768bb238c4843bf52847773a621de4dffa6b9ab5
write-tree: integrate with sparse index

Update 'git write-tree' to allow using the sparse-index in memory
without expanding to a full one.

The recursive algorithm for update_one() was already updated in 2de37c5
(cache-tree: integrate with sparse directory entries, 2021-03-03) to
handle sparse directory entries in the index. Hence we can just set the
requires-full-index to false for "write-tree".

The `p2000` tests demonstrate a ~96% execution time reduction for 'git
write-tree' using a sparse index:

Test                                           before  after
-----------------------------------------------------------------
2000.78: git write-tree (full-v3)              0.34    0.33 -2.9%
2000.79: git write-tree (full-v4)              0.32    0.30 -6.3%
2000.80: git write-tree (sparse-v3)            0.47    0.02 -95.8%
2000.81: git write-tree (sparse-v4)            0.45    0.02 -95.6%

Signed-off-by: Shuqi Liang <cheskaqiqi@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/write-tree.c
t/perf/p2000-sparse-operations.sh
t/t1092-sparse-checkout-compatibility.sh