Skip to content

Commit

Permalink
send-pack: respect '+' on wildcard refspecs
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jeff King authored and Shawn O. Pearce committed Oct 20, 2007
1 parent e7187e4 commit 5eb7358
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
2 changes: 2 additions & 0 deletions remote.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
48 changes: 48 additions & 0 deletions t/t5400-send-pack.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 5eb7358

Please sign in to comment.