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>
Этот коммит содержится в:
родитель
dabb34af76
Коммит
afcdd083da
2
cgit.h
2
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;
|
||||
|
7
cgitrc
7
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
|
||||
|
5
shared.c
5
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"))
|
||||
|
17
ui-shared.c
17
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);
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user