path: root/fetch-pack.h
diff options
authorJonathan Tan <>2018-07-02 22:39:44 (GMT)
committerJunio C Hamano <>2018-07-03 22:00:41 (GMT)
commit3390e42adb3b84a9d61b3d46f4105f4cb6ba5edd (patch)
tree6d3b797117769e6c5a60d9fcd0b30bc7479d20f1 /fetch-pack.h
parentec06283844a90c3e9440286401e9ad7d86daa5ae (diff)
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] [2] Signed-off-by: Jonathan Tan <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'fetch-pack.h')
1 files changed, 7 insertions, 0 deletions
diff --git a/fetch-pack.h b/fetch-pack.h
index bb45a36..1859ee9 100644
--- a/fetch-pack.h
+++ b/fetch-pack.h
@@ -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;