Greg KH noticed that the commit 0136db586c that was merged to the
mainline back in v3.5-rc1 days was merged again as part of a
different branch to the mainline before v3.6-rc1.
"git describe --contains" gives the commit a name based on the newer
v3.6-rc1 tag, which was surprising.
This is because "describe --contains" calls "name-rev", which tries
to use the tag that minimizes the steps between the tag and the
commit being named. The branch merged recently to the mainline did
not have as much work done on top of the commit as the old branch
that was merged earlier, and "name-rev" chose to use the newer tag
to base the name on.
The new "--weight" option introduced by this series tells it to use
the oldest tag that contains the commit being named instead. This
matches what people expect from "describe --contains" better.
Junio C Hamano (6):
name-rev: lose unnecessary typedef
name_rev: clarify the logic to assign a new tip-name to a commit
name-rev: --weight option
name-rev --weight: cache the computed weight in notes
name-rev --weight: tests and documentation
describe --contains: use "name-rev --weight"
Documentation/git-name-rev.txt | 14 ++-
builtin/describe.c | 3 +-
builtin/name-rev.c | 195 ++++++++++++++++++++++++++++++++++++-----
t/t6039-name-rev.sh | 62 +++++++++++++
4 files changed, 248 insertions(+), 26 deletions(-)
create mode 100755 t/t6039-name-rev.sh
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html