diff options
| author | Junio C Hamano <gitster@pobox.com> | 2022-03-21 15:14:24 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2022-03-21 15:14:24 -0700 |
| commit | 7391ecd338edcd0317687399c915927c1b4e25dd (patch) | |
| tree | 69d298824738ca2289f96d134c9ea2c0ec3dbf95 /builtin/clone.c | |
| parent | b6763af74ba55570deae38ce118c1d803d7b825c (diff) | |
| parent | 86fdd94d723b7fa1870a64e8080d3540a434f29b (diff) | |
| download | git-7391ecd338edcd0317687399c915927c1b4e25dd.tar.xz | |
Merge branch 'ds/partial-bundles'
Bundle file format gets extended to allow a partial bundle,
filtered by similar criteria you would give when making a
partial/lazy clone.
* ds/partial-bundles:
clone: fail gracefully when cloning filtered bundle
bundle: unbundle promisor packs
bundle: create filtered bundles
rev-list: move --filter parsing into revision.c
bundle: parse filter capability
list-objects: handle NULL function pointers
MyFirstObjectWalk: update recommended usage
list-objects: consolidate traverse_commit_list[_filtered]
pack-bitmap: drop filter in prepare_bitmap_walk()
pack-objects: use rev.filter when possible
revision: put object filter into struct rev_info
list-objects-filter-options: create copy helper
index-pack: document and test the --promisor option
Diffstat (limited to 'builtin/clone.c')
| -rw-r--r-- | builtin/clone.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/builtin/clone.c b/builtin/clone.c index 0aea177660..5231656379 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -33,6 +33,7 @@ #include "packfile.h" #include "list-objects-filter-options.h" #include "hook.h" +#include "bundle.h" /* * Overall FIXMEs: @@ -1172,6 +1173,18 @@ int cmd_clone(int argc, const char **argv, const char *prefix) warning(_("--local is ignored")); transport->cloning = 1; + if (is_bundle) { + struct bundle_header header = BUNDLE_HEADER_INIT; + int fd = read_bundle_header(path, &header); + int has_filter = header.filter.choice != LOFC_DISABLED; + + if (fd > 0) + close(fd); + bundle_header_release(&header); + if (has_filter) + die(_("cannot clone from filtered bundle")); + } + transport_set_option(transport, TRANS_OPT_KEEP, "yes"); if (reject_shallow) |
