cgit

commit 2e4a941626c240bc7858aa7564882c01f657f4e8

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;