So here is an attempt to teach "name-rev" a mode that tries to base its name on oldest tag that can reach the commit. It needs the reset_revision_walk() call recently added to the revision traversal API, and applies to bcc0a3e (v1.7.11-rc0~111^2~2) or newer. Note that this can benefit from caching, as the "weight" of the tag (rather, the commit that is tagged) will never change once a history is made, but that part is left as an exercise to the reader. It correctly names 0136db586c in the kernel history as based on v3.5-rc1 as tags/v3.5-rc1~83^2~81^2~76, not on v3.6-rc1, as we saw on the list recently. Once it is verified to operate correctly and updated to perform properly, we can start passing --weight when "describe --contains" runs the command. Junio C Hamano (3): name-rev: lose unnecessary typedef name_rev: clarify when a new tip-name is assigned to a commit name-rev: --weight option (WIP) builtin/name-rev.c | 142 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 120 insertions(+), 22 deletions(-) -- 1.7.12.285.ga3d5fc0 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html