summaryrefslogtreecommitdiff
path: root/fetch-pack.h
diff options
context:
space:
mode:
Diffstat (limited to 'fetch-pack.h')
-rw-r--r--fetch-pack.h38
1 files changed, 23 insertions, 15 deletions
diff --git a/fetch-pack.h b/fetch-pack.h
index 43ec344d95..7f94a2a583 100644
--- a/fetch-pack.h
+++ b/fetch-pack.h
@@ -5,6 +5,7 @@
#include "run-command.h"
#include "protocol.h"
#include "list-objects-filter-options.h"
+#include "oidset.h"
struct oid_array;
@@ -39,22 +40,17 @@ struct fetch_pack_args {
unsigned self_contained_and_connected:1;
unsigned cloning:1;
unsigned update_shallow:1;
+ unsigned reject_shallow_remote:1;
unsigned deepen:1;
- unsigned from_promisor:1;
/*
- * Attempt to fetch only the wanted objects, and not any objects
- * referred to by them. Due to protocol limitations, extraneous
- * objects may still be included. (When fetching non-blob
- * objects, only blobs are excluded; when fetching a blob, the
- * blob itself will still be sent. The client does not need to
- * know whether a wanted object is a blob or not.)
- *
- * If 1, fetch_pack() will also not modify any object flags.
- * This allows fetch_pack() to safely be called by any function,
- * regardless of which object flags it uses (if any).
+ * Indicate that the remote of this request is a promisor remote. The
+ * pack received does not need all referred-to objects to be present in
+ * the local object store, and fetch-pack will store the pack received
+ * together with a ".promisor" file indicating that the aforementioned
+ * pack is a promisor pack.
*/
- unsigned no_dependents:1;
+ unsigned from_promisor:1;
/*
* Because fetch_pack() overwrites the shallow file upon a
@@ -78,16 +74,28 @@ struct fetch_pack_args {
* marked as such.
*/
struct ref *fetch_pack(struct fetch_pack_args *args,
- int fd[], struct child_process *conn,
+ int fd[],
const struct ref *ref,
- const char *dest,
struct ref **sought,
int nr_sought,
struct oid_array *shallow,
- char **pack_lockfile,
+ struct string_list *pack_lockfiles,
enum protocol_version version);
/*
+ * Execute the --negotiate-only mode of "git fetch", adding all known common
+ * commits to acked_commits.
+ *
+ * In the capability advertisement that has happened prior to invoking this
+ * function, the "wait-for-done" capability must be present.
+ */
+void negotiate_using_fetch(const struct oid_array *negotiation_tips,
+ const struct string_list *server_options,
+ int stateless_rpc,
+ int fd[],
+ struct oidset *acked_commits);
+
+/*
* Print an appropriate error message for each sought ref that wasn't
* matched. Return 0 if all sought refs were matched, otherwise 1.
*/