author | Lars Hjemli <hjemli@gmail.com> | 2008-04-13 10:20:00 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2008-04-13 10:20:00 (UTC) |
commit | 39912a24edf45497e668ebda25636aa6f6db0c9b (patch) (unidiff) | |
tree | 5de079ba1441a4f9546252e38c31d4d1b5f17b40 | |
parent | 536b0541fcfea2169e4df33043cd9ff14c657bce (diff) | |
download | cgit-39912a24edf45497e668ebda25636aa6f6db0c9b.zip cgit-39912a24edf45497e668ebda25636aa6f6db0c9b.tar.gz cgit-39912a24edf45497e668ebda25636aa6f6db0c9b.tar.bz2 |
Remove 'patch' link from tab, add to commit view
It's a bit confusing to enter the patch view from the tab, since it has no
layout. And the commit view has always lacked showing the commit id. Both of
these warts are fixed by this commit, which adds a new header line in the
commit view which shows the commit id as a 'permalink' to the current commit
and also adds a link to the patch view of the current commit.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | ui-commit.c | 6 | ||||
-rw-r--r-- | ui-shared.c | 2 | ||||
-rw-r--r-- | ui-shared.h | 2 |
3 files changed, 8 insertions, 2 deletions
diff --git a/ui-commit.c b/ui-commit.c index c2fafd7..dd36cc0 100644 --- a/ui-commit.c +++ b/ui-commit.c | |||
@@ -154,48 +154,54 @@ void cgit_print_commit(char *hex) | |||
154 | return; | 154 | return; |
155 | } | 155 | } |
156 | commit = lookup_commit_reference(sha1); | 156 | commit = lookup_commit_reference(sha1); |
157 | if (!commit) { | 157 | if (!commit) { |
158 | cgit_print_error(fmt("Bad commit reference: %s", hex)); | 158 | cgit_print_error(fmt("Bad commit reference: %s", hex)); |
159 | return; | 159 | return; |
160 | } | 160 | } |
161 | info = cgit_parse_commit(commit); | 161 | info = cgit_parse_commit(commit); |
162 | 162 | ||
163 | html("<table summary='commit info' class='commit-info'>\n"); | 163 | html("<table summary='commit info' class='commit-info'>\n"); |
164 | html("<tr><th>author</th><td>"); | 164 | html("<tr><th>author</th><td>"); |
165 | html_txt(info->author); | 165 | html_txt(info->author); |
166 | html(" "); | 166 | html(" "); |
167 | html_txt(info->author_email); | 167 | html_txt(info->author_email); |
168 | html("</td><td class='right'>"); | 168 | html("</td><td class='right'>"); |
169 | cgit_print_date(info->author_date, FMT_LONGDATE); | 169 | cgit_print_date(info->author_date, FMT_LONGDATE); |
170 | html("</td></tr>\n"); | 170 | html("</td></tr>\n"); |
171 | html("<tr><th>committer</th><td>"); | 171 | html("<tr><th>committer</th><td>"); |
172 | html_txt(info->committer); | 172 | html_txt(info->committer); |
173 | html(" "); | 173 | html(" "); |
174 | html_txt(info->committer_email); | 174 | html_txt(info->committer_email); |
175 | html("</td><td class='right'>"); | 175 | html("</td><td class='right'>"); |
176 | cgit_print_date(info->committer_date, FMT_LONGDATE); | 176 | cgit_print_date(info->committer_date, FMT_LONGDATE); |
177 | html("</td></tr>\n"); | 177 | html("</td></tr>\n"); |
178 | html("<tr><th>commit</th><td colspan='2' class='sha1'>"); | ||
179 | tmp = sha1_to_hex(commit->object.sha1); | ||
180 | cgit_commit_link(tmp, NULL, NULL, ctx.qry.head, tmp); | ||
181 | html(" ("); | ||
182 | cgit_patch_link("patch", NULL, NULL, NULL, tmp); | ||
183 | html(")</td></tr>\n"); | ||
178 | html("<tr><th>tree</th><td colspan='2' class='sha1'>"); | 184 | html("<tr><th>tree</th><td colspan='2' class='sha1'>"); |
179 | tmp = xstrdup(hex); | 185 | tmp = xstrdup(hex); |
180 | cgit_tree_link(sha1_to_hex(commit->tree->object.sha1), NULL, NULL, | 186 | cgit_tree_link(sha1_to_hex(commit->tree->object.sha1), NULL, NULL, |
181 | ctx.qry.head, tmp, NULL); | 187 | ctx.qry.head, tmp, NULL); |
182 | html("</td></tr>\n"); | 188 | html("</td></tr>\n"); |
183 | for (p = commit->parents; p ; p = p->next) { | 189 | for (p = commit->parents; p ; p = p->next) { |
184 | parent = lookup_commit_reference(p->item->object.sha1); | 190 | parent = lookup_commit_reference(p->item->object.sha1); |
185 | if (!parent) { | 191 | if (!parent) { |
186 | html("<tr><td colspan='3'>"); | 192 | html("<tr><td colspan='3'>"); |
187 | cgit_print_error("Error reading parent commit"); | 193 | cgit_print_error("Error reading parent commit"); |
188 | html("</td></tr>"); | 194 | html("</td></tr>"); |
189 | continue; | 195 | continue; |
190 | } | 196 | } |
191 | html("<tr><th>parent</th>" | 197 | html("<tr><th>parent</th>" |
192 | "<td colspan='2' class='sha1'>"); | 198 | "<td colspan='2' class='sha1'>"); |
193 | cgit_commit_link(sha1_to_hex(p->item->object.sha1), NULL, NULL, | 199 | cgit_commit_link(sha1_to_hex(p->item->object.sha1), NULL, NULL, |
194 | ctx.qry.head, sha1_to_hex(p->item->object.sha1)); | 200 | ctx.qry.head, sha1_to_hex(p->item->object.sha1)); |
195 | html(" ("); | 201 | html(" ("); |
196 | cgit_diff_link("diff", NULL, NULL, ctx.qry.head, hex, | 202 | cgit_diff_link("diff", NULL, NULL, ctx.qry.head, hex, |
197 | sha1_to_hex(p->item->object.sha1), NULL); | 203 | sha1_to_hex(p->item->object.sha1), NULL); |
198 | html(")</td></tr>"); | 204 | html(")</td></tr>"); |
199 | } | 205 | } |
200 | if (ctx.repo->snapshots) { | 206 | if (ctx.repo->snapshots) { |
201 | html("<tr><th>download</th><td colspan='2' class='sha1'>"); | 207 | html("<tr><th>download</th><td colspan='2' class='sha1'>"); |
diff --git a/ui-shared.c b/ui-shared.c index 6253a90..bb08c4a 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
@@ -520,50 +520,48 @@ void cgit_print_pageheader(struct cgit_context *ctx) | |||
520 | */ | 520 | */ |
521 | else { | 521 | else { |
522 | html(">"); | 522 | html(">"); |
523 | html_txt("a fast webinterface for the git dscm"); | 523 | html_txt("a fast webinterface for the git dscm"); |
524 | } | 524 | } |
525 | html("</td></tr>\n"); | 525 | html("</td></tr>\n"); |
526 | 526 | ||
527 | html("</tr>\n"); | 527 | html("</tr>\n"); |
528 | html("</table>\n"); | 528 | html("</table>\n"); |
529 | 529 | ||
530 | html("<table class='tabs'><tr><td>\n"); | 530 | html("<table class='tabs'><tr><td>\n"); |
531 | if (ctx->repo) { | 531 | if (ctx->repo) { |
532 | reporevlink(NULL, "summary", NULL, hc(cmd, "summary"), | 532 | reporevlink(NULL, "summary", NULL, hc(cmd, "summary"), |
533 | ctx->qry.head, NULL, NULL); | 533 | ctx->qry.head, NULL, NULL); |
534 | cgit_refs_link("refs", NULL, hc(cmd, "refs"), ctx->qry.head, | 534 | cgit_refs_link("refs", NULL, hc(cmd, "refs"), ctx->qry.head, |
535 | ctx->qry.sha1, NULL); | 535 | ctx->qry.sha1, NULL); |
536 | cgit_log_link("log", NULL, hc(cmd, "log"), ctx->qry.head, | 536 | cgit_log_link("log", NULL, hc(cmd, "log"), ctx->qry.head, |
537 | NULL, NULL, 0, NULL, NULL); | 537 | NULL, NULL, 0, NULL, NULL); |
538 | cgit_tree_link("tree", NULL, hc(cmd, "tree"), ctx->qry.head, | 538 | cgit_tree_link("tree", NULL, hc(cmd, "tree"), ctx->qry.head, |
539 | ctx->qry.sha1, NULL); | 539 | ctx->qry.sha1, NULL); |
540 | cgit_commit_link("commit", NULL, hc(cmd, "commit"), | 540 | cgit_commit_link("commit", NULL, hc(cmd, "commit"), |
541 | ctx->qry.head, ctx->qry.sha1); | 541 | ctx->qry.head, ctx->qry.sha1); |
542 | cgit_diff_link("diff", NULL, hc(cmd, "diff"), ctx->qry.head, | 542 | cgit_diff_link("diff", NULL, hc(cmd, "diff"), ctx->qry.head, |
543 | ctx->qry.sha1, ctx->qry.sha2, NULL); | 543 | ctx->qry.sha1, ctx->qry.sha2, NULL); |
544 | cgit_patch_link("patch", NULL, hc(cmd, "patch"), ctx->qry.head, | ||
545 | ctx->qry.sha1); | ||
546 | html("</td><td class='form'>"); | 544 | html("</td><td class='form'>"); |
547 | html("<form class='right' method='get' action='"); | 545 | html("<form class='right' method='get' action='"); |
548 | if (ctx->cfg.virtual_root) | 546 | if (ctx->cfg.virtual_root) |
549 | html_attr(cgit_fileurl(ctx->qry.repo, "log", | 547 | html_attr(cgit_fileurl(ctx->qry.repo, "log", |
550 | ctx->qry.path, NULL)); | 548 | ctx->qry.path, NULL)); |
551 | html("'>\n"); | 549 | html("'>\n"); |
552 | add_hidden_formfields(1, 0, "log"); | 550 | add_hidden_formfields(1, 0, "log"); |
553 | html("<select name='qt'>\n"); | 551 | html("<select name='qt'>\n"); |
554 | html_option("grep", "log msg", ctx->qry.grep); | 552 | html_option("grep", "log msg", ctx->qry.grep); |
555 | html_option("author", "author", ctx->qry.grep); | 553 | html_option("author", "author", ctx->qry.grep); |
556 | html_option("committer", "committer", ctx->qry.grep); | 554 | html_option("committer", "committer", ctx->qry.grep); |
557 | html("</select>\n"); | 555 | html("</select>\n"); |
558 | html("<input class='txt' type='text' size='10' name='q' value='"); | 556 | html("<input class='txt' type='text' size='10' name='q' value='"); |
559 | html_attr(ctx->qry.search); | 557 | html_attr(ctx->qry.search); |
560 | html("'/>\n"); | 558 | html("'/>\n"); |
561 | html("<input type='submit' value='search'/>\n"); | 559 | html("<input type='submit' value='search'/>\n"); |
562 | html("</form>\n"); | 560 | html("</form>\n"); |
563 | } else { | 561 | } else { |
564 | html("<a class='active' href='"); | 562 | html("<a class='active' href='"); |
565 | html_attr(cgit_rooturl()); | 563 | html_attr(cgit_rooturl()); |
566 | html("'>index</a>\n"); | 564 | html("'>index</a>\n"); |
567 | html("</td><td class='form'>"); | 565 | html("</td><td class='form'>"); |
568 | html("<form method='get' action='"); | 566 | html("<form method='get' action='"); |
569 | html_attr(cgit_rooturl()); | 567 | html_attr(cgit_rooturl()); |
diff --git a/ui-shared.h b/ui-shared.h index 94de884..76c2b1f 100644 --- a/ui-shared.h +++ b/ui-shared.h | |||
@@ -1,36 +1,38 @@ | |||
1 | #ifndef UI_SHARED_H | 1 | #ifndef UI_SHARED_H |
2 | #define UI_SHARED_H | 2 | #define UI_SHARED_H |
3 | 3 | ||
4 | extern char *cgit_repourl(const char *reponame); | 4 | extern char *cgit_repourl(const char *reponame); |
5 | extern char *cgit_fileurl(const char *reponame, const char *pagename, | 5 | extern char *cgit_fileurl(const char *reponame, const char *pagename, |
6 | const char *filename, const char *query); | 6 | const char *filename, const char *query); |
7 | extern char *cgit_pageurl(const char *reponame, const char *pagename, | 7 | extern char *cgit_pageurl(const char *reponame, const char *pagename, |
8 | const char *query); | 8 | const char *query); |
9 | 9 | ||
10 | extern void cgit_tree_link(char *name, char *title, char *class, char *head, | 10 | extern void cgit_tree_link(char *name, char *title, char *class, char *head, |
11 | char *rev, char *path); | 11 | char *rev, char *path); |
12 | extern void cgit_log_link(char *name, char *title, char *class, char *head, | 12 | extern void cgit_log_link(char *name, char *title, char *class, char *head, |
13 | char *rev, char *path, int ofs, char *grep, | 13 | char *rev, char *path, int ofs, char *grep, |
14 | char *pattern); | 14 | char *pattern); |
15 | extern void cgit_commit_link(char *name, char *title, char *class, char *head, | 15 | extern void cgit_commit_link(char *name, char *title, char *class, char *head, |
16 | char *rev); | 16 | char *rev); |
17 | extern void cgit_patch_link(char *name, char *title, char *class, char *head, | ||
18 | char *rev); | ||
17 | extern void cgit_refs_link(char *name, char *title, char *class, char *head, | 19 | extern void cgit_refs_link(char *name, char *title, char *class, char *head, |
18 | char *rev, char *path); | 20 | char *rev, char *path); |
19 | extern void cgit_snapshot_link(char *name, char *title, char *class, | 21 | extern void cgit_snapshot_link(char *name, char *title, char *class, |
20 | char *head, char *rev, char *archivename); | 22 | char *head, char *rev, char *archivename); |
21 | extern void cgit_diff_link(char *name, char *title, char *class, char *head, | 23 | extern void cgit_diff_link(char *name, char *title, char *class, char *head, |
22 | char *new_rev, char *old_rev, char *path); | 24 | char *new_rev, char *old_rev, char *path); |
23 | extern void cgit_object_link(struct object *obj); | 25 | extern void cgit_object_link(struct object *obj); |
24 | 26 | ||
25 | extern void cgit_print_error(char *msg); | 27 | extern void cgit_print_error(char *msg); |
26 | extern void cgit_print_date(time_t secs, char *format); | 28 | extern void cgit_print_date(time_t secs, char *format); |
27 | extern void cgit_print_age(time_t t, time_t max_relative, char *format); | 29 | extern void cgit_print_age(time_t t, time_t max_relative, char *format); |
28 | extern void cgit_print_http_headers(struct cgit_context *ctx); | 30 | extern void cgit_print_http_headers(struct cgit_context *ctx); |
29 | extern void cgit_print_docstart(struct cgit_context *ctx); | 31 | extern void cgit_print_docstart(struct cgit_context *ctx); |
30 | extern void cgit_print_docend(); | 32 | extern void cgit_print_docend(); |
31 | extern void cgit_print_pageheader(struct cgit_context *ctx); | 33 | extern void cgit_print_pageheader(struct cgit_context *ctx); |
32 | extern void cgit_print_filemode(unsigned short mode); | 34 | extern void cgit_print_filemode(unsigned short mode); |
33 | extern void cgit_print_snapshot_links(const char *repo, const char *head, | 35 | extern void cgit_print_snapshot_links(const char *repo, const char *head, |
34 | const char *hex, int snapshots); | 36 | const char *hex, int snapshots); |
35 | 37 | ||
36 | #endif /* UI_SHARED_H */ | 38 | #endif /* UI_SHARED_H */ |