cgit

commit 268b34af23cdcac87aed3300bfe6154cbc65753e

Author: Johan Herland <johan@herland.net>

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>

 cgit.css | 24 ++++++++++++++++++++++++
 ui-log.c | 19 +++++++++++++++++++


diff --git a/cgit.css b/cgit.css
index 7600e847544eb3c6114c8b2599c7cda394b2ea59..1ebef557d17f61f507f373c26ed15ffc3f1bb9d3 100644
--- a/cgit.css
+++ b/cgit.css
@@ -158,6 +158,30 @@ 	font-family: monospace;
 	white-space: pre;
 }
 
+table.list td.commitgraph .column1 {
+	color: #a00;
+}
+
+table.list td.commitgraph .column2 {
+	color: #0a0;
+}
+
+table.list td.commitgraph .column3 {
+	color: #aa0;
+}
+
+table.list td.commitgraph .column4 {
+	color: #00a;
+}
+
+table.list td.commitgraph .column5 {
+	color: #a0a;
+}
+
+table.list td.commitgraph .column6 {
+	color: #0aa;
+}
+
 table.list td.logsubject {
 	font-family: monospace;
 	font-weight: bold;




diff --git a/ui-log.c b/ui-log.c
index 0d86fd54bcfc0ba2de0902a6d790eee9cf87efb2..5cf66cbd0828d764f59a2b6b012e1a80eb9ff622 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -13,6 +13,21 @@ #include "vector.h"
 
 int files, add_lines, rem_lines;
 
+/*
+ * The list of available column colors in the commit graph.
+ */
+static const char *column_colors_html[] = {
+	"<span class='column1'>",
+	"<span class='column2'>",
+	"<span class='column3'>",
+	"<span class='column4'>",
+	"<span class='column5'>",
+	"<span class='column6'>",
+	"</span>",
+};
+
+#define COLUMN_COLORS_HTML_MAX (ARRAY_SIZE(column_colors_html) - 1)
+
 void count_lines(char *line, int size)
 {
 	if (size <= 0)
@@ -273,7 +288,11 @@ 		}
 	}
 	if (ctx.repo->enable_commit_graph) {
 		static const char *graph_arg = "--graph";
+		static const char *color_arg = "--color";
 		vector_push(&vec, &graph_arg, 0);
+		vector_push(&vec, &color_arg, 0);
+		graph_set_column_colors(column_colors_html,
+					COLUMN_COLORS_HTML_MAX);
 	}
 
 	if (path) {