negotiator/skipping: skip commits during fetch
commit42cc7485a2ec49ecc440c921d2eb0cae4da80549
authorJonathan Tan <jonathantanmy@google.com>
Mon, 16 Jul 2018 18:44:01 +0000 (16 11:44 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 16 Jul 2018 21:51:12 +0000 (16 14:51 -0700)
tree576a4ddf4327faf750dd9017fb2cf70c21ae8bda
parentec06283844a90c3e9440286401e9ad7d86daa5ae
negotiator/skipping: skip commits during fetch

Introduce a new negotiation algorithm used during fetch that skips
commits in an effort to find common ancestors faster. The skips grow
similarly to the Fibonacci sequence as the commit walk proceeds further
away from the tips. The skips may cause unnecessary commits to be
included in the packfile, but the negotiation step typically ends more
quickly.

Usage of this algorithm is guarded behind the configuration flag
fetch.negotiationAlgorithm.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config.txt
Makefile
fetch-negotiator.c
fetch-negotiator.h
fetch-pack.c
negotiator/skipping.c [new file with mode: 0644]
negotiator/skipping.h [new file with mode: 0644]
t/t5552-skipping-fetch-negotiator.sh [new file with mode: 0755]