fetch-pack: support negotiation tip whitelist
During negotiation, fetch-pack eventually reports as "have" lines all commits reachable from all refs. Allow the user to restrict the commits sent in this way by providing a whitelist of tips; only the tips themselves and their ancestors will be sent. Both globs and single objects are supported. This feature is only supported for protocols that support connect or stateless-connect (such as HTTP with protocol v2). This will speed up negotiation when the repository has multiple relatively independent branches (for example, when a repository interacts with multiple repositories, such as with linux-next [1] and torvalds/linux [2]), and the user knows which local branch is likely to have commits in common with the upstream branch they are fetching. [1] https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next/ [2] https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux/ Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
ec06283844
commit
3390e42adb
@ -16,6 +16,13 @@ struct fetch_pack_args {
|
||||
const struct string_list *deepen_not;
|
||||
struct list_objects_filter_options filter_options;
|
||||
const struct string_list *server_options;
|
||||
|
||||
/*
|
||||
* If not NULL, during packfile negotiation, fetch-pack will send "have"
|
||||
* lines only with these tips and their ancestors.
|
||||
*/
|
||||
const struct oid_array *negotiation_tips;
|
||||
|
||||
unsigned deepen_relative:1;
|
||||
unsigned quiet:1;
|
||||
unsigned keep_pack:1;
|
||||
|
||||
Reference in New Issue
Block a user