about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--cgit.c8
-rw-r--r--cgit.h1
-rw-r--r--cgitrc.5.txt5
3 files changed, 14 insertions, 0 deletions
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",