From: Derrick Stolee <redacted>
Future changes will integrate 'git bundle fetch' into the 'git clone'
and 'git fetch' operations. Make it easy to fetch bundles via a helper
method.
Signed-off-by: Derrick Stolee <redacted>
---
bundle.c | 21 +++++++++++++++++++++
bundle.h | 9 +++++++++
2 files changed, 30 insertions(+)
diff --git a/bundle.c b/bundle.c
index 3d97de40ef0..9e1b5300366 100644
--- a/bundle.c
+++ b/bundle.c
@@ -649,3 +649,24 @@ int unbundle(struct repository *r, struct bundle_header *header,
return error(_("index-pack died"));
return 0;
}
+
+int fetch_bundle_uri(const char *bundle_uri,
+ const char *filter)
+{
+ int res = 0;
+ struct strvec args = STRVEC_INIT;
+
+ strvec_pushl(&args, "bundle", "fetch", NULL);
+
+ if (filter)
+ strvec_pushf(&args, "--filter=%s", filter);
+ strvec_push(&args, bundle_uri);
+
+ if (run_command_v_opt(args.v, RUN_GIT_CMD)) {
+ warning(_("failed to download bundle from uri '%s'"), bundle_uri);
+ res = 1;
+ }
+
+ strvec_clear(&args);
+ return res;
+}diff --git a/bundle.h b/bundle.h
index eb026153d56..bf865b19687 100644
--- a/bundle.h
+++ b/bundle.h
@@ -45,4 +45,13 @@ int unbundle(struct repository *r, struct bundle_header *header,
int list_bundle_refs(struct bundle_header *header,
int argc, const char **argv);
+struct list_objects_filter_options;
+/**
+ * Fetch bundles from the given URI with the given filter.
+ *
+ * Uses 'git bundle fetch' as a subprocess.
+ */
+int fetch_bundle_uri(const char *bundle_uri,
+ const char *filter);
+
#endif
--
gitgitgadget