Message ID | 20181217224054.4376-5-avarab@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | protocol v2 fixes | expand |
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes: > From: Jonathan Tan <jonathantanmy@google.com> I was looking at the topics in 'pu' and noticed that I had v2 of this series, wanted to update to v3, but major part of it was superseded by another topic (jk/proto-v2-hidden-refs-fix). That leaves only this patch in the v3 of this series. Is this one still relevant? > diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh > index 086f2c40f68..49c540b1e1d 100755 > --- a/t/t5500-fetch-pack.sh > +++ b/t/t5500-fetch-pack.sh > @@ -439,15 +439,23 @@ test_expect_success 'setup tests for the --stdin parameter' ' > ) >input.dup > ' > > -test_expect_success 'fetch refs from cmdline' ' > - ( > - cd client && > - git fetch-pack --no-progress .. $(cat ../input) > - ) >output && > - cut -d " " -f 2 <output | sort >actual && > - test_cmp expect actual > +test_expect_success 'setup fetch refs from cmdline v[12]' ' > + cp -r client client1 && > + cp -r client client2 > ' > > +for version in '' 1 2 > +do > + test_expect_success "protocol.version=$version fetch refs from cmdline" " > + ( > + cd client$version && > + GIT_TEST_PROTOCOL_VERSION=$version git fetch-pack --no-progress .. \$(cat ../input) > + ) >output && > + cut -d ' ' -f 2 <output | sort >actual && > + test_cmp expect actual > + " > +done > + > test_expect_success 'fetch refs from stdin' ' > ( > cd client &&
> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes: > > > From: Jonathan Tan <jonathantanmy@google.com> > > > I was looking at the topics in 'pu' and noticed that I had v2 of > this series, wanted to update to v3, but major part of it was > superseded by another topic (jk/proto-v2-hidden-refs-fix). That > leaves only this patch in the v3 of this series. > > Is this one still relevant? This patch is more relevant to the GIT_TEST_PROTOCOL_VERSION patches, since it means that several tests work even if GIT_TEST_PROTOCOL_VERSION=2 is set. I think it can be dropped until someone restarts the GIT_TEST_PROTOCOL_VERSION effort, but I'm not sure if Ævar has another opinion.
On Tue, Jan 08, 2019 at 12:38:26PM -0800, Jonathan Tan wrote: > > Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes: > > > > > From: Jonathan Tan <jonathantanmy@google.com> > > > > > > I was looking at the topics in 'pu' and noticed that I had v2 of > > this series, wanted to update to v3, but major part of it was > > superseded by another topic (jk/proto-v2-hidden-refs-fix). That > > leaves only this patch in the v3 of this series. > > > > Is this one still relevant? > > This patch is more relevant to the GIT_TEST_PROTOCOL_VERSION patches, > since it means that several tests work even if > GIT_TEST_PROTOCOL_VERSION=2 is set. I think it can be dropped until > someone restarts the GIT_TEST_PROTOCOL_VERSION effort, but I'm not sure > if Ævar has another opinion. I think it's independently useful. If you set protocol.version=2 in your config, then you can no longer run fetch-pack directly. Most people don't, but it's possible their scripts might (we also use fetch-pack under the hood for smart-http, but I wasn't able to get it to complain, though). -Peff
diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c index 63e69a58011..f6a513495ea 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); diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh index 086f2c40f68..49c540b1e1d 100755 --- a/t/t5500-fetch-pack.sh +++ b/t/t5500-fetch-pack.sh @@ -439,15 +439,23 @@ test_expect_success 'setup tests for the --stdin parameter' ' ) >input.dup ' -test_expect_success 'fetch refs from cmdline' ' - ( - cd client && - git fetch-pack --no-progress .. $(cat ../input) - ) >output && - cut -d " " -f 2 <output | sort >actual && - test_cmp expect actual +test_expect_success 'setup fetch refs from cmdline v[12]' ' + cp -r client client1 && + cp -r client client2 ' +for version in '' 1 2 +do + test_expect_success "protocol.version=$version fetch refs from cmdline" " + ( + cd client$version && + GIT_TEST_PROTOCOL_VERSION=$version git fetch-pack --no-progress .. \$(cat ../input) + ) >output && + cut -d ' ' -f 2 <output | sort >actual && + test_cmp expect actual + " +done + test_expect_success 'fetch refs from stdin' ' ( cd client &&