aboutsummaryrefslogtreecommitdiff
path: root/cgit.c
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'cgit.c')
-rw-r--r--cgit.c38
1 files changed, 37 insertions, 1 deletions
diff --git a/cgit.c b/cgit.c
index 5bf52f8..30c1d23 100644
--- a/cgit.c
+++ b/cgit.c
@@ -1,6 +1,10 @@
/* cgit.c: cgi for the git scm
*
* Copyright (C) 2006-2014 cgit Development Team <cgit@lists.zx2c4.com>
+ * Copyright (C) 2026 Saya Andy <saya.andy@posteo.com>
+ *
+ * Modified 2026 by Saya Andy:
+ * Always check there is git repo on repo.path
*
* Licensed under GNU General Public License v2
* (see COPYING for full license text)
@@ -56,6 +60,20 @@ void cgit_repo_config(struct cgit_repo *repo, const char *name, const char *valu
repo->owner = strdup_first_line(value);
else if (!strcmp(name, "homepage"))
repo->homepage = strdup_first_line(value);
+ else if (!strcmp(name, "ci-url")) {
+ repo->ci_url = strdup_first_line(value);
+ /* An explicit repo.ci-url would otherwise never be used
+ * when the more specific urls are inherited from the
+ * global settings, so discard those.
+ */
+ if (repo->ci_branch_url == ctx.cfg.ci_branch_url)
+ repo->ci_branch_url = NULL;
+ if (repo->ci_tag_url == ctx.cfg.ci_tag_url)
+ repo->ci_tag_url = NULL;
+ } else if (!strcmp(name, "ci-branch-url"))
+ repo->ci_branch_url = strdup_first_line(value);
+ else if (!strcmp(name, "ci-tag-url"))
+ repo->ci_tag_url = strdup_first_line(value);
else if (!strcmp(name, "defbranch"))
repo->defbranch = strdup_first_line(value);
else if (!strcmp(name, "extra-head-content"))
@@ -122,6 +140,8 @@ void cgit_repo_config(struct cgit_repo *repo, const char *name, const char *valu
repo->email_filter = cgit_new_filter(value, EMAIL);
else if (!strcmp(name, "owner-filter"))
repo->owner_filter = cgit_new_filter(value, OWNER);
+ else if (!strcmp(name, "ci-filter"))
+ repo->ci_filter = cgit_new_filter(value, CI);
}
}
@@ -163,6 +183,12 @@ static void config_cb(const char *name, const char *value)
ctx.cfg.logo_link = strdup_first_line(value);
else if (!strcmp(name, "module-link"))
ctx.cfg.module_link = strdup_first_line(value);
+ else if (!strcmp(name, "ci-url"))
+ ctx.cfg.ci_url = strdup_first_line(value);
+ else if (!strcmp(name, "ci-branch-url"))
+ ctx.cfg.ci_branch_url = strdup_first_line(value);
+ else if (!strcmp(name, "ci-tag-url"))
+ ctx.cfg.ci_tag_url = strdup_first_line(value);
else if (!strcmp(name, "strict-export"))
ctx.cfg.strict_export = strdup_first_line(value);
else if (!strcmp(name, "virtual-root"))
@@ -233,6 +259,8 @@ static void config_cb(const char *name, const char *value)
ctx.cfg.owner_filter = cgit_new_filter(value, OWNER);
else if (!strcmp(name, "auth-filter"))
ctx.cfg.auth_filter = cgit_new_filter(value, AUTH);
+ else if (!strcmp(name, "ci-filter"))
+ ctx.cfg.ci_filter = cgit_new_filter(value, CI);
else if (!strcmp(name, "embedded"))
ctx.cfg.embedded = atoi(value);
else if (!strcmp(name, "max-atom-items"))
@@ -815,6 +843,12 @@ static void print_repo(FILE *f, struct cgit_repo *repo)
fprintf(f, "repo.section=%s\n", repo->section);
if (repo->homepage)
fprintf(f, "repo.homepage=%s\n", repo->homepage);
+ if (repo->ci_url)
+ fprintf(f, "repo.ci-url=%s\n", repo->ci_url);
+ if (repo->ci_branch_url)
+ fprintf(f, "repo.ci-branch-url=%s\n", repo->ci_branch_url);
+ if (repo->ci_tag_url)
+ fprintf(f, "repo.ci-tag-url=%s\n", repo->ci_tag_url);
if (repo->clone_url)
fprintf(f, "repo.clone-url=%s\n", repo->clone_url);
fprintf(f, "repo.enable-blame=%d\n",
@@ -837,6 +871,8 @@ static void print_repo(FILE *f, struct cgit_repo *repo)
cgit_fprintf_filter(repo->email_filter, f, "repo.email-filter=");
if (repo->owner_filter && repo->owner_filter != ctx.cfg.owner_filter)
cgit_fprintf_filter(repo->owner_filter, f, "repo.owner-filter=");
+ if (repo->ci_filter && repo->ci_filter != ctx.cfg.ci_filter)
+ cgit_fprintf_filter(repo->ci_filter, f, "repo.ci-filter=");
if (repo->snapshots != ctx.cfg.snapshots) {
char *tmp = build_snapshot_setting(repo->snapshots);
fprintf(f, "repo.snapshots=%s\n", tmp ? tmp : "");
@@ -965,7 +1001,7 @@ static void cgit_parse_args(int argc, const char **argv)
for (i = 1; i < argc; i++) {
if (!strcmp(argv[i], "--version")) {
- printf("CGit %s | https://git.zx2c4.com/cgit/\n\nCompiled in features:\n", CGIT_VERSION);
+ printf("CGit %s | https://sayag.it/cgitext.git | https://git.zx2c4.com/cgit/\n\nCompiled in features:\n", CGIT_VERSION);
#ifdef NO_LUA
printf("[-] ");
#else