diff options
| author | Lars Hjemli <hjemli@gmail.com> | 2007-12-03 01:49:38 +0100 | 
|---|---|---|
| committer | Lars Hjemli <hjemli@gmail.com> | 2007-12-03 01:49:38 +0100 | 
| commit | afcdd083dab81afef744e261d81a452698188c30 (patch) | |
| tree | 0ca43a6b87567af70c802a25124702c7c7891c9a | |
| parent | Merge branch 'stable' (diff) | |
| download | cgit-afcdd083dab81afef744e261d81a452698188c30.tar.gz cgit-afcdd083dab81afef744e261d81a452698188c30.tar.bz2 cgit-afcdd083dab81afef744e261d81a452698188c30.zip | |
Add support for automatic and custom clone urls
This adds support for two new parameters to cgitrc: clone-prefix and
repo.clone-url.
If clone-prefix is specified, all repos will get a clone url printed in the
sidebar; the url is generated by clone-prefix + repo.url.
Additionally, each repo can specify repo.clone-url which will override any
such auto-generated url.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to '')
| -rw-r--r-- | cgit.h | 2 | ||||
| -rw-r--r-- | cgitrc | 7 | ||||
| -rw-r--r-- | shared.c | 5 | ||||
| -rw-r--r-- | ui-shared.c | 17 | 
4 files changed, 31 insertions, 0 deletions
| @@ -75,6 +75,7 @@ struct repoinfo {  	char *group;  	char *module_link;  	char *readme; +	char *clone_url;  	int snapshots;  	int enable_log_filecount;  	int enable_log_linecount; @@ -140,6 +141,7 @@ extern char *cgit_script_name;  extern char *cgit_cache_root;  extern char *cgit_repo_group;  extern char *cgit_robots; +extern char *cgit_clone_prefix;  extern int cgit_nocache;  extern int cgit_snapshots; @@ -116,6 +116,11 @@  #module-link=./?repo=%s&page=commit&id=%s +## Shared prefix which, when combined with repo url, becomes the url used +## to clone the repo +#clone-prefix= + +  ## Number of chars shown of repo description (in repolist view)  #max-repodesc-length=60 @@ -167,12 +172,14 @@  #repo.enable-log-linecount=0			## override the default linecount setting  #repo.module-link=/git/%s/commit/?id=%s		## override the standard module-link  #repo.readme=info/web/readme			## specify a file to include on summary page +#repo.clone-url=git://hjemli.net/pub/git/cgit  ## Additional repositories grouped under "mirrors"  #repo.group=mirrors  #repo.url=git  #repo.path=/pub/git/git +#repo.clone-url=git://hjemli.net/pub/git/git  #  #repo.url=linux  #repo.path=/pub/git/linux @@ -27,6 +27,7 @@ char *cgit_script_name  = CGIT_SCRIPT_NAME;  char *cgit_cache_root   = CGIT_CACHE_ROOT;  char *cgit_repo_group   = NULL;  char *cgit_robots       = "index, nofollow"; +char *cgit_clone_prefix = NULL;  int cgit_nocache               =  0;  int cgit_snapshots             =  0; @@ -200,6 +201,8 @@ void cgit_global_config_cb(const char *name, const char *value)  		cgit_renamelimit = atoi(value);  	else if (!strcmp(name, "robots"))  		cgit_robots = xstrdup(value); +	else if (!strcmp(name, "clone-prefix")) +		cgit_clone_prefix = xstrdup(value);  	else if (!strcmp(name, "repo.group"))  		cgit_repo_group = xstrdup(value);  	else if (!strcmp(name, "repo.url")) @@ -208,6 +211,8 @@ void cgit_global_config_cb(const char *name, const char *value)  		cgit_repo->name = xstrdup(value);  	else if (cgit_repo && !strcmp(name, "repo.path"))  		cgit_repo->path = trim_end(value, '/'); +	else if (cgit_repo && !strcmp(name, "repo.clone-url")) +		cgit_repo->clone_url = xstrdup(value);  	else if (cgit_repo && !strcmp(name, "repo.desc"))  		cgit_repo->desc = xstrdup(value);  	else if (cgit_repo && !strcmp(name, "repo.owner")) diff --git a/ui-shared.c b/ui-shared.c index 3e13c86..ece041c 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -460,6 +460,7 @@ void cgit_print_pageheader(char *title, int show_search)  {  	static const char *default_info = "This is cgit, a fast webinterface for git repositories";  	int header = 0; +	char *url;  	html("<table id='layout' summary=''>\n");  	html("<tr><td id='sidebar'>\n"); @@ -492,6 +493,22 @@ void cgit_print_pageheader(char *title, int show_search)  		for_each_ref(print_archive_ref, &header); +		if (cgit_repo->clone_url || cgit_clone_prefix) { +			html("<h1>clone</h1>\n"); +			if (cgit_repo->clone_url) +				url = cgit_repo->clone_url; +			else +				url = fmt("%s%s", cgit_clone_prefix, +					  cgit_repo->url); +			html("<a class='menu' href='"); +			html_attr(url); +			html("' title='"); +			html_attr(url); +			html("'>\n"); +			html_txt(strrpart(url, 20)); +			html("</a>\n"); +		} +  		html("<h1>branch</h1>\n");  		html("<form method='get' action=''>\n");  		add_hidden_formfields(0, 1, cgit_query_page); |