From afcdd083dab81afef744e261d81a452698188c30 Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Mon, 3 Dec 2007 01:49:38 +0100 Subject: 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 --- cgit.h | 2 ++ cgitrc | 7 +++++++ shared.c | 5 +++++ ui-shared.c | 17 +++++++++++++++++ 4 files changed, 31 insertions(+) diff --git a/cgit.h b/cgit.h index ab0efeb..f223dbc 100644 --- a/cgit.h +++ b/cgit.h @@ -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; diff --git a/cgitrc b/cgitrc index 8c616e0..ce0c01b 100644 --- a/cgitrc +++ b/cgitrc @@ -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 diff --git a/shared.c b/shared.c index fd8b1e3..2c309f5 100644 --- a/shared.c +++ b/shared.c @@ -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("\n"); html("