-rw-r--r-- | cgit.h | 4 | ||||
-rw-r--r-- | cgitrc | 10 | ||||
-rw-r--r-- | shared.c | 14 | ||||
-rw-r--r-- | ui-log.c | 17 |
4 files changed, 40 insertions, 5 deletions
@@ -35,12 +35,14 @@ struct repoinfo { char *path; char *desc; char *owner; char *defbranch; char *module_link; int snapshots; + int enable_log_filecount; + int enable_log_linecount; }; struct repolist { int length; int count; struct repoinfo *repos; @@ -78,12 +80,14 @@ extern char *cgit_module_link; extern char *cgit_virtual_root; extern char *cgit_script_name; 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; extern int cgit_cache_dynamic_ttl; extern int cgit_cache_static_ttl; extern int cgit_cache_max_create_time; @@ -9,12 +9,20 @@ ## Enable/disable snapshots by default. This can be overridden per repo #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 ## ## instead of ## @@ -94,7 +102,9 @@ #repo.url=cgit #repo.name=cgit #repo.desc=the caching cgi for git #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 @@ -19,12 +19,14 @@ char *cgit_module_link = "./?repo=%s&page=commit&id=%s"; char *cgit_virtual_root = NULL; char *cgit_script_name = CGIT_SCRIPT_NAME; 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; int cgit_cache_dynamic_ttl = 5; int cgit_cache_static_ttl = -1; int cgit_cache_max_create_time = 5; @@ -82,12 +84,14 @@ struct repoinfo *add_repo(const char *url) ret->name = ret->url; ret->path = NULL; ret->desc = NULL; 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; } void cgit_global_config_cb(const char *name, const char *value) { @@ -104,12 +108,16 @@ void cgit_global_config_cb(const char *name, const char *value) else if (!strcmp(name, "virtual-root")) cgit_virtual_root = xstrdup(value); else if (!strcmp(name, "nocache")) 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")) cgit_cache_root_ttl = atoi(value); else if (!strcmp(name, "cache-repo-ttl")) cgit_cache_repo_ttl = atoi(value); @@ -133,13 +141,17 @@ void cgit_global_config_cb(const char *name, const char *value) cgit_repo->desc = xstrdup(value); else if (cgit_repo && !strcmp(name, "repo.owner")) cgit_repo->owner = xstrdup(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")) cgit_read_config(value, cgit_global_config_cb); } @@ -16,12 +16,13 @@ void count_lines(char *line, int size) lines++; } void inspect_files(struct diff_filepair *pair) { files++; + if (cgit_repo->enable_log_linecount) cgit_diff_files(pair->one->sha1, pair->two->sha1, count_lines); } void print_commit(struct commit *commit) { char buf[32]; @@ -36,19 +37,23 @@ void print_commit(struct commit *commit) html("</td><td>"); char *qry = fmt("h=%s", sha1_to_hex(commit->object.sha1)); char *url = cgit_pageurl(cgit_query_repo, "commit", qry); html_link_open(url, NULL, NULL); html_ntxt(cgit_max_msg_len, info->subject); html_link_close(); + 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"); cgit_free_commitinfo(info); } @@ -78,16 +83,20 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path) compile_grep_patterns(rev.grep_filter); } prepare_revision_walk(&rev); 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; for (i = 0; i < ofs && (commit = get_revision(&rev)) != NULL; i++) { free(commit->buffer); |