From: Junio C Hamano Date: Sat, 23 Dec 2006 07:42:30 +0000 (-0800) Subject: reflog expire: do not punt on tags that point at non commits. X-Git-Tag: v1.5.0-rc1~188^2~1 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=58748293f6fa450c6db89a78bd20aae7bf708d3b;p=git.git 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 --- diff --git a/builtin-reflog.c b/builtin-reflog.c index 4097c328c..de31967b9 100644 --- a/builtin-reflog.c +++ b/builtin-reflog.c @@ -80,7 +80,8 @@ static int expire_reflog_ent(unsigned char *osha1, unsigned char *nsha1, goto prune; 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)))) 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); - if (!cb.ref_commit) { - status = error("ref '%s' does not point at a commit", ref); - goto finish; - } + if (!cb.ref_commit) + fprintf(stderr, + "warning: ref '%s' does not point at a commit\n", ref); cb.ref = ref; cb.expire_total = cmd->expire_total; cb.expire_unreachable = cmd->expire_unreachable;