X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/1dd53e3a2ffec730ec27ebe15b3d63e0b417a544..c1572bb5ec4540b5008490cf471cc4a5e65ef728:/cgit.c diff --git a/cgit.c b/cgit.c index a3702c2..d2f7b9c 100644 --- a/cgit.c +++ b/cgit.c @@ -79,6 +79,8 @@ static void repo_config(struct cgit_repo *repo, const char *name, const char *va item->util = xstrdup(value); } else if (!strcmp(name, "section")) repo->section = xstrdup(value); + else if (!strcmp(name, "snapshot-prefix")) + repo->snapshot_prefix = xstrdup(value); else if (!strcmp(name, "readme") && value != NULL) { if (repo->readme.items == ctx.cfg.readme.items) memset(&repo->readme, 0, sizeof(repo->readme)); @@ -561,12 +563,8 @@ static void print_no_repo_clone_urls(const char *url) html("\n"); } -static int prepare_repo_cmd(void) +static void prepare_repo_env(int *nongit) { - struct object_id oid; - int nongit = 0; - int rc; - /* The path to the git repository. */ setenv("GIT_DIR", ctx.repo->path, 1); @@ -579,8 +577,13 @@ static int prepare_repo_cmd(void) /* Setup the git directory and initialize the notes system. Both of these * load local configuration from the git repository, so we do them both while * the HOME variables are unset. */ - setup_git_directory_gently(&nongit); + setup_git_directory_gently(nongit); init_display_notes(NULL); +} +static int prepare_repo_cmd(int nongit) +{ + struct object_id oid; + int rc; if (nongit) { const char *name = ctx.repo->name; @@ -700,6 +703,7 @@ static inline void authenticate_cookie(void) static void process_request(void) { struct cgit_cmd *cmd; + int nongit = 0; /* If we're not yet authenticated, no matter what page we're on, * display the authentication body from the auth_filter. This should @@ -715,6 +719,9 @@ static void process_request(void) return; } + if (ctx.repo) + prepare_repo_env(&nongit); + cmd = cgit_get_cmd(); if (!cmd) { ctx.page.title = "cgit error"; @@ -740,7 +747,7 @@ static void process_request(void) */ ctx.qry.vpath = cmd->want_vpath ? ctx.qry.path : NULL; - if (ctx.repo && prepare_repo_cmd()) + if (ctx.repo && prepare_repo_cmd(nongit)) return; cmd->fn();