about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJohn Keeping2015-01-15 22:18:14 +0000
committerJason A. Donenfeld2015-01-19 17:52:10 +0100
commitc422b9b3d5938a4d386533604d4c0dbedfcb2b6d (patch)
treedf512e44809bf0e34ca80a8d57a6fc74482007d9
parentReturn proper HTTP response when accessing info/ (diff)
downloadcgit-c422b9b3d5938a4d386533604d4c0dbedfcb2b6d.tar.gz
cgit-c422b9b3d5938a4d386533604d4c0dbedfcb2b6d.zip
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>
-rw-r--r--ui-log.c4
-rw-r--r--ui-refs.c2
-rw-r--r--ui-shared.c8
-rw-r--r--ui-shared.h3
4 files changed, 8 insertions, 9 deletions
diff --git a/ui-log.c b/ui-log.c index 657ff3c..1b60591 100644 --- a/ui-log.c +++ b/ui-log.c
@@ -71,11 +71,11 @@ void show_commit_decorations(struct commit *commit)
71 } 71 }
72 else if (starts_with(deco->name, "tag: refs/tags/")) { 72 else if (starts_with(deco->name, "tag: refs/tags/")) {
73 strncpy(buf, deco->name + 15, sizeof(buf) - 1); 73 strncpy(buf, deco->name + 15, sizeof(buf) - 1);
74 cgit_tag_link(buf, NULL, "tag-deco", ctx.qry.head, buf); 74 cgit_tag_link(buf, NULL, "tag-deco", buf);
75 } 75 }
76 else if (starts_with(deco->name, "refs/tags/")) { 76 else if (starts_with(deco->name, "refs/tags/")) {
77 strncpy(buf, deco->name + 10, sizeof(buf) - 1); 77 strncpy(buf, deco->name + 10, sizeof(buf) - 1);
78 cgit_tag_link(buf, NULL, "tag-deco", ctx.qry.head, buf); 78 cgit_tag_link(buf, NULL, "tag-deco", buf);
79 } 79 }
80 else if (starts_with(deco->name, "refs/remotes/")) { 80 else if (starts_with(deco->name, "refs/remotes/")) {
81 if (!ctx.repo->enable_remote_branches) 81 if (!ctx.repo->enable_remote_branches)
diff --git a/ui-refs.c b/ui-refs.c index d2ba48d..ac8a6d4 100644 --- a/ui-refs.c +++ b/ui-refs.c
@@ -140,7 +140,7 @@ static int print_tag(struct refinfo *ref)
140 } 140 }
141 141
142 html("<tr><td>"); 142 html("<tr><td>");
143 cgit_tag_link(name, NULL, NULL, ctx.qry.head, name); 143 cgit_tag_link(name, NULL, NULL, name);
144 html("</td><td>"); 144 html("</td><td>");
145 if (ctx.repo->snapshots && (obj->type == OBJ_COMMIT)) 145 if (ctx.repo->snapshots && (obj->type == OBJ_COMMIT))
146 print_tag_downloads(ctx.repo, name); 146 print_tag_downloads(ctx.repo, name);
diff --git a/ui-shared.c b/ui-shared.c index 32f23f9..d8cc4d7 100644 --- a/ui-shared.c +++ b/ui-shared.c
@@ -273,9 +273,9 @@ void cgit_summary_link(const char *name, const char *title, const char *class,
273} 273}
274 274
275void cgit_tag_link(const char *name, const char *title, const char *class, 275void cgit_tag_link(const char *name, const char *title, const char *class,
276 const char *head, const char *rev) 276 const char *tag)
277{ 277{
278 reporevlink("tag", name, title, class, head, rev, NULL); 278 reporevlink("tag", name, title, class, tag, NULL, NULL);
279} 279}
280 280
281void cgit_tree_link(const char *name, const char *title, const char *class, 281void cgit_tree_link(const char *name, const char *title, const char *class,
@@ -443,8 +443,8 @@ static void cgit_self_link(char *name, const char *title, const char *class)
443 else if (!strcmp(ctx.qry.page, "summary")) 443 else if (!strcmp(ctx.qry.page, "summary"))
444 cgit_summary_link(name, title, class, ctx.qry.head); 444 cgit_summary_link(name, title, class, ctx.qry.head);
445 else if (!strcmp(ctx.qry.page, "tag")) 445 else if (!strcmp(ctx.qry.page, "tag"))
446 cgit_tag_link(name, title, class, ctx.qry.head, 446 cgit_tag_link(name, title, class, ctx.qry.has_sha1 ?
447 ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL); 447 ctx.qry.sha1 : ctx.qry.head);
448 else if (!strcmp(ctx.qry.page, "tree")) 448 else if (!strcmp(ctx.qry.page, "tree"))
449 cgit_tree_link(name, title, class, ctx.qry.head, 449 cgit_tree_link(name, title, class, ctx.qry.head,
450 ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL, 450 ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
diff --git a/ui-shared.h b/ui-shared.h index f8cf220..021fe4e 100644 --- a/ui-shared.h +++ b/ui-shared.h
@@ -18,8 +18,7 @@ extern void cgit_index_link(const char *name, const char *title,
18extern void cgit_summary_link(const char *name, const char *title, 18extern void cgit_summary_link(const char *name, const char *title,
19 const char *class, const char *head); 19 const char *class, const char *head);
20extern void cgit_tag_link(const char *name, const char *title, 20extern void cgit_tag_link(const char *name, const char *title,
21 const char *class, const char *head, 21 const char *class, const char *tag);
22 const char *rev);
23extern void cgit_tree_link(const char *name, const char *title, 22extern void cgit_tree_link(const char *name, const char *title,
24 const char *class, const char *head, 23 const char *class, const char *head,
25 const char *rev, const char *path); 24 const char *rev, const char *path);