reflog expire: do not punt on tags that point at non commits.

It is unusual for a tag to point at a non-commit, and it is also
unusual for a tag to have reflog, but that is not an error and
we should still prune its reflog entries just as other refs.

Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Junio C Hamano 2006-12-22 23:42:30 -08:00
parent 8d8b9f6252
commit 58748293f6
1 changed files with 5 additions and 5 deletions

View File

@ -80,7 +80,8 @@ static int expire_reflog_ent(unsigned char *osha1, unsigned char *nsha1,
goto prune; goto prune;


if ((timestamp < cb->expire_unreachable) && if ((timestamp < cb->expire_unreachable) &&
((old && !in_merge_bases(old, cb->ref_commit)) || (!cb->ref_commit ||
(old && !in_merge_bases(old, cb->ref_commit)) ||
(new && !in_merge_bases(new, cb->ref_commit)))) (new && !in_merge_bases(new, cb->ref_commit))))
goto prune; goto prune;


@ -126,10 +127,9 @@ static int expire_reflog(const char *ref, const unsigned char *sha1, int unused,
} }


cb.ref_commit = lookup_commit_reference_gently(sha1, 1); cb.ref_commit = lookup_commit_reference_gently(sha1, 1);
if (!cb.ref_commit) { if (!cb.ref_commit)
status = error("ref '%s' does not point at a commit", ref); fprintf(stderr,
goto finish; "warning: ref '%s' does not point at a commit\n", ref);
}
cb.ref = ref; cb.ref = ref;
cb.expire_total = cmd->expire_total; cb.expire_total = cmd->expire_total;
cb.expire_unreachable = cmd->expire_unreachable; cb.expire_unreachable = cmd->expire_unreachable;