summaryrefslogtreecommitdiff
path: root/fetch-pack.h
diff options
context:
space:
mode:
Diffstat (limited to 'fetch-pack.h')
-rw-r--r--fetch-pack.h27
1 files changed, 26 insertions, 1 deletions
diff --git a/fetch-pack.h b/fetch-pack.h
index 3e224a1822..5b6e868802 100644
--- a/fetch-pack.h
+++ b/fetch-pack.h
@@ -3,6 +3,7 @@
#include "string-list.h"
#include "run-command.h"
+#include "protocol.h"
#include "list-objects-filter-options.h"
struct oid_array;
@@ -14,6 +15,14 @@ struct fetch_pack_args {
const char *deepen_since;
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;
@@ -39,6 +48,21 @@ struct fetch_pack_args {
* regardless of which object flags it uses (if any).
*/
unsigned no_dependents:1;
+
+ /*
+ * Because fetch_pack() overwrites the shallow file upon a
+ * successful deepening non-clone fetch, if this struct
+ * specifies such a fetch, fetch_pack() needs to perform a
+ * connectivity check before deciding if a fetch is successful
+ * (and overwriting the shallow file). fetch_pack() sets this
+ * field to 1 if such a connectivity check was performed.
+ *
+ * This is different from check_self_contained_and_connected
+ * in that the former allows existing objects in the
+ * repository to satisfy connectivity needs, whereas the
+ * latter doesn't.
+ */
+ unsigned connectivity_checked:1;
};
/*
@@ -53,7 +77,8 @@ struct ref *fetch_pack(struct fetch_pack_args *args,
struct ref **sought,
int nr_sought,
struct oid_array *shallow,
- char **pack_lockfile);
+ char **pack_lockfile,
+ enum protocol_version version);
/*
* Print an appropriate error message for each sought ref that wasn't