Message ID | 23f692b81be26072f44609df8c78d1b8d81f01d3.1643734828.git.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | repo-settings: fix checking for fetch.negotiationAlgorithm=default | expand |
"Elijah Newren via GitGitGadget" <gitgitgadget@gmail.com> writes: > From: Elijah Newren <newren@gmail.com> > > In commit af3a67de01 ("negotiator: unknown fetch.negotiationAlgorithm > should error out", 2018-08-01), error handling for an unknown > fetch.negotiationAlgorithm was added with the code die()ing. This was > also added to the documentation for the fetch.negotiationAlgorithm > option, to make it explicit that the code would die on unknown values. > > This behavior was lost with commit aaf633c2ad ("repo-settings: create > feature.experimental setting", 2019-08-13). Restore it so that the > behavior again matches the documentation. > > Signed-off-by: Elijah Newren <newren@gmail.com> > --- > repo-settings.c | 2 ++ > t/t5500-fetch-pack.sh | 7 +++++++ > 2 files changed, 9 insertions(+) > > diff --git a/repo-settings.c b/repo-settings.c > index 38c10f9977b..41e1c30845f 100644 > --- a/repo-settings.c > +++ b/repo-settings.c > @@ -87,6 +87,8 @@ void prepare_repo_settings(struct repository *r) > r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_NOOP; > else if (!strcasecmp(strval, "default")) > r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_DEFAULT; > + else > + die("unknown fetch negotiation algorithm '%s'", strval); > } Makes sense. > diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh > index 666502ed832..41ea9f25de6 100755 > --- a/t/t5500-fetch-pack.sh > +++ b/t/t5500-fetch-pack.sh > @@ -971,6 +971,13 @@ test_expect_success 'same as last but with config overrides' ' > -c fetch.negotiationAlgorithm=default > ' > > +test_expect_success 'ensure bogus fetch.negotiationAlgorithm yields error' ' > + test_when_finished rm -rf clientv0 && > + cp -r client clientv0 && > + test_must_fail git -C clientv0 --fetch.negotiationAlgorithm=bogus \ > + fetch origin server_has both_have_2 > +' > + > test_expect_success 'filtering by size' ' > rm -rf server client && > test_create_repo server &&
diff --git a/repo-settings.c b/repo-settings.c index 38c10f9977b..41e1c30845f 100644 --- a/repo-settings.c +++ b/repo-settings.c @@ -87,6 +87,8 @@ void prepare_repo_settings(struct repository *r) r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_NOOP; else if (!strcasecmp(strval, "default")) r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_DEFAULT; + else + die("unknown fetch negotiation algorithm '%s'", strval); } /* diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh index 666502ed832..41ea9f25de6 100755 --- a/t/t5500-fetch-pack.sh +++ b/t/t5500-fetch-pack.sh @@ -971,6 +971,13 @@ test_expect_success 'same as last but with config overrides' ' -c fetch.negotiationAlgorithm=default ' +test_expect_success 'ensure bogus fetch.negotiationAlgorithm yields error' ' + test_when_finished rm -rf clientv0 && + cp -r client clientv0 && + test_must_fail git -C clientv0 --fetch.negotiationAlgorithm=bogus \ + fetch origin server_has both_have_2 +' + test_expect_success 'filtering by size' ' rm -rf server client && test_create_repo server &&