Signed-off-by: Jamie Couture <[email protected]>
---
 cgit.c      |  3 +++
 cgit.h      |  1 +
 scan-tree.c | 19 +++++++++++++++----
 3 files changed, 19 insertions(+), 4 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..7e711d5 100644
--- a/scan-tree.c
+++ b/scan-tree.c
@@ -67,7 +67,14 @@ static int gitweb_config(const char *key, const char *value, 
void *cb)
        return 0;
 }
 
+static int cgit_repo_config(const char *key, const char *value, void *cb)
+{
+       if (!prefixcmp(key, "cgit.")) {
+               config_fn(repo, key + 5, value);
+       }
 
+       return 0;
+}
 
 static char *xstrrchr(char *s, char *from, int c)
 {
@@ -166,10 +173,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(cgit_repo_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


_______________________________________________
cgit mailing list
[email protected]
http://hjemli.net/mailman/listinfo/cgit

Reply via email to