summaryrefslogtreecommitdiffabout
path: root/cgit.c
authorJason A. Donenfeld <Jason@zx2c4.com>2010-07-29 15:52:29 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2010-08-04 01:09:32 (UTC)
commit3516502aa0df95ecc241caa30161741f59e4e600 (patch) (unidiff)
tree345978808d18796444729f74eb139c8289bcb1c2 /cgit.c
parentf9143171267e39f66a02ad2ecb0da2e8cc7f4142 (diff)
downloadcgit-3516502aa0df95ecc241caa30161741f59e4e600.zip
cgit-3516502aa0df95ecc241caa30161741f59e4e600.tar.gz
cgit-3516502aa0df95ecc241caa30161741f59e4e600.tar.bz2
Add support for 'project-list' option
This option specifies the location of a projectlist file as used by gitweb - when 'scan-tree' is later specified, only the projects listed in the projectlist file will be added. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'cgit.c') (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/cgit.c b/cgit.c
index c263872..2364d1c 100644
--- a/cgit.c
+++ b/cgit.c
@@ -183,2 +183,4 @@ void config_cb(const char *name, const char *value)
183 ctx.cfg.max_commit_count = atoi(value); 183 ctx.cfg.max_commit_count = atoi(value);
184 else if (!strcmp(name, "project-list"))
185 ctx.cfg.project_list = xstrdup(expand_macros(value));
184 else if (!strcmp(name, "scan-path")) 186 else if (!strcmp(name, "scan-path"))
@@ -186,2 +188,5 @@ void config_cb(const char *name, const char *value)
186 process_cached_repolist(expand_macros(value)); 188 process_cached_repolist(expand_macros(value));
189 else if (ctx.cfg.project_list)
190 scan_projects(expand_macros(value),
191 ctx.cfg.project_list, repo_config);
187 else 192 else
@@ -297,2 +302,3 @@ static void prepare_context(struct cgit_context *ctx)
297 ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s"; 302 ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s";
303 ctx->cfg.project_list = NULL;
298 ctx->cfg.renamelimit = -1; 304 ctx->cfg.renamelimit = -1;
@@ -576,3 +582,6 @@ static int generate_cached_repolist(const char *path, const char *cached_rc)
576 idx = cgit_repolist.count; 582 idx = cgit_repolist.count;
577 scan_tree(path, repo_config); 583 if (ctx.cfg.project_list)
584 scan_projects(path, ctx.cfg.project_list, repo_config);
585 else
586 scan_tree(path, repo_config);
578 print_repolist(f, &cgit_repolist, idx); 587 print_repolist(f, &cgit_repolist, idx);
@@ -590,5 +599,8 @@ static void process_cached_repolist(const char *path)
590 time_t age; 599 time_t age;
600 unsigned long hash;
591 601
592 cached_rc = xstrdup(fmt("%s/rc-%8x", ctx.cfg.cache_root, 602 hash = hash_str(path);
593 hash_str(path))); 603 if (ctx.cfg.project_list)
604 hash += hash_str(ctx.cfg.project_list);
605 cached_rc = xstrdup(fmt("%s/rc-%8x", ctx.cfg.cache_root, hash));
594 606
@@ -599,4 +611,9 @@ static void process_cached_repolist(const char *path)
599 */ 611 */
600 if (generate_cached_repolist(path, cached_rc)) 612 if (generate_cached_repolist(path, cached_rc)) {
601 scan_tree(path, repo_config); 613 if (ctx.cfg.project_list)
614 scan_projects(path, ctx.cfg.project_list,
615 repo_config);
616 else
617 scan_tree(path, repo_config);
618 }
602 return; 619 return;