4 #include "string-list.h"
 
   5 #include "run-command.h"
 
   7 #include "list-objects-filter-options.h"
 
  11 struct fetch_pack_args {
 
  12         const char *uploadpack;
 
  15         const char *deepen_since;
 
  16         const struct string_list *deepen_not;
 
  17         struct list_objects_filter_options filter_options;
 
  18         const struct string_list *server_options;
 
  21          * If not NULL, during packfile negotiation, fetch-pack will send "have"
 
  22          * lines only with these tips and their ancestors.
 
  24         const struct oid_array *negotiation_tips;
 
  26         unsigned deepen_relative:1;
 
  30         unsigned use_thin_pack:1;
 
  32         unsigned stdin_refs:1;
 
  35         unsigned no_progress:1;
 
  36         unsigned include_tag:1;
 
  37         unsigned stateless_rpc:1;
 
  38         unsigned check_self_contained_and_connected:1;
 
  39         unsigned self_contained_and_connected:1;
 
  41         unsigned update_shallow:1;
 
  43         unsigned from_promisor:1;
 
  46          * Attempt to fetch only the wanted objects, and not any objects
 
  47          * referred to by them. Due to protocol limitations, extraneous
 
  48          * objects may still be included. (When fetching non-blob
 
  49          * objects, only blobs are excluded; when fetching a blob, the
 
  50          * blob itself will still be sent. The client does not need to
 
  51          * know whether a wanted object is a blob or not.)
 
  53          * If 1, fetch_pack() will also not modify any object flags.
 
  54          * This allows fetch_pack() to safely be called by any function,
 
  55          * regardless of which object flags it uses (if any).
 
  57         unsigned no_dependents:1;
 
  60          * Because fetch_pack() overwrites the shallow file upon a
 
  61          * successful deepening non-clone fetch, if this struct
 
  62          * specifies such a fetch, fetch_pack() needs to perform a
 
  63          * connectivity check before deciding if a fetch is successful
 
  64          * (and overwriting the shallow file). fetch_pack() sets this
 
  65          * field to 1 if such a connectivity check was performed.
 
  67          * This is different from check_self_contained_and_connected
 
  68          * in that the former allows existing objects in the
 
  69          * repository to satisfy connectivity needs, whereas the
 
  72         unsigned connectivity_checked:1;
 
  76  * sought represents remote references that should be updated from.
 
  77  * On return, the names that were found on the remote will have been
 
  80 struct ref *fetch_pack(struct fetch_pack_args *args,
 
  82                        const struct ref *ref,
 
  85                        struct oid_array *shallow,
 
  87                        enum protocol_version version);
 
  90  * Print an appropriate error message for each sought ref that wasn't
 
  91  * matched.  Return 0 if all sought refs were matched, otherwise 1.
 
  93 int report_unmatched_refs(struct ref **sought, int nr_sought);