From: Derrick Stolee <derrickstolee@xxxxxxxxxx> 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 <derrickstolee@xxxxxxxxxx> --- 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