X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=reflog-walk.c;h=c983858259f717b3ed9d0f00921aec92219c1ad3;hb=3358004a006714477c2c44577507081cb5124fa4;hp=653ec956f08141b3e15f52665cef7a260f8ed6a4;hpb=302da67472e322109e6299d38dd1a2c30bde9f4c;p=git.git diff --git a/reflog-walk.c b/reflog-walk.c index 653ec956f..c98385825 100644 --- a/reflog-walk.c +++ b/reflog-walk.c @@ -174,6 +174,19 @@ void add_reflog_for_walk(struct reflog_walk_info *info, branch = xstrdup(head); } reflogs = read_complete_reflog(branch); + if (!reflogs || reflogs->nr == 0) { + unsigned char sha1[20]; + char *b; + if (dwim_log(branch, strlen(branch), sha1, &b) == 1) { + if (reflogs) { + free(reflogs->ref); + free(reflogs); + } + free(branch); + branch = b; + reflogs = read_complete_reflog(branch); + } + } if (!reflogs || reflogs->nr == 0) die("No reflogs found for '%s'", branch); path_list_insert(branch, &info->complete_reflogs)->util @@ -227,7 +240,8 @@ void fake_reflog_parent(struct reflog_walk_info *info, struct commit *commit) commit->object.flags &= ~(ADDED | SEEN | SHOWN); } -void show_reflog_message(struct reflog_walk_info* info, int oneline) +void show_reflog_message(struct reflog_walk_info* info, int oneline, + int relative_date) { if (info && info->last_commit_reflog) { struct commit_reflog *commit_reflog = info->last_commit_reflog; @@ -236,7 +250,7 @@ void show_reflog_message(struct reflog_walk_info* info, int oneline) info = &commit_reflog->reflogs->items[commit_reflog->recno+1]; if (oneline) { printf("%s@{", commit_reflog->reflogs->ref); - if (commit_reflog->flag) + if (commit_reflog->flag || relative_date) printf("%s", show_date(info->timestamp, 0, 1)); else printf("%d", commit_reflog->reflogs->nr @@ -245,9 +259,10 @@ void show_reflog_message(struct reflog_walk_info* info, int oneline) } else { printf("Reflog: %s@{", commit_reflog->reflogs->ref); - if (commit_reflog->flag) - printf("%s", show_rfc2822_date(info->timestamp, - info->tz)); + if (commit_reflog->flag || relative_date) + printf("%s", show_date(info->timestamp, + info->tz, + relative_date)); else printf("%d", commit_reflog->reflogs->nr - 2 - commit_reflog->recno);