Message ID | 20181213155817.27666-8-avarab@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2,1/8] serve: pass "config context" through to individual commands | expand |
On Thu, Dec 13, 2018 at 04:58:16PM +0100, Ævar Arnfjörð Bjarmason wrote: > From: Jonathan Tan <jonathantanmy@google.com> > > Currently, if support for running Git's entire test suite with protocol > v2 were added, some tests would fail because the fetch-pack CLI command > dies if it encounters protocol v2. To avoid this, teach fetch-pack > support for protocol v2. I'm definitely on board with this goal. > @@ -219,9 +220,11 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix) > PACKET_READ_CHOMP_NEWLINE | > PACKET_READ_GENTLE_ON_EOF); > > - switch (discover_version(&reader)) { > + version = discover_version(&reader); > + switch (version) { > case protocol_v2: > - die("support for protocol v2 not implemented yet"); > + get_remote_refs(fd[1], &reader, &ref, 0, NULL, NULL); > + break; > case protocol_v1: > case protocol_v0: > get_remote_heads(&reader, &ref, 0, NULL, &shallow); > @@ -231,7 +234,7 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix) > } > > ref = fetch_pack(&args, fd, conn, ref, dest, sought, nr_sought, > - &shallow, pack_lockfile_ptr, protocol_v0); > + &shallow, pack_lockfile_ptr, version); This implementation looks absurdly simple. So simple that it makes me wonder why we did not just do this in the first place. I.e., is there some hidden gotcha blocking it, or was it simply that all of the necessary work happened in the meantime and nobody bothered to flip the switch? -Peff
diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c index 63e69a5801..f6a513495e 100644 --- a/builtin/fetch-pack.c +++ b/builtin/fetch-pack.c @@ -55,6 +55,7 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix) struct oid_array shallow = OID_ARRAY_INIT; struct string_list deepen_not = STRING_LIST_INIT_DUP; struct packet_reader reader; + enum protocol_version version; fetch_if_missing = 0; @@ -219,9 +220,11 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix) PACKET_READ_CHOMP_NEWLINE | PACKET_READ_GENTLE_ON_EOF); - switch (discover_version(&reader)) { + version = discover_version(&reader); + switch (version) { case protocol_v2: - die("support for protocol v2 not implemented yet"); + get_remote_refs(fd[1], &reader, &ref, 0, NULL, NULL); + break; case protocol_v1: case protocol_v0: get_remote_heads(&reader, &ref, 0, NULL, &shallow); @@ -231,7 +234,7 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix) } ref = fetch_pack(&args, fd, conn, ref, dest, sought, nr_sought, - &shallow, pack_lockfile_ptr, protocol_v0); + &shallow, pack_lockfile_ptr, version); if (pack_lockfile) { printf("lock %s\n", pack_lockfile); fflush(stdout);