cgit

commit 1bbe04c2c09d5dfbb2c66c4f8f490008b6e5fb25

Author: Stefan Bühler <lighttpd@stbuehler.de>

ui-refs.c: improve handling of lightweight tags

When a lightweight tag is referencing a commit object, cgit now uses
the commit date when comparing tag age. Also, the commitdate and author
info is printed in the refs view, making lightweight tags appear similar
to annotated tags.

Signed-off-by: Stefan Bühler <lighttpd@stbuehler.de>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>

 ui-refs.c | 19 ++++++++++++++++++-


diff --git a/ui-refs.c b/ui-refs.c
index 25da00a0f25ada4218e9e518f022dc32838a5769..d3b4f6e478aab81b9f59dbac3536ce1b7eb6344e 100644
--- a/ui-refs.c
+++ b/ui-refs.c
@@ -46,8 +46,19 @@ static int cmp_tag_age(const void *a, const void *b)
 {
 	struct refinfo *r1 = *(struct refinfo **)a;
 	struct refinfo *r2 = *(struct refinfo **)b;
+	int r1date, r2date;
 
-	return cmp_age(r1->tag->tagger_date, r2->tag->tagger_date);
+	if (r1->object->type != OBJ_COMMIT)
+		r1date = r1->tag->tagger_date;
+	else
+		r1date = r1->commit->committer_date;
+
+	if (r2->object->type != OBJ_COMMIT)
+		r2date = r2->tag->tagger_date;
+	else
+		r2date = r2->commit->committer_date;
+
+	return cmp_age(r1date, r2date);
 }
 
 static int print_branch(struct refinfo *ref)
@@ -145,6 +156,12 @@ 		if (ctx.repo->snapshots && (ref->object->type == OBJ_COMMIT))
 			print_tag_downloads(ctx.repo, name);
 		else
 			cgit_object_link(ref->object);
+		html("</td><td>");
+		if (ref->object->type == OBJ_COMMIT)
+			html(ref->commit->author);
+		html("</td><td colspan='2'>");
+		if (ref->object->type == OBJ_COMMIT)
+			cgit_print_age(ref->commit->commit->date, -1, NULL);
 		html("</td></tr>\n");
 	}
 	return 0;