push: require force for refs under refs/tags/

References are allowed to update from one commit-ish to another if the
former is an ancestor of the latter.  This behavior is oriented to
branches which are expected to move with commits.  Tag references are
expected to be static in a repository, though, thus an update to
something under refs/tags/ should be rejected unless the update is
forced.

Signed-off-by: Chris Rorvick <chris@rorvick.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Chris Rorvick
2012-11-29 19:41:37 -06:00
committed by Junio C Hamano
parent 8c5f6f717d
commit dbfeddb12e
9 changed files with 62 additions and 13 deletions

View File

@ -51,11 +51,12 @@ be named. If `:`<dst> is omitted, the same ref as <src> will be
updated.
+
The object referenced by <src> is used to update the <dst> reference
on the remote side, but by default this is only allowed if the
update can fast-forward <dst>. By having the optional leading `+`,
you can tell git to update the <dst> ref even when the update is not a
fast-forward. This does *not* attempt to merge <src> into <dst>. See
EXAMPLES below for details.
on the remote side. By default this is only allowed if <dst> is not
under refs/tags/, and then only if it can fast-forward <dst>. By having
the optional leading `+`, you can tell git to update the <dst> ref even
if it is not allowed by default (e.g., it is not a fast-forward.) This
does *not* attempt to merge <src> into <dst>. See EXAMPLES below for
details.
+
`tag <tag>` means the same as `refs/tags/<tag>:refs/tags/<tag>`.
+