Author: Jason A. Donenfeld <Jason@zx2c4.com>
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 <Jason@zx2c4.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
cgit.c | 3 +++ cgit.h | 1 + cgitrc.5.txt | 6 ++++++ scan-tree.c | 3 +++
diff --git a/cgit.c b/cgit.c index 2364d1c99e87de0a02d2c59927424ee55588871c..f9a42bb77d2551fc670c8d4cf58607b129c41495 100644 --- a/cgit.c +++ b/cgit.c @@ -205,6 +205,8 @@ else if (!strcmp(name, "agefile")) 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 @@ ctx->cfg.max_stats = 0; 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 4591f8c1a696c928de38e90502cc71a3023dcf10..ada85359302889fdc1c37fc012ea49b84fbbb47c 100644 --- a/cgit.h +++ b/cgit.h @@ -202,6 +202,7 @@ int nocache; 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 ec004d42cfb3de2832c393b09295a73d215d189b..6fb1083f9586cffd5c869e46d9419b7e996efbbd 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt @@ -229,6 +229,11 @@ A list of subdirectories inside of scan-path, relative to it, that 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 @@ AUTHOR ------ Lars Hjemli <hjemli@gmail.com> +Jason A. Donenfeld <Jason@zx2c4.com> diff --git a/scan-tree.c b/scan-tree.c index 9bf9b38b6af6dc891db10a686c3bf097bdcf658b..a83a78ca67dadfda9bc3b7275b7ad2e681ec40a9 100644 --- a/scan-tree.c +++ b/scan-tree.c @@ -81,6 +81,9 @@ if (!strcmp(p + strlen(p) - 5, "/.git")) 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;