From mboxrd@z Thu Jan 1 00:00:00 1970 From: jamie.couture at gmail.com (Jamie Couture) Date: Tue, 9 Oct 2012 06:56:14 -0400 Subject: [PATCH] add git config parsing during scan-path In-Reply-To: References: Message-ID: <1349780174-3274-1-git-send-email-jamie.couture@gmail.com> Signed-off-by: Jamie Couture --- cgit.c | 3 +++ cgit.h | 1 + scan-tree.c | 18 ++++++++++++------ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/cgit.c b/cgit.c index 1ec02e7..910bf1d 100644 --- a/cgit.c +++ b/cgit.c @@ -183,6 +183,8 @@ void config_cb(const char *name, const char *value) ctx.cfg.enable_subject_links = atoi(value); else if (!strcmp(name, "enable-tree-linenumbers")) ctx.cfg.enable_tree_linenumbers = atoi(value); + else if (!strcmp(name, "enable-git-config")) + ctx.cfg.enable_git_config = atoi(value); else if (!strcmp(name, "max-stats")) ctx.cfg.max_stats = cgit_find_stats_period(value, NULL); else if (!strcmp(name, "cache-size")) @@ -348,6 +350,7 @@ static void prepare_context(struct cgit_context *ctx) ctx->cfg.enable_gitweb_section = 1; ctx->cfg.enable_http_clone = 1; ctx->cfg.enable_tree_linenumbers = 1; + ctx->cfg.enable_git_config = 0; ctx->cfg.max_repo_count = 50; ctx->cfg.max_commit_count = 50; ctx->cfg.max_lock_attempts = 5; diff --git a/cgit.h b/cgit.h index 79ba7ad..4ac6f80 100644 --- a/cgit.h +++ b/cgit.h @@ -211,6 +211,7 @@ struct cgit_config { int enable_remote_branches; int enable_subject_links; int enable_tree_linenumbers; + int enable_git_config; int local_time; int max_atom_items; int max_repo_count; diff --git a/scan-tree.c b/scan-tree.c index 6d1941e..0dbfc13 100644 --- a/scan-tree.c +++ b/scan-tree.c @@ -64,11 +64,13 @@ static int gitweb_config(const char *key, const char *value, void *cb) desc = xstrdup(value); else if (ctx.cfg.enable_gitweb_section && !strcmp(key, "gitweb.category")) section = xstrdup(value); + else if (!prefixcmp(key, "cgit.")) { + config_fn(repo, key + 5, value); + } + return 0; } - - static char *xstrrchr(char *s, char *from, int c) { while (from >= s && *from != c) @@ -166,10 +168,14 @@ static void add_repo(const char *base, const char *path, repo_config_fn fn) } } - p = fmt("%s/cgitrc", path); - if (!stat(p, &st)) { - config_fn = fn; - parse_configfile(xstrdup(p), &repo_config); + config_fn = fn; + if (ctx.cfg.enable_git_config) { + git_config_from_file(gitweb_config, fmt("%s/config", path), NULL); + } else { + p = fmt("%s/cgitrc", path); + if (!stat(p, &st)) { + parse_configfile(xstrdup(p), &repo_config); + } } free(rel); -- 1.7.11.4