Merge branch 'ls/filter-process'
The smudge/clean filter API expect an external process is spawned to filter the contents for each path that has a filter defined. A new type of "process" filter API has been added to allow the first request to run the filter for a path to spawn a single process, and all filtering need is served by this single process for multiple paths, reducing the process creation overhead. * ls/filter-process: contrib/long-running-filter: add long running filter example convert: add filter.<driver>.process option convert: prepare filter.<driver>.process option convert: make apply_filter() adhere to standard Git error handling pkt-line: add functions to read/write flush terminated packet streams pkt-line: add packet_write_gently() pkt-line: add packet_flush_gently() pkt-line: add packet_write_fmt_gently() pkt-line: extract set_packet_header() pkt-line: rename packet_write() to packet_write_fmt() run-command: add clean_on_exit_handler run-command: move check_pipe() from write_or_die to run_command convert: modernize tests convert: quote filter names in error messages
This commit is contained in:
@ -398,13 +398,13 @@ static int get_common_commits(void)
|
||||
if (multi_ack == 2 && got_common
|
||||
&& !got_other && ok_to_give_up()) {
|
||||
sent_ready = 1;
|
||||
packet_write(1, "ACK %s ready\n", last_hex);
|
||||
packet_write_fmt(1, "ACK %s ready\n", last_hex);
|
||||
}
|
||||
if (have_obj.nr == 0 || multi_ack)
|
||||
packet_write(1, "NAK\n");
|
||||
packet_write_fmt(1, "NAK\n");
|
||||
|
||||
if (no_done && sent_ready) {
|
||||
packet_write(1, "ACK %s\n", last_hex);
|
||||
packet_write_fmt(1, "ACK %s\n", last_hex);
|
||||
return 0;
|
||||
}
|
||||
if (stateless_rpc)
|
||||
@ -421,20 +421,20 @@ static int get_common_commits(void)
|
||||
const char *hex = sha1_to_hex(sha1);
|
||||
if (multi_ack == 2) {
|
||||
sent_ready = 1;
|
||||
packet_write(1, "ACK %s ready\n", hex);
|
||||
packet_write_fmt(1, "ACK %s ready\n", hex);
|
||||
} else
|
||||
packet_write(1, "ACK %s continue\n", hex);
|
||||
packet_write_fmt(1, "ACK %s continue\n", hex);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
got_common = 1;
|
||||
memcpy(last_hex, sha1_to_hex(sha1), 41);
|
||||
if (multi_ack == 2)
|
||||
packet_write(1, "ACK %s common\n", last_hex);
|
||||
packet_write_fmt(1, "ACK %s common\n", last_hex);
|
||||
else if (multi_ack)
|
||||
packet_write(1, "ACK %s continue\n", last_hex);
|
||||
packet_write_fmt(1, "ACK %s continue\n", last_hex);
|
||||
else if (have_obj.nr == 1)
|
||||
packet_write(1, "ACK %s\n", last_hex);
|
||||
packet_write_fmt(1, "ACK %s\n", last_hex);
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
@ -442,10 +442,10 @@ static int get_common_commits(void)
|
||||
if (!strcmp(line, "done")) {
|
||||
if (have_obj.nr > 0) {
|
||||
if (multi_ack)
|
||||
packet_write(1, "ACK %s\n", last_hex);
|
||||
packet_write_fmt(1, "ACK %s\n", last_hex);
|
||||
return 0;
|
||||
}
|
||||
packet_write(1, "NAK\n");
|
||||
packet_write_fmt(1, "NAK\n");
|
||||
return -1;
|
||||
}
|
||||
die("git upload-pack: expected SHA1 list, got '%s'", line);
|
||||
@ -638,8 +638,8 @@ static void send_shallow(struct commit_list *result)
|
||||
while (result) {
|
||||
struct object *object = &result->item->object;
|
||||
if (!(object->flags & (CLIENT_SHALLOW|NOT_SHALLOW))) {
|
||||
packet_write(1, "shallow %s",
|
||||
oid_to_hex(&object->oid));
|
||||
packet_write_fmt(1, "shallow %s",
|
||||
oid_to_hex(&object->oid));
|
||||
register_shallow(object->oid.hash);
|
||||
shallow_nr++;
|
||||
}
|
||||
@ -655,8 +655,8 @@ static void send_unshallow(const struct object_array *shallows)
|
||||
struct object *object = shallows->objects[i].item;
|
||||
if (object->flags & NOT_SHALLOW) {
|
||||
struct commit_list *parents;
|
||||
packet_write(1, "unshallow %s",
|
||||
oid_to_hex(&object->oid));
|
||||
packet_write_fmt(1, "unshallow %s",
|
||||
oid_to_hex(&object->oid));
|
||||
object->flags &= ~CLIENT_SHALLOW;
|
||||
/*
|
||||
* We want to _register_ "object" as shallow, but we
|
||||
@ -932,7 +932,7 @@ static int send_ref(const char *refname, const struct object_id *oid,
|
||||
struct strbuf symref_info = STRBUF_INIT;
|
||||
|
||||
format_symref_info(&symref_info, cb_data);
|
||||
packet_write(1, "%s %s%c%s%s%s%s%s agent=%s\n",
|
||||
packet_write_fmt(1, "%s %s%c%s%s%s%s%s agent=%s\n",
|
||||
oid_to_hex(oid), refname_nons,
|
||||
0, capabilities,
|
||||
(allow_unadvertised_object_request & ALLOW_TIP_SHA1) ?
|
||||
@ -944,11 +944,11 @@ static int send_ref(const char *refname, const struct object_id *oid,
|
||||
git_user_agent_sanitized());
|
||||
strbuf_release(&symref_info);
|
||||
} else {
|
||||
packet_write(1, "%s %s\n", oid_to_hex(oid), refname_nons);
|
||||
packet_write_fmt(1, "%s %s\n", oid_to_hex(oid), refname_nons);
|
||||
}
|
||||
capabilities = NULL;
|
||||
if (!peel_ref(refname, peeled.hash))
|
||||
packet_write(1, "%s %s^{}\n", oid_to_hex(&peeled), refname_nons);
|
||||
packet_write_fmt(1, "%s %s^{}\n", oid_to_hex(&peeled), refname_nons);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user