Merge branch 'cr/push-force-tag-update'
Require "-f" for push to update a tag, even if it is a fast-forward. * cr/push-force-tag-update: push: allow already-exists advice to be disabled push: rename config variable for more general use push: cleanup push rules comment push: clarify rejection of update to non-commit-ish push: require force for annotated tags push: require force for refs under refs/tags/ push: flag updates that require force push: keep track of "update" state separately push: add advice for rejected tag reference push: return reject reasons as a bitset
This commit is contained in:
@ -368,7 +368,7 @@ test_expect_success 'push with colon-less refspec (2)' '
|
||||
git branch -D frotz
|
||||
fi &&
|
||||
git tag -f frotz &&
|
||||
git push testrepo frotz &&
|
||||
git push -f testrepo frotz &&
|
||||
check_push_result $the_commit tags/frotz &&
|
||||
check_push_result $the_first_commit heads/frotz
|
||||
|
||||
@ -929,6 +929,48 @@ test_expect_success 'push into aliased refs (inconsistent)' '
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'push requires --force to update lightweight tag' '
|
||||
mk_test heads/master &&
|
||||
mk_child child1 &&
|
||||
mk_child child2 &&
|
||||
(
|
||||
cd child1 &&
|
||||
git tag Tag &&
|
||||
git push ../child2 Tag &&
|
||||
git push ../child2 Tag &&
|
||||
>file1 &&
|
||||
git add file1 &&
|
||||
git commit -m "file1" &&
|
||||
git tag -f Tag &&
|
||||
test_must_fail git push ../child2 Tag &&
|
||||
git push --force ../child2 Tag &&
|
||||
git tag -f Tag &&
|
||||
test_must_fail git push ../child2 Tag HEAD~ &&
|
||||
git push --force ../child2 Tag
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'push requires --force to update annotated tag' '
|
||||
mk_test heads/master &&
|
||||
mk_child child1 &&
|
||||
mk_child child2 &&
|
||||
(
|
||||
cd child1 &&
|
||||
git tag -a -m "message 1" Tag &&
|
||||
git push ../child2 Tag:refs/tmp/Tag &&
|
||||
git push ../child2 Tag:refs/tmp/Tag &&
|
||||
>file1 &&
|
||||
git add file1 &&
|
||||
git commit -m "file1" &&
|
||||
git tag -f -a -m "message 2" Tag &&
|
||||
test_must_fail git push ../child2 Tag:refs/tmp/Tag &&
|
||||
git push --force ../child2 Tag:refs/tmp/Tag &&
|
||||
git tag -f -a -m "message 3" Tag HEAD~ &&
|
||||
test_must_fail git push ../child2 Tag:refs/tmp/Tag &&
|
||||
git push --force ../child2 Tag:refs/tmp/Tag
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'push --porcelain' '
|
||||
mk_empty &&
|
||||
echo >.git/foo "To testrepo" &&
|
||||
|
Reference in New Issue
Block a user