Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> writes: > } else if (type == OBJ_TAG) { > struct tag *tag = lookup_tag(ds->repo, oid); > const char *tag_tag = ""; > + timestamp_t tag_date = 0; How about leaving these two uninitialized and introduce one extra bool, int tag_info_valid = 0; and then > > - if (!parse_tag(tag) && tag->tag) > + if (!parse_tag(tag) && tag->tag) { > tag_tag = tag->tag; > + tag_date = tag->date; tag_info_valid = 1; > + } > > /* > * TRANSLATORS: This is a line of > * ambiguous tag object output. E.g.: > * > - * "deadbeef tag Some Tag Message" > + * "deadbeef tag 2021-01-01 - Some Tag Message" > * > * The second argument is the "tag" string from > * object.c. > */ > - strbuf_addf(&desc, _("%s tag %s"), hash, tag_tag); > + strbuf_addf(&desc, _("%s tag %s - %s"), hash, > + show_date(tag_date, 0, DATE_MODE(SHORT)), > + tag_tag); Then this part can use tag_info_valid to conditionally use tag_date and tag_tag: if (tag_info_valid) strbuf_addf(&desc, ... <hash,date,tag>); else strbuf_addf(&desc, _("%s tag [bad]"), hash); without throwing a misleading "In 1970 this happened". > } else if (type == OBJ_TREE) { > /* > * TRANSLATORS: This is a line of ambiguous <type>