summaryrefslogtreecommitdiffabout
authorJohan Herland <johan@herland.net>2010-11-15 17:39:51 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2010-11-16 07:18:37 (UTC)
commit268b34af23cdcac87aed3300bfe6154cbc65753e (patch) (unidiff)
treefccbebc21c004f5967947275ba5086589086ec36
parent9a8d39c668b98464bac97d4e5442966de63f97b2 (diff)
downloadcgit-268b34af23cdcac87aed3300bfe6154cbc65753e.zip
cgit-268b34af23cdcac87aed3300bfe6154cbc65753e.tar.gz
cgit-268b34af23cdcac87aed3300bfe6154cbc65753e.tar.bz2
ui-log: Colorize commit graph
Use the existing coloring logic in Git's graph code to color the lines between commits in the commit graph. Whereas Git normally uses ANSI color escapes to produce colors, we here use graph_set_column_colors() to replace those with HTML color escapes, that embed the graph lines in <span> tags that apply the desired color using CSS. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--cgit.css24
-rw-r--r--ui-log.c19
2 files changed, 43 insertions, 0 deletions
diff --git a/cgit.css b/cgit.css
index 7600e84..1ebef55 100644
--- a/cgit.css
+++ b/cgit.css
@@ -137,48 +137,72 @@ table.list tr:hover {
137table.list tr.nohover:hover { 137table.list tr.nohover:hover {
138 background: white; 138 background: white;
139} 139}
140 140
141table.list th { 141table.list th {
142 font-weight: bold; 142 font-weight: bold;
143 /* color: #888; 143 /* color: #888;
144 border-top: dashed 1px #888; 144 border-top: dashed 1px #888;
145 border-bottom: dashed 1px #888; 145 border-bottom: dashed 1px #888;
146 */ 146 */
147 padding: 0.1em 0.5em 0.05em 0.5em; 147 padding: 0.1em 0.5em 0.05em 0.5em;
148 vertical-align: baseline; 148 vertical-align: baseline;
149} 149}
150 150
151table.list td { 151table.list td {
152 border: none; 152 border: none;
153 padding: 0.1em 0.5em 0.1em 0.5em; 153 padding: 0.1em 0.5em 0.1em 0.5em;
154} 154}
155 155
156table.list td.commitgraph { 156table.list td.commitgraph {
157 font-family: monospace; 157 font-family: monospace;
158 white-space: pre; 158 white-space: pre;
159} 159}
160 160
161table.list td.commitgraph .column1 {
162 color: #a00;
163}
164
165table.list td.commitgraph .column2 {
166 color: #0a0;
167}
168
169table.list td.commitgraph .column3 {
170 color: #aa0;
171}
172
173table.list td.commitgraph .column4 {
174 color: #00a;
175}
176
177table.list td.commitgraph .column5 {
178 color: #a0a;
179}
180
181table.list td.commitgraph .column6 {
182 color: #0aa;
183}
184
161table.list td.logsubject { 185table.list td.logsubject {
162 font-family: monospace; 186 font-family: monospace;
163 font-weight: bold; 187 font-weight: bold;
164} 188}
165 189
166table.list td.logmsg { 190table.list td.logmsg {
167 font-family: monospace; 191 font-family: monospace;
168 white-space: pre; 192 white-space: pre;
169 padding: 0 0.5em; 193 padding: 0 0.5em;
170} 194}
171 195
172table.list td a { 196table.list td a {
173 color: black; 197 color: black;
174} 198}
175 199
176table.list td a.ls-dir { 200table.list td a.ls-dir {
177 font-weight: bold; 201 font-weight: bold;
178 color: #00f; 202 color: #00f;
179} 203}
180 204
181table.list td a:hover { 205table.list td a:hover {
182 color: #00f; 206 color: #00f;
183} 207}
184 208
diff --git a/ui-log.c b/ui-log.c
index 0d86fd5..5cf66cb 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -1,39 +1,54 @@
1/* ui-log.c: functions for log output 1/* ui-log.c: functions for log output
2 * 2 *
3 * Copyright (C) 2006 Lars Hjemli 3 * Copyright (C) 2006 Lars Hjemli
4 * 4 *
5 * Licensed under GNU General Public License v2 5 * Licensed under GNU General Public License v2
6 * (see COPYING for full license text) 6 * (see COPYING for full license text)
7 */ 7 */
8 8
9#include "cgit.h" 9#include "cgit.h"
10#include "html.h" 10#include "html.h"
11#include "ui-shared.h" 11#include "ui-shared.h"
12#include "vector.h" 12#include "vector.h"
13 13
14int files, add_lines, rem_lines; 14int files, add_lines, rem_lines;
15 15
16/*
17 * The list of available column colors in the commit graph.
18 */
19static const char *column_colors_html[] = {
20 "<span class='column1'>",
21 "<span class='column2'>",
22 "<span class='column3'>",
23 "<span class='column4'>",
24 "<span class='column5'>",
25 "<span class='column6'>",
26 "</span>",
27};
28
29#define COLUMN_COLORS_HTML_MAX (ARRAY_SIZE(column_colors_html) - 1)
30
16void count_lines(char *line, int size) 31void count_lines(char *line, int size)
17{ 32{
18 if (size <= 0) 33 if (size <= 0)
19 return; 34 return;
20 35
21 if (line[0] == '+') 36 if (line[0] == '+')
22 add_lines++; 37 add_lines++;
23 38
24 else if (line[0] == '-') 39 else if (line[0] == '-')
25 rem_lines++; 40 rem_lines++;
26} 41}
27 42
28void inspect_files(struct diff_filepair *pair) 43void inspect_files(struct diff_filepair *pair)
29{ 44{
30 unsigned long old_size = 0; 45 unsigned long old_size = 0;
31 unsigned long new_size = 0; 46 unsigned long new_size = 0;
32 int binary = 0; 47 int binary = 0;
33 48
34 files++; 49 files++;
35 if (ctx.repo->enable_log_linecount) 50 if (ctx.repo->enable_log_linecount)
36 cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, 51 cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size,
37 &new_size, &binary, 0, ctx.qry.ignorews, 52 &new_size, &binary, 0, ctx.qry.ignorews,
38 count_lines); 53 count_lines);
39} 54}
@@ -252,49 +267,53 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
252 if (!strcmp(grep, "grep") || !strcmp(grep, "author") || 267 if (!strcmp(grep, "grep") || !strcmp(grep, "author") ||
253 !strcmp(grep, "committer")) { 268 !strcmp(grep, "committer")) {
254 arg = fmt("--%s=%s", grep, pattern); 269 arg = fmt("--%s=%s", grep, pattern);
255 vector_push(&vec, &arg, 0); 270 vector_push(&vec, &arg, 0);
256 } 271 }
257 if (!strcmp(grep, "range")) { 272 if (!strcmp(grep, "range")) {
258 /* Split the pattern at whitespace and add each token 273 /* Split the pattern at whitespace and add each token
259 * as a revision expression. Do not accept other 274 * as a revision expression. Do not accept other
260 * rev-list options. Also, replace the previously 275 * rev-list options. Also, replace the previously
261 * pushed tip (it's no longer relevant). 276 * pushed tip (it's no longer relevant).
262 */ 277 */
263 vec.count--; 278 vec.count--;
264 while ((arg = next_token(&pattern))) { 279 while ((arg = next_token(&pattern))) {
265 if (*arg == '-') { 280 if (*arg == '-') {
266 fprintf(stderr, "Bad range expr: %s\n", 281 fprintf(stderr, "Bad range expr: %s\n",
267 arg); 282 arg);
268 break; 283 break;
269 } 284 }
270 vector_push(&vec, &arg, 0); 285 vector_push(&vec, &arg, 0);
271 } 286 }
272 } 287 }
273 } 288 }
274 if (ctx.repo->enable_commit_graph) { 289 if (ctx.repo->enable_commit_graph) {
275 static const char *graph_arg = "--graph"; 290 static const char *graph_arg = "--graph";
291 static const char *color_arg = "--color";
276 vector_push(&vec, &graph_arg, 0); 292 vector_push(&vec, &graph_arg, 0);
293 vector_push(&vec, &color_arg, 0);
294 graph_set_column_colors(column_colors_html,
295 COLUMN_COLORS_HTML_MAX);
277 } 296 }
278 297
279 if (path) { 298 if (path) {
280 arg = "--"; 299 arg = "--";
281 vector_push(&vec, &arg, 0); 300 vector_push(&vec, &arg, 0);
282 vector_push(&vec, &path, 0); 301 vector_push(&vec, &path, 0);
283 } 302 }
284 303
285 /* Make sure the vector is NULL-terminated */ 304 /* Make sure the vector is NULL-terminated */
286 vector_push(&vec, NULL, 0); 305 vector_push(&vec, NULL, 0);
287 vec.count--; 306 vec.count--;
288 307
289 init_revisions(&rev, NULL); 308 init_revisions(&rev, NULL);
290 rev.abbrev = DEFAULT_ABBREV; 309 rev.abbrev = DEFAULT_ABBREV;
291 rev.commit_format = CMIT_FMT_DEFAULT; 310 rev.commit_format = CMIT_FMT_DEFAULT;
292 rev.verbose_header = 1; 311 rev.verbose_header = 1;
293 rev.show_root_diff = 0; 312 rev.show_root_diff = 0;
294 setup_revisions(vec.count, vec.data, &rev, NULL); 313 setup_revisions(vec.count, vec.data, &rev, NULL);
295 load_ref_decorations(DECORATE_FULL_REFS); 314 load_ref_decorations(DECORATE_FULL_REFS);
296 rev.show_decorations = 1; 315 rev.show_decorations = 1;
297 rev.grep_filter.regflags |= REG_ICASE; 316 rev.grep_filter.regflags |= REG_ICASE;
298 compile_grep_patterns(&rev.grep_filter); 317 compile_grep_patterns(&rev.grep_filter);
299 prepare_revision_walk(&rev); 318 prepare_revision_walk(&rev);
300 319