neocgit

a more 'modern' version of cgit
Log | Files | Refs | Submodules | README | LICENSE | git clone https://git.ne02ptzero.me/git/neocgit

commit afcdd083dab81afef744e261d81a452698188c30
parent dabb34af760eff2a6ab8e14927fd173cafb77547
Author: Lars Hjemli <hjemli@gmail.com>
Date:   Mon,  3 Dec 2007 01:49:38 +0100

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:
Mcgit.h | 2++
Mcgitrc | 7+++++++
Mshared.c | 5+++++
Mui-shared.c | 17+++++++++++++++++
4 files changed, 31 insertions(+), 0 deletions(-)

diff --git 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 @@ -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 @@ -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 @@ -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);