push tests: add more testing for forced tag pushing
Improve the tests added in dbfeddb12e
("push: require force for refs
under refs/tags/", 2012-11-29) to assert that the same behavior
applies various other combinations of command-line option and
refspecs.
Supplying either "+" in refspec or "--force" is sufficient to clobber
the reference. With --no-force we still pay attention to "+" in the
refspec, and vice-versa with clobbering kicking in if there's no "+"
in the refspec but "+" is given.
This is consistent with how refspecs work for branches, where either
"+" or "--force" will enable clobbering, with neither taking priority
over the other.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
25f74f5234
commit
941a7baa4d
@ -965,7 +965,7 @@ test_expect_success 'push into aliased refs (inconsistent)' '
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'push requires --force to update lightweight tag' '
|
||||
test_expect_success 'force pushing required to update lightweight tag' '
|
||||
mk_test testrepo heads/master &&
|
||||
mk_child testrepo child1 &&
|
||||
mk_child testrepo child2 &&
|
||||
@ -981,7 +981,25 @@ test_expect_success 'push requires --force to update lightweight tag' '
|
||||
git push --force ../child2 testTag &&
|
||||
git tag -f testTag HEAD~ &&
|
||||
test_must_fail git push ../child2 testTag &&
|
||||
git push --force ../child2 testTag
|
||||
git push --force ../child2 testTag &&
|
||||
|
||||
# Clobbering without + in refspec needs --force
|
||||
git tag -f testTag &&
|
||||
test_must_fail git push ../child2 "refs/tags/*:refs/tags/*" &&
|
||||
git push --force ../child2 "refs/tags/*:refs/tags/*" &&
|
||||
|
||||
# Clobbering with + in refspec does not need --force
|
||||
git tag -f testTag HEAD~ &&
|
||||
git push ../child2 "+refs/tags/*:refs/tags/*" &&
|
||||
|
||||
# Clobbering with --no-force still obeys + in refspec
|
||||
git tag -f testTag &&
|
||||
git push --no-force ../child2 "+refs/tags/*:refs/tags/*" &&
|
||||
|
||||
# Clobbering with/without --force and "tag <name>" format
|
||||
git tag -f testTag HEAD~ &&
|
||||
test_must_fail git push ../child2 tag testTag &&
|
||||
git push --force ../child2 tag testTag
|
||||
)
|
||||
'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user