Merge branch 'fc/atmark-in-refspec'
"@" sometimes worked (e.g. "git push origin @:there") as a part of a refspec element, but "git push origin @" did not work, which has been corrected. * fc/atmark-in-refspec: refspec: make @ a synonym of HEAD tests: push: trivial cleanup tests: push: improve cleanup of HEAD testsmaint
commit
c59b73bef3
|
@ -71,7 +71,10 @@ static int parse_refspec(struct refspec_item *item, const char *refspec, int fet
|
||||||
}
|
}
|
||||||
|
|
||||||
item->pattern = is_glob;
|
item->pattern = is_glob;
|
||||||
item->src = xstrndup(lhs, llen);
|
if (llen == 1 && *lhs == '@')
|
||||||
|
item->src = xstrdup("HEAD");
|
||||||
|
else
|
||||||
|
item->src = xstrndup(lhs, llen);
|
||||||
flags = REFNAME_ALLOW_ONELEVEL | (is_glob ? REFNAME_REFSPEC_PATTERN : 0);
|
flags = REFNAME_ALLOW_ONELEVEL | (is_glob ? REFNAME_REFSPEC_PATTERN : 0);
|
||||||
|
|
||||||
if (item->negative) {
|
if (item->negative) {
|
||||||
|
|
|
@ -58,6 +58,8 @@ test_refspec fetch 'HEAD~4:refs/remotes/frotz/new' invalid
|
||||||
|
|
||||||
test_refspec push 'HEAD'
|
test_refspec push 'HEAD'
|
||||||
test_refspec fetch 'HEAD'
|
test_refspec fetch 'HEAD'
|
||||||
|
test_refspec push '@'
|
||||||
|
test_refspec fetch '@'
|
||||||
test_refspec push 'refs/heads/ nitfol' invalid
|
test_refspec push 'refs/heads/ nitfol' invalid
|
||||||
test_refspec fetch 'refs/heads/ nitfol' invalid
|
test_refspec fetch 'refs/heads/ nitfol' invalid
|
||||||
|
|
||||||
|
|
|
@ -436,70 +436,76 @@ test_expect_success 'push ref expression with non-existent, incomplete dest' '
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'push with HEAD' '
|
for head in HEAD @
|
||||||
|
do
|
||||||
|
|
||||||
mk_test testrepo heads/master &&
|
test_expect_success "push with $head" '
|
||||||
git checkout master &&
|
|
||||||
git push testrepo HEAD &&
|
|
||||||
check_push_result testrepo $the_commit heads/master
|
|
||||||
|
|
||||||
'
|
mk_test testrepo heads/master &&
|
||||||
|
git checkout master &&
|
||||||
|
git push testrepo $head &&
|
||||||
|
check_push_result testrepo $the_commit heads/master
|
||||||
|
|
||||||
test_expect_success 'push with HEAD nonexisting at remote' '
|
'
|
||||||
|
|
||||||
mk_test testrepo heads/master &&
|
test_expect_success "push with $head nonexisting at remote" '
|
||||||
git checkout -b local master &&
|
|
||||||
git push testrepo HEAD &&
|
|
||||||
check_push_result testrepo $the_commit heads/local
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'push with +HEAD' '
|
mk_test testrepo heads/master &&
|
||||||
|
git checkout -b local master &&
|
||||||
|
test_when_finished "git checkout master; git branch -D local" &&
|
||||||
|
git push testrepo $head &&
|
||||||
|
check_push_result testrepo $the_commit heads/local
|
||||||
|
'
|
||||||
|
|
||||||
mk_test testrepo heads/master &&
|
test_expect_success "push with +$head" '
|
||||||
git checkout master &&
|
|
||||||
git branch -D local &&
|
|
||||||
git checkout -b local &&
|
|
||||||
git push testrepo master local &&
|
|
||||||
check_push_result testrepo $the_commit heads/master &&
|
|
||||||
check_push_result testrepo $the_commit heads/local &&
|
|
||||||
|
|
||||||
# Without force rewinding should fail
|
mk_test testrepo heads/master &&
|
||||||
git reset --hard HEAD^ &&
|
git checkout -b local master &&
|
||||||
test_must_fail git push testrepo HEAD &&
|
test_when_finished "git checkout master; git branch -D local" &&
|
||||||
check_push_result testrepo $the_commit heads/local &&
|
git push testrepo master local &&
|
||||||
|
check_push_result testrepo $the_commit heads/master &&
|
||||||
|
check_push_result testrepo $the_commit heads/local &&
|
||||||
|
|
||||||
# With force rewinding should succeed
|
# Without force rewinding should fail
|
||||||
git push testrepo +HEAD &&
|
git reset --hard $head^ &&
|
||||||
check_push_result testrepo $the_first_commit heads/local
|
test_must_fail git push testrepo $head &&
|
||||||
|
check_push_result testrepo $the_commit heads/local &&
|
||||||
|
|
||||||
'
|
# With force rewinding should succeed
|
||||||
|
git push testrepo +$head &&
|
||||||
|
check_push_result testrepo $the_first_commit heads/local
|
||||||
|
|
||||||
test_expect_success 'push HEAD with non-existent, incomplete dest' '
|
'
|
||||||
|
|
||||||
mk_test testrepo &&
|
test_expect_success "push $head with non-existent, incomplete dest" '
|
||||||
git checkout master &&
|
|
||||||
git push testrepo HEAD:branch &&
|
|
||||||
check_push_result testrepo $the_commit heads/branch
|
|
||||||
|
|
||||||
'
|
mk_test testrepo &&
|
||||||
|
git checkout master &&
|
||||||
|
git push testrepo $head:branch &&
|
||||||
|
check_push_result testrepo $the_commit heads/branch
|
||||||
|
|
||||||
test_expect_success 'push with config remote.*.push = HEAD' '
|
'
|
||||||
|
|
||||||
mk_test testrepo heads/local &&
|
test_expect_success "push with config remote.*.push = $head" '
|
||||||
git checkout master &&
|
|
||||||
git branch -f local $the_commit &&
|
mk_test testrepo heads/local &&
|
||||||
(
|
git checkout master &&
|
||||||
cd testrepo &&
|
git branch -f local $the_commit &&
|
||||||
git checkout local &&
|
test_when_finished "git branch -D local" &&
|
||||||
git reset --hard $the_first_commit
|
(
|
||||||
) &&
|
cd testrepo &&
|
||||||
test_config remote.there.url testrepo &&
|
git checkout local &&
|
||||||
test_config remote.there.push HEAD &&
|
git reset --hard $the_first_commit
|
||||||
test_config branch.master.remote there &&
|
) &&
|
||||||
git push &&
|
test_config remote.there.url testrepo &&
|
||||||
check_push_result testrepo $the_commit heads/master &&
|
test_config remote.there.push $head &&
|
||||||
check_push_result testrepo $the_first_commit heads/local
|
test_config branch.master.remote there &&
|
||||||
'
|
git push &&
|
||||||
|
check_push_result testrepo $the_commit heads/master &&
|
||||||
|
check_push_result testrepo $the_first_commit heads/local
|
||||||
|
'
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
test_expect_success 'push with remote.pushdefault' '
|
test_expect_success 'push with remote.pushdefault' '
|
||||||
mk_test up_repo heads/master &&
|
mk_test up_repo heads/master &&
|
||||||
|
|
Loading…
Reference in New Issue