On 10/19/07, Jeff King <peff@xxxxxxxx> wrote: > When matching source and destination refs, we were failing > to pull the 'force' parameter from wildcard respects (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@xxxxxxxx> > --- > remote.c | 2 ++ > t/t5400-send-pack.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 50 insertions(+), 0 deletions(-) > > diff --git a/remote.c b/remote.c > index b20e2be..170015a 100644 > --- a/remote.c > +++ b/remote.c > @@ -762,6 +762,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); > } > diff --git a/t/t5400-send-pack.sh b/t/t5400-send-pack.sh > index 57c6397..2d0c07f 100755 > --- a/t/t5400-send-pack.sh > +++ b/t/t5400-send-pack.sh > @@ -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 > -- > 1.5.3.4.1254.gc1ca9-dirty > Hmm. For some reason this passes with your test case, but not with my original bash test script[1]. Did you try it with this? -Dan [1] http://www.toofishes.net/uploads/ - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html