about summary refs log tree commit diff
path: root/cgit.c
diff options
context:
space:
mode:
authorJohan Herland <johan@herland.net>2010-11-15 18:39:50 +0100
committerLars Hjemli <hjemli@gmail.com>2010-11-16 08:18:36 +0100
commit9a8d39c668b98464bac97d4e5442966de63f97b2 (patch)
treeee1a7766d6d9365ae45f694939c20cab811abd84 /cgit.c
parentui-log: Change display of full commit messages (and notes) (diff)
downloadcgit-pink-9a8d39c668b98464bac97d4e5442966de63f97b2.tar.gz
cgit-pink-9a8d39c668b98464bac97d4e5442966de63f97b2.zip
ui-log: Implement support for commit graphs
Teach CGit to print an ASCII art commit graph to the left of the commit
message, similar to 'git log --graph'. The graph adds extra lines (table
rows) to the log when needed to add/remove/shuffle edges in the graph.

When 'showmsg' is enabled, the graph is automatically padded to account
for the extra lines added by the commit message/notes.

This feature is controlled by a new config variable: "enable-commit-graph"
(disabled by default), and individual repos can control it by setting
"repo.enable-commit-graph".

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to '')
-rw-r--r--cgit.c6
-rw-r--r--cgit.css7
2 files changed, 12 insertions, 1 deletions
diff --git a/cgit.c b/cgit.c
index 412fbf0..53ab68d 100644
--- a/cgit.c
+++ b/cgit.c
@@ -57,6 +57,8 @@ void repo_config(struct cgit_repo *repo, const char *name, const char *value)
 		repo->defbranch = xstrdup(value);
 	else if (!strcmp(name, "snapshots"))
 		repo->snapshots = ctx.cfg.snapshots & cgit_parse_snapshots_mask(value);
+	else if (!strcmp(name, "enable-commit-graph"))
+		repo->enable_commit_graph = ctx.cfg.enable_commit_graph * atoi(value);
 	else if (!strcmp(name, "enable-log-filecount"))
 		repo->enable_log_filecount = ctx.cfg.enable_log_filecount * atoi(value);
 	else if (!strcmp(name, "enable-log-linecount"))
@@ -141,6 +143,8 @@ void config_cb(const char *name, const char *value)
 		ctx.cfg.enable_gitweb_owner = atoi(value);
 	else if (!strcmp(name, "enable-index-links"))
 		ctx.cfg.enable_index_links = atoi(value);
+	else if (!strcmp(name, "enable-commit-graph"))
+		ctx.cfg.enable_commit_graph = atoi(value);
 	else if (!strcmp(name, "enable-log-filecount"))
 		ctx.cfg.enable_log_filecount = atoi(value);
 	else if (!strcmp(name, "enable-log-linecount"))
@@ -540,6 +544,8 @@ void print_repo(FILE *f, struct cgit_repo *repo)
 		fprintf(f, "repo.section=%s\n", repo->section);
 	if (repo->clone_url)
 		fprintf(f, "repo.clone-url=%s\n", repo->clone_url);
+	fprintf(f, "repo.enable-commit-graph=%d\n",
+	        repo->enable_commit_graph);
 	fprintf(f, "repo.enable-log-filecount=%d\n",
 	        repo->enable_log_filecount);
 	fprintf(f, "repo.enable-log-linecount=%d\n",
diff --git a/cgit.css b/cgit.css
index 7a5f423..7600e84 100644
--- a/cgit.css
+++ b/cgit.css
@@ -153,6 +153,11 @@ table.list td {
 	padding: 0.1em 0.5em 0.1em 0.5em;
 }
 
+table.list td.commitgraph {
+	font-family: monospace;
+	white-space: pre;
+}
+
 table.list td.logsubject {
 	font-family: monospace;
 	font-weight: bold;
@@ -731,4 +736,4 @@ table.ssdiff td.space {
 
 table.ssdiff td.space div {
 	min-height: 3em;
-}
\ No newline at end of file
+}