Merge branch 'sg/reflog-past-root'
"git reflog" stopped upon seeing an entry that denotes a branch creation event (aka "unborn"), which made it appear as if the reflog was truncated. * sg/reflog-past-root: reflog: continue walking the reflog past root commitsmaint
commit
3873075a12
|
|
@ -241,6 +241,12 @@ void fake_reflog_parent(struct reflog_walk_info *info, struct commit *commit)
|
||||||
logobj = parse_object(reflog->osha1);
|
logobj = parse_object(reflog->osha1);
|
||||||
} while (commit_reflog->recno && (logobj && logobj->type != OBJ_COMMIT));
|
} while (commit_reflog->recno && (logobj && logobj->type != OBJ_COMMIT));
|
||||||
|
|
||||||
|
if (!logobj && commit_reflog->recno >= 0 && is_null_sha1(reflog->osha1)) {
|
||||||
|
/* a root commit, but there are still more entries to show */
|
||||||
|
reflog = &commit_reflog->reflogs->items[commit_reflog->recno];
|
||||||
|
logobj = parse_object(reflog->nsha1);
|
||||||
|
}
|
||||||
|
|
||||||
if (!logobj || logobj->type != OBJ_COMMIT) {
|
if (!logobj || logobj->type != OBJ_COMMIT) {
|
||||||
commit_info->commit = NULL;
|
commit_info->commit = NULL;
|
||||||
commit->parents = NULL;
|
commit->parents = NULL;
|
||||||
|
|
|
||||||
|
|
@ -110,7 +110,7 @@ test_expect_success 'symbolic-ref writes reflog entry' '
|
||||||
update
|
update
|
||||||
create
|
create
|
||||||
EOF
|
EOF
|
||||||
git log --format=%gs -g >actual &&
|
git log --format=%gs -g -2 >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -348,4 +348,26 @@ test_expect_success 'reflog expire operates on symref not referrent' '
|
||||||
git reflog expire --expire=all the_symref
|
git reflog expire --expire=all the_symref
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'continue walking past root commits' '
|
||||||
|
git init orphanage &&
|
||||||
|
(
|
||||||
|
cd orphanage &&
|
||||||
|
cat >expect <<-\EOF &&
|
||||||
|
HEAD@{0} commit (initial): orphan2-1
|
||||||
|
HEAD@{1} commit: orphan1-2
|
||||||
|
HEAD@{2} commit (initial): orphan1-1
|
||||||
|
HEAD@{3} commit (initial): initial
|
||||||
|
EOF
|
||||||
|
test_commit initial &&
|
||||||
|
git reflog &&
|
||||||
|
git checkout --orphan orphan1 &&
|
||||||
|
test_commit orphan1-1 &&
|
||||||
|
test_commit orphan1-2 &&
|
||||||
|
git checkout --orphan orphan2 &&
|
||||||
|
test_commit orphan2-1 &&
|
||||||
|
git log -g --format="%gd %gs" >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue