const char *cgit_version = CGIT_VERSION;
+__attribute__((constructor))
+static void constructor_environment()
+{
+ /* Do not look in /etc/ for gitconfig and gitattributes. */
+ setenv("GIT_CONFIG_NOSYSTEM", "1", 1);
+ setenv("GIT_ATTR_NOSYSTEM", "1", 1);
+ unsetenv("HOME");
+ unsetenv("XDG_CONFIG_HOME");
+}
+
static void add_mimetype(const char *name, const char *value)
{
struct string_list_item *item;
repo->extra_head_content = xstrdup(value);
else if (!strcmp(name, "snapshots"))
repo->snapshots = ctx.cfg.snapshots & cgit_parse_snapshots_mask(value);
+ else if (!strcmp(name, "enable-blame"))
+ repo->enable_blame = atoi(value);
else if (!strcmp(name, "enable-commit-graph"))
repo->enable_commit_graph = atoi(value);
else if (!strcmp(name, "enable-log-filecount"))
ctx.qry.head = xstrdup(value);
ctx.qry.has_symref = 1;
} else if (!strcmp(name, "id")) {
- ctx.qry.sha1 = xstrdup(value);
- ctx.qry.has_sha1 = 1;
+ ctx.qry.oid = xstrdup(value);
+ ctx.qry.has_oid = 1;
} else if (!strcmp(name, "id2")) {
- ctx.qry.sha2 = xstrdup(value);
- ctx.qry.has_sha1 = 1;
+ ctx.qry.oid2 = xstrdup(value);
+ ctx.qry.has_oid = 1;
} else if (!strcmp(name, "ofs")) {
ctx.qry.ofs = atoi(value);
} else if (!strcmp(name, "path")) {
/* The path to the git repository. */
setenv("GIT_DIR", ctx.repo->path, 1);
- /* Do not look in /etc/ for gitconfig and gitattributes. */
- setenv("GIT_CONFIG_NOSYSTEM", "1", 1);
- setenv("GIT_ATTR_NOSYSTEM", "1", 1);
- unsetenv("HOME");
- unsetenv("XDG_CONFIG_HOME");
-
/* 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);
- init_display_notes(NULL);
+ load_display_notes(NULL);
}
+
static int prepare_repo_cmd(int nongit)
{
struct object_id oid;
ctx.env.https ? ctx.env.https : "",
ctx.qry.repo ? ctx.qry.repo : "",
ctx.qry.page ? ctx.qry.page : "",
- ctx.qry.url ? ctx.qry.url : "",
+ cgit_currentfullurl(),
cgit_loginurl());
}
static inline void authenticate_post(void)
{
char buffer[MAX_AUTHENTICATION_POST_BYTES];
- unsigned int len;
+ ssize_t len;
open_auth_filter("authenticate-post");
len = ctx.env.content_length;
if (len > MAX_AUTHENTICATION_POST_BYTES)
len = MAX_AUTHENTICATION_POST_BYTES;
- if (read(STDIN_FILENO, buffer, len) < 0)
+ if ((len = read(STDIN_FILENO, buffer, len)) < 0)
die_errno("Could not read POST from stdin");
if (write(STDOUT_FILENO, buffer, len) < 0)
die_errno("Could not write POST to stdout");
fprintf(f, "repo.homepage=%s\n", repo->homepage);
if (repo->clone_url)
fprintf(f, "repo.clone-url=%s\n", repo->clone_url);
+ fprintf(f, "repo.enable-blame=%d\n",
+ repo->enable_blame);
fprintf(f, "repo.enable-commit-graph=%d\n",
repo->enable_commit_graph);
fprintf(f, "repo.enable-log-filecount=%d\n",
fprintf(f, "repo.snapshots=%s\n", tmp ? tmp : "");
free(tmp);
}
+ if (repo->snapshot_prefix)
+ fprintf(f, "repo.snapshot-prefix=%s\n", repo->snapshot_prefix);
if (repo->max_stats != ctx.cfg.max_stats)
fprintf(f, "repo.max-stats=%s\n",
cgit_find_stats_periodname(repo->max_stats));
} else if (skip_prefix(argv[i], "--head=", &arg)) {
ctx.qry.head = xstrdup(arg);
ctx.qry.has_symref = 1;
- } else if (skip_prefix(argv[i], "--sha1=", &arg)) {
- ctx.qry.sha1 = xstrdup(arg);
- ctx.qry.has_sha1 = 1;
+ } else if (skip_prefix(argv[i], "--oid=", &arg)) {
+ ctx.qry.oid = xstrdup(arg);
+ ctx.qry.has_oid = 1;
} else if (skip_prefix(argv[i], "--ofs=", &arg)) {
ctx.qry.ofs = atoi(arg);
} else if (skip_prefix(argv[i], "--scan-tree=", &arg) ||
if (!strcmp(ctx.qry.page, "snapshot"))
return ctx.cfg.cache_snapshot_ttl;
- if (ctx.qry.has_sha1)
+ if (ctx.qry.has_oid)
return ctx.cfg.cache_static_ttl;
if (ctx.qry.has_symref)