зеркало из https://github.com/microsoft/git.git
send-pack: respect '+' on wildcard refspecs
When matching source and destination refs, we were failing to pull the 'force' parameter from wildcard refspecs (but not explicit ones) and attach it to the ref struct. This adds a test for explicit and wildcard refspecs; the latter fails without this patch. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
Родитель
e7187e4e0f
Коммит
5eb7358167
2
remote.c
2
remote.c
|
@ -626,6 +626,8 @@ int match_refs(struct ref *src, struct ref *dst, struct ref ***dst_tail,
|
|||
hashcpy(dst_peer->new_sha1, src->new_sha1);
|
||||
}
|
||||
dst_peer->peer_ref = src;
|
||||
if (pat)
|
||||
dst_peer->force = pat->force;
|
||||
free_name:
|
||||
free(dst_name);
|
||||
}
|
||||
|
|
|
@ -123,4 +123,52 @@ test_expect_success \
|
|||
git-branch -a >branches && ! grep -q origin/master branches
|
||||
'
|
||||
|
||||
rewound_push_setup() {
|
||||
rm -rf parent child &&
|
||||
mkdir parent && cd parent &&
|
||||
git-init && echo one >file && git-add file && git-commit -m one &&
|
||||
echo two >file && git-commit -a -m two &&
|
||||
cd .. &&
|
||||
git-clone parent child && cd child && git-reset --hard HEAD^
|
||||
}
|
||||
|
||||
rewound_push_succeeded() {
|
||||
cmp ../parent/.git/refs/heads/master .git/refs/heads/master
|
||||
}
|
||||
|
||||
rewound_push_failed() {
|
||||
if rewound_push_succeeded
|
||||
then
|
||||
false
|
||||
else
|
||||
true
|
||||
fi
|
||||
}
|
||||
|
||||
test_expect_success \
|
||||
'pushing explicit refspecs respects forcing' '
|
||||
rewound_push_setup &&
|
||||
if git-send-pack ../parent/.git refs/heads/master:refs/heads/master
|
||||
then
|
||||
false
|
||||
else
|
||||
true
|
||||
fi && rewound_push_failed &&
|
||||
git-send-pack ../parent/.git +refs/heads/master:refs/heads/master &&
|
||||
rewound_push_succeeded
|
||||
'
|
||||
|
||||
test_expect_success \
|
||||
'pushing wildcard refspecs respects forcing' '
|
||||
rewound_push_setup &&
|
||||
if git-send-pack ../parent/.git refs/heads/*:refs/heads/*
|
||||
then
|
||||
false
|
||||
else
|
||||
true
|
||||
fi && rewound_push_failed &&
|
||||
git-send-pack ../parent/.git +refs/heads/*:refs/heads/* &&
|
||||
rewound_push_succeeded
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Загрузка…
Ссылка в новой задаче