fetch: fix segfault in --negotiate-only without --negotiation-tip=*
The recent --negotiate-only option would segfault in the call to
oid_array_for_each() in negotiate_using_fetch() unless one or more
--negotiation-tip=* options were provided.
All of the other tests for the feature combine both, but nothing was
checking this assumption, let's do that and add a test for it. Fixes a
bug in 9c1e657a8f
(fetch: teach independent negotiation (no
packfile), 2021-05-04).
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
60fadf8bd2
commit
eff40457a4
@ -1990,6 +1990,9 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
|
||||
fetch_config_from_gitmodules(sfjc, rs);
|
||||
}
|
||||
|
||||
if (negotiate_only && !negotiation_tip.nr)
|
||||
die(_("--negotiate-only needs one or more --negotiate-tip=*"));
|
||||
|
||||
if (deepen_relative) {
|
||||
if (deepen_relative < 0)
|
||||
die(_("Negative depth in --deepen is not supported"));
|
||||
|
@ -599,6 +599,22 @@ setup_negotiate_only () {
|
||||
test_commit -C client three
|
||||
}
|
||||
|
||||
test_expect_success 'usage: --negotiate-only without --negotiation-tip' '
|
||||
SERVER="server" &&
|
||||
URI="file://$(pwd)/server" &&
|
||||
|
||||
setup_negotiate_only "$SERVER" "$URI" &&
|
||||
|
||||
cat >err.expect <<-\EOF &&
|
||||
fatal: --negotiate-only needs one or more --negotiate-tip=*
|
||||
EOF
|
||||
|
||||
test_must_fail git -c protocol.version=2 -C client fetch \
|
||||
--negotiate-only \
|
||||
origin 2>err.actual &&
|
||||
test_cmp err.expect err.actual
|
||||
'
|
||||
|
||||
test_expect_success 'file:// --negotiate-only' '
|
||||
SERVER="server" &&
|
||||
URI="file://$(pwd)/server" &&
|
||||
|
Loading…
Reference in New Issue
Block a user