about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--cgit.h4
-rw-r--r--cgitrc10
-rw-r--r--shared.c14
-rw-r--r--ui-log.c33
4 files changed, 48 insertions, 13 deletions
diff --git a/cgit.h b/cgit.h
index 290401f..ed100a7 100644
--- a/cgit.h
+++ b/cgit.h
@@ -38,6 +38,8 @@ struct repoinfo {
 	char *defbranch;
 	char *module_link;
 	int snapshots;
+	int enable_log_filecount;
+	int enable_log_linecount;
 };
 
 struct repolist {
@@ -81,6 +83,8 @@ extern char *cgit_cache_root;
 
 extern int cgit_nocache;
 extern int cgit_snapshots;
+extern int cgit_enable_log_filecount;
+extern int cgit_enable_log_linecount;
 extern int cgit_max_lock_attempts;
 extern int cgit_cache_root_ttl;
 extern int cgit_cache_repo_ttl;
diff --git a/cgitrc b/cgitrc
index f923cc4..eaa9ce3 100644
--- a/cgitrc
+++ b/cgitrc
@@ -12,6 +12,14 @@
 #snapshots=0
 
 
+## Enable/disable display of 'number of files changed' in log view
+#enable-log-filecount=0
+
+
+## Enable/disable display of 'number of lines changed' in log view
+#enable-log-linecount=0
+
+
 ## Specify a root for virtual urls. This makes cgit generate urls like
 ##
 ##    http://localhost/git/repo/log/?id=master
@@ -97,4 +105,6 @@
 #repo.path=/pub/git/cgit
 #repo.owner=Lars Hjemli
 #repo.snapshots=1				# override a sitewide snapshot-setting
+#repo.enable-log-filecount=0			# override the default filecount setting
+#repo.enable-log-linecount=0			# override the default linecount setting
 #repo.module-link=/git/%s/commit/?id=%s		# override the standard module-link
diff --git a/shared.c b/shared.c
index 752ceac..53cd9b0 100644
--- a/shared.c
+++ b/shared.c
@@ -22,6 +22,8 @@ char *cgit_cache_root   = "/var/cache/cgit";
 
 int cgit_nocache               =  0;
 int cgit_snapshots             =  0;
+int cgit_enable_log_filecount  =  0;
+int cgit_enable_log_linecount  =  0;
 int cgit_max_lock_attempts     =  5;
 int cgit_cache_root_ttl        =  5;
 int cgit_cache_repo_ttl        =  5;
@@ -85,6 +87,8 @@ struct repoinfo *add_repo(const char *url)
 	ret->owner = NULL;
 	ret->defbranch = "master";
 	ret->snapshots = cgit_snapshots;
+	ret->enable_log_filecount = cgit_enable_log_filecount;
+	ret->enable_log_linecount = cgit_enable_log_linecount;
 	ret->module_link = cgit_module_link;
 	return ret;
 }
@@ -107,6 +111,10 @@ void cgit_global_config_cb(const char *name, const char *value)
 		cgit_nocache = atoi(value);
 	else if (!strcmp(name, "snapshots"))
 		cgit_snapshots = atoi(value);
+	else if (!strcmp(name, "enable-log-filecount"))
+		cgit_enable_log_filecount = atoi(value);
+	else if (!strcmp(name, "enable-log-linecount"))
+		cgit_enable_log_linecount = atoi(value);
 	else if (!strcmp(name, "cache-root"))
 		cgit_cache_root = xstrdup(value);
 	else if (!strcmp(name, "cache-root-ttl"))
@@ -136,7 +144,11 @@ void cgit_global_config_cb(const char *name, const char *value)
 	else if (cgit_repo && !strcmp(name, "repo.defbranch"))
 		cgit_repo->defbranch = xstrdup(value);
 	else if (cgit_repo && !strcmp(name, "repo.snapshots"))
-		cgit_repo->snapshots = atoi(value);
+		cgit_repo->snapshots = cgit_snapshots * atoi(value);
+	else if (cgit_repo && !strcmp(name, "repo.enable-log-filecount"))
+		cgit_repo->enable_log_filecount = cgit_enable_log_filecount * atoi(value);
+	else if (cgit_repo && !strcmp(name, "repo.enable-log-linecount"))
+		cgit_repo->enable_log_linecount = cgit_enable_log_linecount * atoi(value);
 	else if (cgit_repo && !strcmp(name, "repo.module-link"))
 		cgit_repo->module_link= xstrdup(value);
 	else if (!strcmp(name, "include"))
diff --git a/ui-log.c b/ui-log.c
index 9d0ec02..4237921 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -19,7 +19,8 @@ void count_lines(char *line, int size)
 void inspect_files(struct diff_filepair *pair)
 {
 	files++;
-	cgit_diff_files(pair->one->sha1, pair->two->sha1, count_lines);
+	if (cgit_repo->enable_log_linecount)
+		cgit_diff_files(pair->one->sha1, pair->two->sha1, count_lines);
 }
 
 void print_commit(struct commit *commit)
@@ -39,13 +40,17 @@ void print_commit(struct commit *commit)
 	html_link_open(url, NULL, NULL);
 	html_ntxt(cgit_max_msg_len, info->subject);
 	html_link_close();
-	files = 0;
-	lines = 0;
-	cgit_diff_commit(commit, inspect_files);
-	html("</td><td class='right'>");
-	htmlf("%d", files);
-	html("</td><td class='right'>");
-	htmlf("%d", lines);
+	if (cgit_repo->enable_log_filecount) {
+		files = 0;
+		lines = 0;
+		cgit_diff_commit(commit, inspect_files);
+		html("</td><td class='right'>");
+		htmlf("%d", files);
+		if (cgit_repo->enable_log_linecount) {
+			html("</td><td class='right'>");
+			htmlf("%d", lines);
+		}
+	}
 	html("</td><td>");
 	html_txt(info->author);
 	html("</td></tr>\n");
@@ -81,10 +86,14 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path)
 
 	html("<table class='list nowrap'>");
 	html("<tr class='nohover'><th class='left'>Date</th>"
-	     "<th class='left'>Message</th>"
-	     "<th class='left'>Files</th>"
-	     "<th class='left'>Lines</th>"
-	     "<th class='left'>Author</th></tr>\n");
+	     "<th class='left'>Message</th>");
+
+	if (cgit_repo->enable_log_filecount) {
+		html("<th class='left'>Files</th>");
+		if (cgit_repo->enable_log_linecount)
+			html("<th class='left'>Lines</th>");
+	}
+	html("<th class='left'>Author</th></tr>\n");
 
 	if (ofs<0)
 		ofs = 0;