Merge branch 'ab/fetch-tags-noclobber'

Test and doc clean-ups.

* ab/fetch-tags-noclobber:
  pull doc: fix a long-standing grammar error
  fetch tests: correct a comment "remove it" -> "remove them"
  push tests: assert re-pushing annotated tags
  push tests: add more testing for forced tag pushing
  push tests: fix logic error in "push" test assertion
  push tests: remove redundant 'git push' invocation
  fetch tests: change "Tag" test tag to "testTag"
This commit is contained in:
Junio C Hamano 2018-08-20 11:33:52 -07:00
commit 42a6274b62
3 changed files with 47 additions and 22 deletions

View File

@ -33,7 +33,7 @@ name.
it requests fetching everything up to the given tag.
+
The remote ref that matches <src>
is fetched, and if <dst> is not empty string, the local
is fetched, and if <dst> is not an empty string, the local
ref that matches it is fast-forwarded using <src>.
If the optional plus `+` is used, the local ref
is updated even if it does not result in a fast-forward

View File

@ -648,7 +648,7 @@ test_configured_prune_type () {
git rev-parse --verify refs/tags/newtag
) &&
# now remove it
# now remove them
git branch -d newbranch &&
git tag -d newtag &&

View File

@ -965,26 +965,51 @@ test_expect_success 'push into aliased refs (inconsistent)' '
)
'
test_expect_success 'push requires --force to update lightweight tag' '
mk_test testrepo heads/master &&
mk_child testrepo child1 &&
mk_child testrepo 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_force_push_tag () {
tag_type_description=$1
tag_args=$2
test_expect_success 'force pushing required to update lightweight tag' "
mk_test testrepo heads/master &&
mk_child testrepo child1 &&
mk_child testrepo child2 &&
(
cd child1 &&
git tag testTag &&
git push ../child2 testTag &&
>file1 &&
git add file1 &&
git commit -m 'file1' &&
git tag $tag_args testTag &&
test_must_fail git push ../child2 testTag &&
git push --force ../child2 testTag &&
git tag $tag_args testTag HEAD~ &&
test_must_fail git push ../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
)
"
}
test_force_push_tag "lightweight tag" "-f"
test_force_push_tag "annotated tag" "-f -a -m'msg'"
test_expect_success 'push --porcelain' '
mk_empty testrepo &&