From 8ab51c56e6b0a60768de7400328926119eb889be Mon Sep 17 00:00:00 2001 From: Jason A. Donenfeld Date: Thu, 29 Jul 2010 19:47:50 +0200 Subject: [PATCH 2/3] Add ability to remove the .git suffix when scanning a tree. --- cgit.c | 3 +++ cgit.h | 1 + cgitrc.5.txt | 6 ++++++ scan-tree.c | 8 ++++++++ 4 files changed, 18 insertions(+), 0 deletions(-) diff --git a/cgit.c b/cgit.c index 4dadbce..c857855 100644 --- a/cgit.c +++ b/cgit.c @@ -204,6 +204,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")) @@ -301,6 +303,7 @@ static void prepare_context(struct cgit_context *ctx) ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s"; ctx->cfg.project_list = 0; 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 8e408f7..036a79c 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 5b20414..d5e63a4 100644 --- a/scan-tree.c +++ b/scan-tree.c @@ -81,6 +81,14 @@ 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) { + char *next = repo->url; + char *period = 0; + while ((next = strstr(next + 1, ".git")) != 0) + period = next; + if (period) + period[0] = '\0'; + } repo->name = repo->url; repo->path = xstrdup(path); p = (pwd && pwd->pw_gecos) ? strchr(pwd->pw_gecos, ',') : NULL; -- 1.7.2