The for_each_reflog_ent() function yields reflog entries from the oldest to newer, and is inefficient when we know what we are looking for are near the newest end (e.g. "find the nth newest reflog entry that matches 'checkout: moving from X to Y'"). To optimize for the common case, we introduced for_each_recent_reflog_ent() to scan only the newest part (i.e. tail) of the reflog file, but it is difficult to use this function correctly. Just bite the bullet and stop working around the API that reads the file in a wrong order. The new for_each_reflog_ent_reverse() function gives us reflog entries from the newest to older. Junio C Hamano (3): for_each_reflog_ent(): extract a helper to process a single entry for_each_recent_reflog_ent(): simplify opening of a reflog file reflog: add for_each_reflog_ent_reverse() API refs.c | 161 +++++++++++++++++++++++++++++++++++++++++++----------------- refs.h | 2 +- sha1_name.c | 48 +++++++----------- 3 files changed, 134 insertions(+), 77 deletions(-) -- 1.8.2-rc3-189-g94c4d42 -- 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