author | Stefan Bühler <lighttpd@stbuehler.de> | 2009-08-16 17:35:18 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2009-08-16 18:53:20 (UTC) |
commit | 1bbe04c2c09d5dfbb2c66c4f8f490008b6e5fb25 (patch) (unidiff) | |
tree | 2f5eff9d46e490de0c6baddbd3c232935f47f534 | |
parent | ff0ff807a3e03ade0fe04557e33593a3b32d9ab9 (diff) | |
download | cgit-1bbe04c2c09d5dfbb2c66c4f8f490008b6e5fb25.zip cgit-1bbe04c2c09d5dfbb2c66c4f8f490008b6e5fb25.tar.gz cgit-1bbe04c2c09d5dfbb2c66c4f8f490008b6e5fb25.tar.bz2 |
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>
-rw-r--r-- | ui-refs.c | 19 |
1 files changed, 18 insertions, 1 deletions
@@ -33,34 +33,45 @@ static int cmp_ref_name(const void *a, const void *b) | |||
33 | 33 | ||
34 | return strcmp(r1->refname, r2->refname); | 34 | return strcmp(r1->refname, r2->refname); |
35 | } | 35 | } |
36 | 36 | ||
37 | static int cmp_branch_age(const void *a, const void *b) | 37 | static int cmp_branch_age(const void *a, const void *b) |
38 | { | 38 | { |
39 | struct refinfo *r1 = *(struct refinfo **)a; | 39 | struct refinfo *r1 = *(struct refinfo **)a; |
40 | struct refinfo *r2 = *(struct refinfo **)b; | 40 | struct refinfo *r2 = *(struct refinfo **)b; |
41 | 41 | ||
42 | return cmp_age(r1->commit->committer_date, r2->commit->committer_date); | 42 | return cmp_age(r1->commit->committer_date, r2->commit->committer_date); |
43 | } | 43 | } |
44 | 44 | ||
45 | static int cmp_tag_age(const void *a, const void *b) | 45 | static int cmp_tag_age(const void *a, const void *b) |
46 | { | 46 | { |
47 | struct refinfo *r1 = *(struct refinfo **)a; | 47 | struct refinfo *r1 = *(struct refinfo **)a; |
48 | struct refinfo *r2 = *(struct refinfo **)b; | 48 | struct refinfo *r2 = *(struct refinfo **)b; |
49 | int r1date, r2date; | ||
49 | 50 | ||
50 | return cmp_age(r1->tag->tagger_date, r2->tag->tagger_date); | 51 | if (r1->object->type != OBJ_COMMIT) |
52 | r1date = r1->tag->tagger_date; | ||
53 | else | ||
54 | r1date = r1->commit->committer_date; | ||
55 | |||
56 | if (r2->object->type != OBJ_COMMIT) | ||
57 | r2date = r2->tag->tagger_date; | ||
58 | else | ||
59 | r2date = r2->commit->committer_date; | ||
60 | |||
61 | return cmp_age(r1date, r2date); | ||
51 | } | 62 | } |
52 | 63 | ||
53 | static int print_branch(struct refinfo *ref) | 64 | static int print_branch(struct refinfo *ref) |
54 | { | 65 | { |
55 | struct commitinfo *info = ref->commit; | 66 | struct commitinfo *info = ref->commit; |
56 | char *name = (char *)ref->refname; | 67 | char *name = (char *)ref->refname; |
57 | 68 | ||
58 | if (!info) | 69 | if (!info) |
59 | return 1; | 70 | return 1; |
60 | html("<tr><td>"); | 71 | html("<tr><td>"); |
61 | cgit_log_link(name, NULL, NULL, name, NULL, NULL, 0, NULL, NULL, | 72 | cgit_log_link(name, NULL, NULL, name, NULL, NULL, 0, NULL, NULL, |
62 | ctx.qry.showmsg); | 73 | ctx.qry.showmsg); |
63 | html("</td><td>"); | 74 | html("</td><td>"); |
64 | 75 | ||
65 | if (ref->object->type == OBJ_COMMIT) { | 76 | if (ref->object->type == OBJ_COMMIT) { |
66 | cgit_commit_link(info->subject, NULL, NULL, name, NULL); | 77 | cgit_commit_link(info->subject, NULL, NULL, name, NULL); |
@@ -132,32 +143,38 @@ static int print_tag(struct refinfo *ref) | |||
132 | if (info->tagger) | 143 | if (info->tagger) |
133 | html(info->tagger); | 144 | html(info->tagger); |
134 | html("</td><td colspan='2'>"); | 145 | html("</td><td colspan='2'>"); |
135 | if (info->tagger_date > 0) | 146 | if (info->tagger_date > 0) |
136 | cgit_print_age(info->tagger_date, -1, NULL); | 147 | cgit_print_age(info->tagger_date, -1, NULL); |
137 | html("</td></tr>\n"); | 148 | html("</td></tr>\n"); |
138 | } else { | 149 | } else { |
139 | if (!header) | 150 | if (!header) |
140 | print_tag_header(); | 151 | print_tag_header(); |
141 | html("<tr><td>"); | 152 | html("<tr><td>"); |
142 | cgit_tag_link(name, NULL, NULL, ctx.qry.head, name); | 153 | cgit_tag_link(name, NULL, NULL, ctx.qry.head, name); |
143 | html("</td><td>"); | 154 | html("</td><td>"); |
144 | if (ctx.repo->snapshots && (ref->object->type == OBJ_COMMIT)) | 155 | if (ctx.repo->snapshots && (ref->object->type == OBJ_COMMIT)) |
145 | print_tag_downloads(ctx.repo, name); | 156 | print_tag_downloads(ctx.repo, name); |
146 | else | 157 | else |
147 | cgit_object_link(ref->object); | 158 | cgit_object_link(ref->object); |
159 | html("</td><td>"); | ||
160 | if (ref->object->type == OBJ_COMMIT) | ||
161 | html(ref->commit->author); | ||
162 | html("</td><td colspan='2'>"); | ||
163 | if (ref->object->type == OBJ_COMMIT) | ||
164 | cgit_print_age(ref->commit->commit->date, -1, NULL); | ||
148 | html("</td></tr>\n"); | 165 | html("</td></tr>\n"); |
149 | } | 166 | } |
150 | return 0; | 167 | return 0; |
151 | } | 168 | } |
152 | 169 | ||
153 | static void print_refs_link(char *path) | 170 | static void print_refs_link(char *path) |
154 | { | 171 | { |
155 | html("<tr class='nohover'><td colspan='4'>"); | 172 | html("<tr class='nohover'><td colspan='4'>"); |
156 | cgit_refs_link("[...]", NULL, NULL, ctx.qry.head, NULL, path); | 173 | cgit_refs_link("[...]", NULL, NULL, ctx.qry.head, NULL, path); |
157 | html("</td></tr>"); | 174 | html("</td></tr>"); |
158 | } | 175 | } |
159 | 176 | ||
160 | void cgit_print_branches(int maxcount) | 177 | void cgit_print_branches(int maxcount) |
161 | { | 178 | { |
162 | struct reflist list; | 179 | struct reflist list; |
163 | int i; | 180 | int i; |