From c16fdac4cedd308911885604a7b3a785388674d9 Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Mon, 21 Sep 2026 05:39:34 -1000 Subject: Name the tagged object under its full id --- source/ui-refs.c | 4 ++-- source/ui-shared.c | 14 +++++++++----- source/ui-shared.h | 3 ++- source/ui-tag.c | 53 +++++++++++++++++++++++++++-------------------------- 4 files changed, 40 insertions(+), 34 deletions(-) (limited to 'source') diff --git a/source/ui-refs.c b/source/ui-refs.c index 42a3cfb..c375137 100644 --- a/source/ui-refs.c +++ b/source/ui-refs.c @@ -108,7 +108,7 @@ static int print_branch(struct refinfo *ref) } else { // The object link sits in the message column, and the empty // tail cells keep the row as wide as the header. - cgit_object_link(ref->object); + cgit_object_link(ref->object, 0); html(""); } html("\n"); @@ -153,7 +153,7 @@ static int print_tag(struct refinfo *ref) if (ctx.repo->snapshots && (obj->type == OBJ_COMMIT)) cgit_print_snapshot_links(ctx.repo, name, " "); else - cgit_object_link(obj); + cgit_object_link(obj, 0); html(""); if (info) { if (info->tagger) { diff --git a/source/ui-shared.c b/source/ui-shared.c index 2f0843c..bb786a6 100644 --- a/source/ui-shared.c +++ b/source/ui-shared.c @@ -1020,16 +1020,21 @@ void cgit_stats_link(const char *name, const char *title, const char *class, reporevlink("stats", name, title, class, head, NULL, path); } -void cgit_object_link(struct object *obj) +void cgit_object_link(struct object *obj, int full) { const char *page; char *shortrev, *fullrev, *name; fullrev = oid_to_hex(&obj->oid); - shortrev = xstrdup(fullrev); - shortrev[SHORT_HASH_LEN] = '\0'; + if (full) { + name = cgit_fmt("%s %s", type_name(obj->type), fullrev); + } else { + shortrev = xstrdup(fullrev); + shortrev[SHORT_HASH_LEN] = '\0'; + name = cgit_fmt("%s %s...", type_name(obj->type), shortrev); + } if (obj->type == OBJ_COMMIT) { - cgit_commit_link(cgit_fmt("commit %s...", shortrev), NULL, NULL, ctx.qry.head, fullrev, NULL); + cgit_commit_link(name, NULL, NULL, ctx.qry.head, fullrev, NULL); return; } else if (obj->type == OBJ_TREE) page = "tree"; @@ -1037,7 +1042,6 @@ void cgit_object_link(struct object *obj) page = "tag"; else page = "blob"; - name = cgit_fmt("%s %s...", type_name(obj->type), shortrev); reporevlink(page, name, NULL, NULL, ctx.qry.head, fullrev, NULL); } diff --git a/source/ui-shared.h b/source/ui-shared.h index 8a1a2b8..e2d2db9 100644 --- a/source/ui-shared.h +++ b/source/ui-shared.h @@ -60,7 +60,8 @@ extern void cgit_diff_link(const char *name, const char *title, const char *clas const char *head, const char *new_rev, const char *old_rev, const char *path); extern void cgit_stats_link(const char *name, const char *title, const char *class, const char *head, const char *path); -extern void cgit_object_link(struct object *obj); +// Names the object by type and id, abbreviated unless full is set. +extern void cgit_object_link(struct object *obj, int full); extern void cgit_submodule_link(const char *class, char *path, const char *rev); diff --git a/source/ui-tag.c b/source/ui-tag.c index 02fbfc7..56862bb 100644 --- a/source/ui-tag.c +++ b/source/ui-tag.c @@ -17,34 +17,27 @@ #include "ui-shared.h" #include "ui-tag.h" -// The rows share the commit page's three column layout, so a single value -// spans the name and date columns of the tagger row. -static void print_tag_row(const char *revname, const struct object_id *oid) +static void print_name_row(const char *revname, const struct object_id *oid) { - html("tag"); + html("tag name"); html_txt(revname); if (oid) htmlf(" (%s)", oid_to_hex(oid)); html("\n"); } -static void print_object_row(struct object *obj) -{ - html("object"); - cgit_object_link(obj); - html("\n"); -} - -static void print_download_row(const char *revname) +static void print_date_row(struct taginfo *info) { - html("download"); - cgit_print_snapshot_links(ctx.repo, revname, "
"); - html("\n"); + html("tag date\n"); } static void print_tagger_row(struct taginfo *info) { - html("tagger"); + html("tagged by"); // A tag can carry a tagger with no address, and a filter must not be // handed a NULL argument. cgit_open_filter(ctx.repo->email_filter, info->tagger_email ? info->tagger_email : "", "tag"); @@ -54,14 +47,20 @@ static void print_tagger_row(struct taginfo *info) html_txt(info->tagger_email); } cgit_close_filter(ctx.repo->email_filter); - html(""); - if (info->tagger_date > 0) { - html(""); - } + html("\n"); +} + +static void print_object_row(struct object *obj) +{ + html("tagged object"); + cgit_object_link(obj, 1); + html("\n"); +} + +static void print_download_row(const char *revname) +{ + html("download"); + cgit_print_snapshot_links(ctx.repo, revname, "
"); html("\n"); } @@ -106,9 +105,11 @@ static void print_annotated_tag(const char *revname, const struct object_id *oid cgit_print_layout_start(); html("\n"); + print_name_row(revname, oid); + if (info->tagger_date > 0) + print_date_row(info); if (info->tagger) print_tagger_row(info); - print_tag_row(revname, oid); print_object_row(tag->tagged); if (ctx.repo->snapshots) print_download_row(revname); @@ -122,7 +123,7 @@ static void print_lightweight_tag(const char *revname, struct object *obj) { cgit_print_layout_start(); html("
\n"); - print_tag_row(revname, NULL); + print_name_row(revname, NULL); print_object_row(obj); if (ctx.repo->snapshots) print_download_row(revname); -- cgit v2.8.0