fetch: don't try to update unfetched tracking refs
Since commit f269048
(fetch: opportunistically update tracking refs,
2013-05-11) we update tracking refs opportunistically when fetching
remote branches. However, if there is a configured non-pattern refspec
that does not match any of the refspecs given on the command line then a
fatal error occurs.
Fix this by setting the "missing_ok" flag when calling get_fetch_map.
Test-added-by: Jeff King <peff@peff.net>
Signed-off-by: John Keeping <john@keeping.me.uk>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
f269048754
commit
823c6d56a8
@ -183,7 +183,7 @@ static struct ref *get_ref_map(struct transport *transport,
|
||||
old_tail = tail;
|
||||
for (i = 0; i < transport->remote->fetch_refspec_nr; i++)
|
||||
get_fetch_map(ref_map, &transport->remote->fetch[i],
|
||||
&tail, 0);
|
||||
&tail, 1);
|
||||
for (rm = *old_tail; rm; rm = rm->next)
|
||||
rm->fetch_head_status = FETCH_HEAD_IGNORE;
|
||||
} else {
|
||||
|
@ -422,6 +422,22 @@ test_expect_success 'configured fetch updates tracking' '
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'non-matching refspecs do not confuse tracking update' '
|
||||
cd "$D" &&
|
||||
git update-ref refs/odd/location HEAD &&
|
||||
(
|
||||
cd three &&
|
||||
git update-ref refs/remotes/origin/master base-origin-master &&
|
||||
git config --add remote.origin.fetch \
|
||||
refs/odd/location:refs/remotes/origin/odd &&
|
||||
o=$(git rev-parse --verify refs/remotes/origin/master) &&
|
||||
git fetch origin master &&
|
||||
n=$(git rev-parse --verify refs/remotes/origin/master) &&
|
||||
test "$o" != "$n" &&
|
||||
test_must_fail git rev-parse --verify refs/remotes/origin/odd
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'pushing nonexistent branch by mistake should not segv' '
|
||||
|
||||
cd "$D" &&
|
||||
|
Loading…
Reference in New Issue
Block a user