mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
Merge branch 'md/list-objects-filter-combo'
The list-objects-filter API (used to create a sparse/lazy clone) learned to take a combined filter specification. * md/list-objects-filter-combo: list-objects-filter-options: make parser void list-objects-filter-options: clean up use of ALLOC_GROW list-objects-filter-options: allow mult. --filter strbuf: give URL-encoding API a char predicate fn list-objects-filter-options: make filter_spec a string_list list-objects-filter-options: move error check up list-objects-filter: implement composite filters list-objects-filter-options: always supply *errbuf list-objects-filter: put omits set in filter struct list-objects-filter: encapsulate filter components
This commit is contained in:
@@ -140,18 +140,17 @@ static void create_pack_file(const struct object_array *have_obj,
|
||||
argv_array_push(&pack_objects.args, "--delta-base-offset");
|
||||
if (use_include_tag)
|
||||
argv_array_push(&pack_objects.args, "--include-tag");
|
||||
if (filter_options.filter_spec) {
|
||||
struct strbuf expanded_filter_spec = STRBUF_INIT;
|
||||
expand_list_objects_filter_spec(&filter_options,
|
||||
&expanded_filter_spec);
|
||||
if (filter_options.choice) {
|
||||
const char *spec =
|
||||
expand_list_objects_filter_spec(&filter_options);
|
||||
if (pack_objects.use_shell) {
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
sq_quote_buf(&buf, expanded_filter_spec.buf);
|
||||
sq_quote_buf(&buf, spec);
|
||||
argv_array_pushf(&pack_objects.args, "--filter=%s", buf.buf);
|
||||
strbuf_release(&buf);
|
||||
} else {
|
||||
argv_array_pushf(&pack_objects.args, "--filter=%s",
|
||||
expanded_filter_spec.buf);
|
||||
spec);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -884,6 +883,7 @@ static void receive_needs(struct packet_reader *reader, struct object_array *wan
|
||||
if (skip_prefix(reader->line, "filter ", &arg)) {
|
||||
if (!filter_capability_requested)
|
||||
die("git upload-pack: filtering capability not negotiated");
|
||||
list_objects_filter_die_if_populated(&filter_options);
|
||||
parse_list_objects_filter(&filter_options, arg);
|
||||
continue;
|
||||
}
|
||||
@@ -1305,6 +1305,7 @@ static void process_args(struct packet_reader *request,
|
||||
}
|
||||
|
||||
if (allow_filter && skip_prefix(arg, "filter ", &p)) {
|
||||
list_objects_filter_die_if_populated(&filter_options);
|
||||
parse_list_objects_filter(&filter_options, p);
|
||||
continue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user