diff --git a/cgit.c b/cgit.c index 412fbf0..65fad7a 100644 --- a/cgit.c +++ b/cgit.c @@ -139,6 +139,8 @@ void config_cb(const char *name, const char *value) ctx.cfg.enable_filter_overrides = atoi(value); else if (!strcmp(name, "enable-gitweb-owner")) ctx.cfg.enable_gitweb_owner = atoi(value); + else if (!strcmp(name, "enable-http-clone")) + ctx.cfg.enable_http_clone = atoi(value); else if (!strcmp(name, "enable-index-links")) ctx.cfg.enable_index_links = atoi(value); else if (!strcmp(name, "enable-log-filecount")) @@ -300,6 +302,7 @@ static void prepare_context(struct cgit_context *ctx) ctx->cfg.logo = "/cgit.png"; ctx->cfg.local_time = 0; ctx->cfg.enable_gitweb_owner = 1; + ctx->cfg.enable_http_clone = 1; ctx->cfg.enable_tree_linenumbers = 1; ctx->cfg.max_repo_count = 50; ctx->cfg.max_commit_count = 50; @@ -453,6 +456,11 @@ static void process_request(void *cbdata) return; } + if (!ctx->cfg.enable_http_clone && cmd->is_clone) { + html_status(404, "Not found", 0); + return; + } + /* If cmd->want_vpath is set, assume ctx->qry.path contains a "virtual" * in-project path limit to be made available at ctx->qry.vpath. * Otherwise, no path limit is in effect (ctx->qry.vpath = NULL). diff --git a/cgit.h b/cgit.h index f5f68ac..c119712 100644 --- a/cgit.h +++ b/cgit.h @@ -187,6 +187,7 @@ struct cgit_config { int embedded; int enable_filter_overrides; int enable_gitweb_owner; + int enable_http_clone; int enable_index_links; int enable_log_filecount; int enable_log_linecount; diff --git a/cgitrc.5.txt b/cgitrc.5.txt index 8e51ca5..b8c69b8 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt @@ -100,6 +100,11 @@ enable-gitweb-owner:: for the git config value "gitweb.owner" to determine the owner. Default value: "1". See also: scan-path. +enable-http-clone:: + If set to "1", cgit will act as an dumb HTTP endpoint for git clones. + If you use an alternate way of serving git repositories, you may wish + to disable this. Default value: "1". + enable-index-links:: Flag which, when set to "1", will make cgit generate extra links for each repo in the repository index (specifically, to the "summary",