all repos — cgit @ afcdd083dab81afef744e261d81a452698188c30

a hyperfast web frontend for git written in c

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>
Lars Hjemli hjemli@gmail.com
Mon, 03 Dec 2007 01:49:38 +0100
commit

afcdd083dab81afef744e261d81a452698188c30

parent

dabb34af760eff2a6ab8e14927fd173cafb77547

4 files changed, 31 insertions(+), 0 deletions(-)

jump to
M cgit.hcgit.h

@@ -75,6 +75,7 @@ char *defbranch;

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;
M cgitrccgitrc

@@ -116,6 +116,11 @@ ## Url loaded when clicking a submodule link

#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-filecount=0 ## override the default filecount setting

#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
M shared.cshared.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 @@ else if (!strcmp(name, "renamelimit"))

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 @@ else if (!strcmp(name, "repo.name"))

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"))
M ui-shared.cui-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");

@@ -491,6 +492,22 @@ cgit_diff_link("diff", NULL, "menu", cgit_query_head,

cgit_query_sha1, cgit_query_sha2, NULL); 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");