merge: allow fast-forward when merging a tracked tag
commitadcc94a0aa7055be4133ebda8b25f4af63285c6d
authorJunio C Hamano <gitster@pobox.com>
Wed, 14 Feb 2018 18:18:55 +0000 (14 10:18 -0800)
committerJunio C Hamano <gitster@pobox.com>
Fri, 16 Feb 2018 19:22:43 +0000 (16 11:22 -0800)
tree1411bcf159e21cf3fa6d6551d9aaa132025cdf62
parentb2e45c695d09f6a31ce09347ae0a5d2cdfe9dd4e
merge: allow fast-forward when merging a tracked tag

Long time ago at fab47d05 ("merge: force edit and no-ff mode when
merging a tag object", 2011-11-07), "git merge" was made to always
create a merge commit when merging a tag, even when the side branch
being merged is a descendant of the current branch.

This default is good for merges made by upstream maintainers to
integrate work signed by downstream contributors, but will leave
pointless no-ff merges when downstream contributors pull a newer
release tag to make their long-running topic branches catch up with
the upstream.  When there is no local work left on the topic, such a
merge should simply fast-forward to the commit pointed at by the
release tag.

Update the default (again) for "git merge" that merges a tag object
to (1) --no-ff (i.e. create a merge commit even when side branch
fast forwards) if the tag being merged is not at its expected place
in refs/tags/ hierarchy and (2) --ff (i.e. allow fast-forward update
when able) otherwise.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/merge-options.txt
builtin/merge.c
t/t6200-fmt-merge-msg.sh
t/t7600-merge.sh