summary refs log tree commit diff
diff options
context:
space:
mode:
authorOndrej Jirman <ondrej.jirman@zonio.net>2007-05-26 03:33:41 +0200
committerLars Hjemli <hjemli@gmail.com>2007-05-31 10:25:48 +0200
commit51a960a3ca6b0cade97db287a342996c3e1de48d (patch)
treed3360cd301c9e13d7aa9492e6628bf8d71736608
parent6130231ed5e7475836a44d79d5f09e300e71a407 (diff)
Implemented configurable HEAD shortlog on summary page.
This mirrors similiar functionality in gitweb. After clicking on
project on projectlist you will immediatelly see quick summary
of last N commits on HEAD.

[lh: changed from HEAD to cgit_query_head]

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r--cgit.h1
-rw-r--r--cgitrc5
-rw-r--r--shared.c3
-rw-r--r--ui-summary.c8
4 files changed, 16 insertions, 1 deletions
diff --git a/cgit.h b/cgit.h
index d6bcde2..2f3fca1 100644
--- a/cgit.h
+++ b/cgit.h
@@ -127,6 +127,7 @@ extern int cgit_cache_repo_ttl;
 extern int cgit_cache_dynamic_ttl;
 extern int cgit_cache_static_ttl;
 extern int cgit_cache_max_create_time;
+extern int cgit_summary_log;
 
 extern int cgit_max_msg_len;
 extern int cgit_max_repodesc_len;
diff --git a/cgitrc b/cgitrc
index 054a708..0f602e4 100644
--- a/cgitrc
+++ b/cgitrc
@@ -20,6 +20,11 @@
 #enable-log-linecount=0
 
 
+## Enable/disable display of HEAD shortlog in summary view. Set it to maximum
+## number of commits that should be displayed
+#summary-log=0
+
+
 ## Specify a root for virtual urls. This makes cgit generate urls like
 ##
 ##    http://localhost/git/repo/log/?id=master
diff --git a/shared.c b/shared.c
index e3123a8..b6d2fa1 100644
--- a/shared.c
+++ b/shared.c
@@ -34,6 +34,7 @@ int cgit_cache_repo_ttl        =  5;
 int cgit_cache_dynamic_ttl     =  5;
 int cgit_cache_static_ttl      = -1;
 int cgit_cache_max_create_time =  5;
+int cgit_summary_log           =  0;
 
 int cgit_max_msg_len = 60;
 int cgit_max_repodesc_len = 60;
@@ -164,6 +165,8 @@ void cgit_global_config_cb(const char *name, const char *value)
 		cgit_max_repodesc_len = atoi(value);
 	else if (!strcmp(name, "max-commit-count"))
 		cgit_max_commit_count = atoi(value);
+	else if (!strcmp(name, "summary-log"))
+		cgit_summary_log = atoi(value);
 	else if (!strcmp(name, "agefile"))
 		cgit_agefile = xstrdup(value);
 	else if (!strcmp(name, "repo.group"))
diff --git a/ui-summary.c b/ui-summary.c
index 15e8aec..4bda4c2 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -19,6 +19,9 @@ static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1,
 
 	strncpy(buf, refname, sizeof(buf));
 	commit = lookup_commit(sha1);
+	// object is not really parsed at this point, because of some fallout
+	// from previous calls to git functions in cgit_print_log()
+	commit->object.parsed = 0;
 	if (commit && !parse_commit(commit)){
 		info = cgit_parse_commit(commit);
 		html("<tr><td>");
@@ -203,8 +206,11 @@ void cgit_print_summary()
 	if (cgit_repo->readme)
 		html_include(cgit_repo->readme);
 	html("</div>");
-
+	if (cgit_summary_log > 0)
+		cgit_print_log(cgit_query_head, 0, cgit_summary_log, NULL, NULL, 0);
 	html("<table class='list nowrap'>");
+	if (cgit_summary_log > 0)
+		html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>");
 	cgit_print_branches();
 	html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>");
 	cgit_print_tags();