author | Jason 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) |
commit | 3516502aa0df95ecc241caa30161741f59e4e600 (patch) (unidiff) | |
tree | 345978808d18796444729f74eb139c8289bcb1c2 /cgit.c | |
parent | f9143171267e39f66a02ad2ecb0da2e8cc7f4142 (diff) | |
download | cgit-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>
-rw-r--r-- | cgit.c | 27 |
1 files changed, 22 insertions, 5 deletions
@@ -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; |