diff options
| author | Lars Hjemli <hjemli@gmail.com> | 2010-08-04 03:10:29 +0200 | 
|---|---|---|
| committer | Lars Hjemli <hjemli@gmail.com> | 2010-08-04 03:10:29 +0200 | 
| commit | aec9c245e7eaf444c7ae1851e3eda3b30748950f (patch) | |
| tree | 04d5e945781441f2589ae8eb44bee8d5a2b17c2b /cgit.c | |
| parent | Merge branch 'js/notes' (diff) | |
| parent | Add support for 'enable-gitweb-owner' option (diff) | |
| download | cgit-aec9c245e7eaf444c7ae1851e3eda3b30748950f.tar.gz cgit-aec9c245e7eaf444c7ae1851e3eda3b30748950f.tar.bz2 cgit-aec9c245e7eaf444c7ae1851e3eda3b30748950f.zip | |
Merge branch 'jd/gitolite'
Diffstat (limited to '')
| -rw-r--r-- | cgit.c | 33 | 
1 files changed, 28 insertions, 5 deletions
| @@ -135,6 +135,8 @@ void config_cb(const char *name, const char *value)  		ctx.cfg.snapshots = cgit_parse_snapshots_mask(value);  	else if (!strcmp(name, "enable-filter-overrides"))  		ctx.cfg.enable_filter_overrides = atoi(value); +	else if (!strcmp(name, "enable-gitweb-owner")) +		ctx.cfg.enable_gitweb_owner = atoi(value);  	else if (!strcmp(name, "enable-index-links"))  		ctx.cfg.enable_index_links = atoi(value);  	else if (!strcmp(name, "enable-log-filecount")) @@ -181,9 +183,14 @@ void config_cb(const char *name, const char *value)  		ctx.cfg.max_repo_count = atoi(value);  	else if (!strcmp(name, "max-commit-count"))  		ctx.cfg.max_commit_count = atoi(value); +	else if (!strcmp(name, "project-list")) +		ctx.cfg.project_list = xstrdup(expand_macros(value));  	else if (!strcmp(name, "scan-path"))  		if (!ctx.cfg.nocache && ctx.cfg.cache_size)  			process_cached_repolist(expand_macros(value)); +		else if (ctx.cfg.project_list) +			scan_projects(expand_macros(value), +				      ctx.cfg.project_list, repo_config);  		else  			scan_tree(expand_macros(value), repo_config);  	else if (!strcmp(name, "source-filter")) @@ -200,6 +207,8 @@ void config_cb(const char *name, const char *value)  		ctx.cfg.agefile = xstrdup(value);  	else if (!strcmp(name, "renamelimit"))  		ctx.cfg.renamelimit = atoi(value); +	else if (!strcmp(name, "remove-suffix")) +		ctx.cfg.remove_suffix = atoi(value);  	else if (!strcmp(name, "robots"))  		ctx.cfg.robots = xstrdup(value);  	else if (!strcmp(name, "clone-prefix")) @@ -286,6 +295,7 @@ static void prepare_context(struct cgit_context *ctx)  	ctx->cfg.css = "/cgit.css";  	ctx->cfg.logo = "/cgit.png";  	ctx->cfg.local_time = 0; +	ctx->cfg.enable_gitweb_owner = 1;  	ctx->cfg.enable_tree_linenumbers = 1;  	ctx->cfg.max_repo_count = 50;  	ctx->cfg.max_commit_count = 50; @@ -295,7 +305,9 @@ static void prepare_context(struct cgit_context *ctx)  	ctx->cfg.max_blob_size = 0;  	ctx->cfg.max_stats = 0;  	ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s"; +	ctx->cfg.project_list = NULL;  	ctx->cfg.renamelimit = -1; +	ctx->cfg.remove_suffix = 0;  	ctx->cfg.robots = "index, nofollow";  	ctx->cfg.root_title = "Git repository browser";  	ctx->cfg.root_desc = "a fast webinterface for the git dscm"; @@ -574,7 +586,10 @@ static int generate_cached_repolist(const char *path, const char *cached_rc)  		return errno;  	}  	idx = cgit_repolist.count; -	scan_tree(path, repo_config); +	if (ctx.cfg.project_list) +		scan_projects(path, ctx.cfg.project_list, repo_config); +	else +		scan_tree(path, repo_config);  	print_repolist(f, &cgit_repolist, idx);  	if (rename(locked_rc, cached_rc))  		fprintf(stderr, "[cgit] Error renaming %s to %s: %s (%d)\n", @@ -588,17 +603,25 @@ static void process_cached_repolist(const char *path)  	struct stat st;  	char *cached_rc;  	time_t age; +	unsigned long hash; -	cached_rc = xstrdup(fmt("%s/rc-%8x", ctx.cfg.cache_root, -		hash_str(path))); +	hash = hash_str(path); +	if (ctx.cfg.project_list) +		hash += hash_str(ctx.cfg.project_list); +	cached_rc = xstrdup(fmt("%s/rc-%8x", ctx.cfg.cache_root, hash));  	if (stat(cached_rc, &st)) {  		/* Nothing is cached, we need to scan without forking. And  		 * if we fail to generate a cached repolist, we need to  		 * invoke scan_tree manually.  		 */ -		if (generate_cached_repolist(path, cached_rc)) -			scan_tree(path, repo_config); +		if (generate_cached_repolist(path, cached_rc)) { +			if (ctx.cfg.project_list) +				scan_projects(path, ctx.cfg.project_list, +					      repo_config); +			else +				scan_tree(path, repo_config); +		}  		return;  	} | 
