reflog: continue walking the reflog past root commits
authorSZEDER Gábor <szeder@ira.uka.de>
Fri, 3 Jun 2016 20:42:35 +0000 (22:42 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 6 Jun 2016 22:06:44 +0000 (15:06 -0700)
commit71abeb753fa835642acb952316266dde21d7cec6
tree1600ef9f3f1fe231412a3a8d05759f6e803cabff
parent49fa3dc76179e04b0833542fa52d0f287a4955ac
reflog: continue walking the reflog past root commits

If a repository contains more than one root commit, then its HEAD
reflog may contain multiple "creation events", i.e. entries whose
"from" value is the null sha1.  Listing such a reflog currently stops
prematurely at the first such entry, even when the reflog still
contains older entries.  This can scare users into thinking that their
reflog got truncated after 'git checkout --orphan'.

Continue walking the reflog past such creation events based on the
preceeding reflog entry's "new" value.

The test 'symbolic-ref writes reflog entry' in t1401-symbolic-ref
implicitly relies on the current behavior of the reflog walker to stop
at a root commit and thus to list only the reflog entries that are
relevant for that test.  Adjust the test to explicitly specify the
number of relevant reflog entries to be listed.

Reported-by: Patrik Gustafsson <pvn@textalk.se>
Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
reflog-walk.c
t/t1401-symbolic-ref.sh
t/t1410-reflog.sh