From 2e4a941626c240bc7858aa7564882c01f657f4e8 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Thu, 29 Jul 2010 19:47:50 +0200 Subject: Add support for 'remove-suffix' option When this option is enabled, the '.git' suffix of repository directories found while processing the 'scan-path' option will be removed. Signed-off-by: Jason A. Donenfeld Signed-off-by: Lars Hjemli --- cgit.c | 3 +++ cgit.h | 1 + cgitrc.5.txt | 6 ++++++ scan-tree.c | 3 +++ 4 files changed, 13 insertions(+) diff --git a/cgit.c b/cgit.c index 2364d1c..f9a42bb 100644 --- a/cgit.c +++ b/cgit.c @@ -205,6 +205,8 @@ void config_cb(const char *name, const char *value) ctx.cfg.agefile = xstrdup(value); else if (!strcmp(name, "renamelimit")) ctx.cfg.renamelimit = atoi(value); + else if (!strcmp(name, "remove-suffix")) + ctx.cfg.remove_suffix = atoi(value); else if (!strcmp(name, "robots")) ctx.cfg.robots = xstrdup(value); else if (!strcmp(name, "clone-prefix")) @@ -302,6 +304,7 @@ static void prepare_context(struct cgit_context *ctx) ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s"; ctx->cfg.project_list = NULL; ctx->cfg.renamelimit = -1; + ctx->cfg.remove_suffix = 0; ctx->cfg.robots = "index, nofollow"; ctx->cfg.root_title = "Git repository browser"; ctx->cfg.root_desc = "a fast webinterface for the git dscm"; diff --git a/cgit.h b/cgit.h index 4591f8c..ada8535 100644 --- a/cgit.h +++ b/cgit.h @@ -202,6 +202,7 @@ struct cgit_config { int noplainemail; int noheader; int renamelimit; + int remove_suffix; int snapshots; int summary_branches; int summary_log; diff --git a/cgitrc.5.txt b/cgitrc.5.txt index ec004d4..6fb1083 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt @@ -229,6 +229,11 @@ project-list:: should loaded as git repositories. This must be defined prior to scan-path. Default value: none. See also: scan-path. +remove-suffix:: + If set to "1" and scan-path is enabled, if any repositories are found + with a suffix of ".git", this suffix will be removed for the url and + name. Default value: "0". See also: scan-path. + renamelimit:: Maximum number of files to consider when detecting renames. The value "-1" uses the compiletime value in git (for further info, look at @@ -538,3 +543,4 @@ will generate the following html element: AUTHOR ------ Lars Hjemli +Jason A. Donenfeld diff --git a/scan-tree.c b/scan-tree.c index 9bf9b38..a83a78c 100644 --- a/scan-tree.c +++ b/scan-tree.c @@ -81,6 +81,9 @@ static void add_repo(const char *base, const char *path, repo_config_fn fn) p[strlen(p) - 5] = '\0'; repo = cgit_add_repo(xstrdup(p)); + if (ctx.cfg.remove_suffix) + if ((p = strrchr(repo->url, '.')) && !strcmp(p, ".git")) + *p = '\0'; repo->name = repo->url; repo->path = xstrdup(path); p = (pwd && pwd->pw_gecos) ? strchr(pwd->pw_gecos, ',') : NULL; -- cgit 1.4.1