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));
char *clone_url;
char *logo;
char *logo_link;
+ char *snapshot_prefix;
int snapshots;
int enable_commit_graph;
int enable_log_filecount;
restricted by the global "snapshots" setting. Default value:
<snapshots>.
+repo.snapshot-prefix::
+ Prefix to use for snapshot links instead of the repository basename.
+ For example, the "linux-stable" repository may wish to set this to
+ "linux" so that snapshots are in the format "linux-3.15.4" instead
+ of "linux-stable-3.15.4". Default value: <empty> meaning to use
+ the repository basename.
+
repo.section::
Override the current section name for this repository. Default value:
none.
if (!ref || strlen(ref) < 1)
return;
- basename = cgit_repobasename(repo->url);
+ basename = cgit_snapshot_prefix(repo);
if (starts_with(ref, basename))
strbuf_addstr(&filename, ref);
else
return rvbuf;
}
+const char *cgit_snapshot_prefix(const struct cgit_repo *repo)
+{
+ if (repo->snapshot_prefix)
+ return repo->snapshot_prefix;
+
+ return cgit_repobasename(repo->url);
+}
+
static void site_url(const char *page, const char *search, const char *sort, int ofs, int always_root)
{
char *delim = "?";
struct strbuf filename = STRBUF_INIT;
size_t prefixlen;
- cgit_compose_snapshot_prefix(&filename, cgit_repobasename(repo->url), hex);
+ cgit_compose_snapshot_prefix(&filename, cgit_snapshot_prefix(repo), hex);
prefixlen = filename.len;
for (f = cgit_snapshot_formats; f->suffix; f++) {
if (!(repo->snapshots & f->bit))
const char *base, const char *ref);
extern void cgit_print_snapshot_links(const struct cgit_repo *repo,
const char *head, const char *hex);
+extern const char *cgit_snapshot_prefix(const struct cgit_repo *repo);
extern void cgit_add_hidden_formfields(int incl_head, int incl_search,
const char *page);
if (get_oid(snapshot.buf, &oid) == 0)
goto out;
- reponame = cgit_repobasename(repo->url);
+ reponame = cgit_snapshot_prefix(repo);
if (starts_with(snapshot.buf, reponame)) {
const char *new_start = snapshot.buf;
new_start += strlen(reponame);
hex = head;
if (!prefix)
- prefix = xstrdup(cgit_repobasename(ctx.repo->url));
+ prefix = xstrdup(cgit_snapshot_prefix(ctx.repo));
make_snapshot(f, hex, prefix, filename);
free(prefix);