From: Jeff Hostetler <[email protected]>
Signed-off-by: Jeff Hostetler <[email protected]>
---
builtin/fetch.c | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/builtin/fetch.c b/builtin/fetch.c
index 5f2c2ab..306c165 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -16,6 +16,7 @@
#include "connected.h"
#include "argv-array.h"
#include "utf8.h"
+#include "object-filter.h"
static const char * const builtin_fetch_usage[] = {
N_("git fetch [<options>] [<repository> [<refspec>...]]"),
@@ -52,6 +53,7 @@ static const char *recurse_submodules_default;
static int shown_url = 0;
static int refmap_alloc, refmap_nr;
static const char **refmap_array;
+static struct object_filter_options filter_options;
static int option_parse_recurse_submodules(const struct option *opt,
const char *arg, int unset)
@@ -141,6 +143,14 @@ static struct option builtin_fetch_options[] = {
TRANSPORT_FAMILY_IPV4),
OPT_SET_INT('6', "ipv6", &family, N_("use IPv6 addresses only"),
TRANSPORT_FAMILY_IPV6),
+
+ OPT_PARSE_FILTER_OMIT_ALL_BLOBS(&filter_options),
+ OPT_PARSE_FILTER_OMIT_LARGE_BLOBS(&filter_options),
+ OPT_PARSE_FILTER_USE_SPARSE(&filter_options),
+
+ /* OPT_PARSE_FILTER_PRINT_MANIFEST(&filter_options), */
+ /* OPT_PARSE_FILTER_RELAX(&filter_options), */
+
OPT_END()
};
@@ -733,6 +743,14 @@ static int store_updated_refs(const char *raw_url, const
char *remote_name,
const char *filename = dry_run ? "/dev/null" : git_path_fetch_head();
int want_status;
int summary_width = transport_summary_width(ref_map);
+ struct check_connected_options opt = CHECK_CONNECTED_INIT;
+
+ /*
+ * Relax consistency check to allow missing blobs (presumably
+ * because they are exactly the set that we requested be
+ * omitted.
+ */
+ opt.filter_relax = object_filter_enabled(&filter_options);
fp = fopen(filename, "a");
if (!fp)
@@ -744,7 +762,7 @@ static int store_updated_refs(const char *raw_url, const
char *remote_name,
url = xstrdup("foreign");
rm = ref_map;
- if (check_connected(iterate_ref_map, &rm, NULL)) {
+ if (check_connected(iterate_ref_map, &rm, &opt)) {
rc = error(_("%s did not send all necessary objects\n"), url);
goto abort;
}
@@ -885,6 +903,13 @@ static int quickfetch(struct ref *ref_map)
struct check_connected_options opt = CHECK_CONNECTED_INIT;
/*
+ * Relax consistency check to allow missing blobs (presumably
+ * because they are exactly the set that we requested be
+ * omitted.
+ */
+ opt.filter_relax = object_filter_enabled(&filter_options);
+
+ /*
* If we are deepening a shallow clone we already have these
* objects reachable. Running rev-list here will return with
* a good (0) exit status and we'll bypass the fetch that we
--
2.9.3