On 3/19/2020 7:13 PM, Jonathan Nieder wrote: > Hi, > > Derrick Stolee wrote: > >> The pack.useSparse config option was introduced by 3d036eb0 >> (pack-objects: create pack.useSparse setting, 2019-01-19) and was >> first available in v2.21.0. When enabled, the pack-objects process >> during 'git push' will use a sparse tree walk when deciding which >> trees and blobs to send to the remote. The algorithm was introduced >> by d5d2e93 (revision: implement sparse algorithm, 2019-01-16) and >> has been in production use by VFS for Git since around that time. >> The features.experimental config option also enabled pack.useSparse, >> so hopefully that has also increased exposure. >> >> It is worth noting that pack.useSparse has a possibility of >> sending more objects across a push, but requires a special >> arrangement of exact _copies_ across directories. There is a test >> in t5322-pack-objects-sparse.sh that demonstrates this possibility. >> >> Since the downside is unlikely but the upside is significant, set >> the default value of pack.useSparse to true. Remove it from the >> set of options implied by features.experimental. >> >> Signed-off-by: Derrick Stolee <dstolee@xxxxxxxxxxxxx> >> --- >> Documentation/config/feature.txt | 3 --- >> Documentation/config/pack.txt | 4 ++-- >> repo-settings.c | 3 ++- >> 3 files changed, 4 insertions(+), 6 deletions(-) > > Makes sense. Thanks for writing it. > > Should this have a test? I suppose the test that demonstrates the difference in algorithm in t5322-pack-objects-sparse.sh could be adjusted to drop the explicit config setting, which would demonstrate that the config option is being set correctly. While looking at that test, I see that we use --[no-]sparse explicitly everywhere to avoid conflicts with the GIT_TEST_* variable that enables the algorithm. This leads to two things I will do in v2 that I did not do here: 1. Update the docs for "git pack-objects" because it doesn't reference that --no-sparse is an option. Point out that the new default is --sparse. 2. Remove GIT_TEST_PACK_SPARSE which was used to test this sparse algorithm throughout the test suite. Thanks, -Stolee