builtin-remote: prune remotes correctly that were added with --mirror
This adds special handling for mirror remotes. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
211c89682e
commit
4ebc914c88
|
@ -396,12 +396,22 @@ static int show_or_prune(int argc, const char **argv, int prune)
|
||||||
|
|
||||||
if (prune) {
|
if (prune) {
|
||||||
struct strbuf buf;
|
struct strbuf buf;
|
||||||
|
int prefix_len;
|
||||||
|
|
||||||
strbuf_init(&buf, 0);
|
strbuf_init(&buf, 0);
|
||||||
|
if (states.remote->fetch_refspec_nr == 1 &&
|
||||||
|
states.remote->fetch->pattern &&
|
||||||
|
!strcmp(states.remote->fetch->src,
|
||||||
|
states.remote->fetch->dst))
|
||||||
|
/* handle --mirror remote */
|
||||||
|
strbuf_addstr(&buf, "refs/heads/");
|
||||||
|
else
|
||||||
|
strbuf_addf(&buf, "refs/remotes/%s/", *argv);
|
||||||
|
prefix_len = buf.len;
|
||||||
|
|
||||||
for (i = 0; i < states.stale.nr; i++) {
|
for (i = 0; i < states.stale.nr; i++) {
|
||||||
strbuf_reset(&buf);
|
strbuf_setlen(&buf, prefix_len);
|
||||||
strbuf_addf(&buf, "refs/remotes/%s/%s", *argv,
|
strbuf_addstr(&buf, states.stale.items[i].path);
|
||||||
states.stale.items[i].path);
|
|
||||||
result |= delete_ref(buf.buf, NULL);
|
result |= delete_ref(buf.buf, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -128,4 +128,20 @@ test_expect_success 'prune' '
|
||||||
! git rev-parse refs/remotes/origin/side)
|
! git rev-parse refs/remotes/origin/side)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'add --mirror && prune' '
|
||||||
|
(mkdir mirror &&
|
||||||
|
cd mirror &&
|
||||||
|
git init &&
|
||||||
|
git remote add --mirror -f origin ../one) &&
|
||||||
|
(cd one &&
|
||||||
|
git branch -m side2 side) &&
|
||||||
|
(cd mirror &&
|
||||||
|
git rev-parse --verify refs/heads/side2 &&
|
||||||
|
! git rev-parse --verify refs/heads/side &&
|
||||||
|
git fetch origin &&
|
||||||
|
git remote prune origin &&
|
||||||
|
! git rev-parse --verify refs/heads/side2 &&
|
||||||
|
git rev-parse --verify refs/heads/side)
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in New Issue