all repos — cgit @ c422b9b3d5938a4d386533604d4c0dbedfcb2b6d

a hyperfast web frontend for git written in c

tag: reference with "h" instead of "id"

When clicking on "log" from a tag we end up showing the log of whatever
branch we used to reach the tag.  If the tag doesn't point onto a branch
then the tagged commit won't appear in this output.

By linking to tags with the head parameter instead of the "id" parameter
the log link will show the log of the tag.  This is clearly desirable
when the tag has been reached from the refs UI and changing the
behaviour for tag decorations makes them match branch decorations where
log -> decoration -> log shows the log of the decoration.

Reported-by: Ferry Huberts <mailings@hupie.com>
Signed-off-by: John Keeping <john@keeping.me.uk>
John Keeping john@keeping.me.uk
Thu, 15 Jan 2015 22:18:14 +0000
commit

c422b9b3d5938a4d386533604d4c0dbedfcb2b6d

parent

ed7e3bc822856c30066a4ff0178033b22046fe96

4 files changed, 8 insertions(+), 9 deletions(-)

jump to
M ui-log.cui-log.c

@@ -71,11 +71,11 @@ ctx.qry.showmsg);

} else if (starts_with(deco->name, "tag: refs/tags/")) { strncpy(buf, deco->name + 15, sizeof(buf) - 1); - cgit_tag_link(buf, NULL, "tag-deco", ctx.qry.head, buf); + cgit_tag_link(buf, NULL, "tag-deco", buf); } else if (starts_with(deco->name, "refs/tags/")) { strncpy(buf, deco->name + 10, sizeof(buf) - 1); - cgit_tag_link(buf, NULL, "tag-deco", ctx.qry.head, buf); + cgit_tag_link(buf, NULL, "tag-deco", buf); } else if (starts_with(deco->name, "refs/remotes/")) { if (!ctx.repo->enable_remote_branches)
M ui-refs.cui-refs.c

@@ -140,7 +140,7 @@ return 1;

} html("<tr><td>"); - cgit_tag_link(name, NULL, NULL, ctx.qry.head, name); + cgit_tag_link(name, NULL, NULL, name); html("</td><td>"); if (ctx.repo->snapshots && (obj->type == OBJ_COMMIT)) print_tag_downloads(ctx.repo, name);
M ui-shared.cui-shared.c

@@ -273,9 +273,9 @@ reporevlink(NULL, name, title, class, head, NULL, NULL);

} void cgit_tag_link(const char *name, const char *title, const char *class, - const char *head, const char *rev) + const char *tag) { - reporevlink("tag", name, title, class, head, rev, NULL); + reporevlink("tag", name, title, class, tag, NULL, NULL); } void cgit_tree_link(const char *name, const char *title, const char *class,

@@ -443,8 +443,8 @@ ctx.qry.ofs);

else if (!strcmp(ctx.qry.page, "summary")) cgit_summary_link(name, title, class, ctx.qry.head); else if (!strcmp(ctx.qry.page, "tag")) - cgit_tag_link(name, title, class, ctx.qry.head, - ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL); + cgit_tag_link(name, title, class, ctx.qry.has_sha1 ? + ctx.qry.sha1 : ctx.qry.head); else if (!strcmp(ctx.qry.page, "tree")) cgit_tree_link(name, title, class, ctx.qry.head, ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
M ui-shared.hui-shared.h

@@ -18,8 +18,7 @@ const char *class, const char *pattern, const char *sort, int ofs);

extern void cgit_summary_link(const char *name, const char *title, const char *class, const char *head); extern void cgit_tag_link(const char *name, const char *title, - const char *class, const char *head, - const char *rev); + const char *class, const char *tag); extern void cgit_tree_link(const char *name, const char *title, const char *class, const char *head, const char *rev, const char *path);