Make snapshot feature configurable

Snapshots can now be enabled/disabled by default for all repositories in
cgitrc with param "snapshots". Additionally, any repo can override the
default setting with param "repo.snapshots".

By default, no snapshotting is enabled.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
Lars Hjemli 2007-02-08 14:47:56 +01:00
parent ab2ab95f09
commit ac70cb4795
5 changed files with 22 additions and 6 deletions

3
cgit.c
View File

@ -79,7 +79,8 @@ static void cgit_print_repo_page(struct cacheitem *item)
show_search = 0; show_search = 0;
setenv("GIT_DIR", cgit_repo->path, 1); setenv("GIT_DIR", cgit_repo->path, 1);
if (cgit_query_page && !strcmp(cgit_query_page, "snapshot")) { if (cgit_repo->snapshots && cgit_query_page &&
!strcmp(cgit_query_page, "snapshot")) {
cgit_print_snapshot(item, cgit_query_sha1, "zip", cgit_print_snapshot(item, cgit_query_sha1, "zip",
cgit_repo->url, cgit_query_name); cgit_repo->url, cgit_query_name);
return; return;

2
cgit.h
View File

@ -21,6 +21,7 @@ struct repoinfo {
char *path; char *path;
char *desc; char *desc;
char *owner; char *owner;
int snapshots;
}; };
struct repolist { struct repolist {
@ -61,6 +62,7 @@ extern char *cgit_virtual_root;
extern char *cgit_cache_root; extern char *cgit_cache_root;
extern int cgit_nocache; extern int cgit_nocache;
extern int cgit_snapshots;
extern int cgit_max_lock_attempts; extern int cgit_max_lock_attempts;
extern int cgit_cache_root_ttl; extern int cgit_cache_root_ttl;
extern int cgit_cache_repo_ttl; extern int cgit_cache_repo_ttl;

5
cgitrc
View File

@ -8,6 +8,10 @@
#nocache=0 #nocache=0
## Enable/disable snapshots by default. This can be overridden per repo
#snapshots=0
## Specify a root for virtual urls. This makes cgit generate urls like ## Specify a root for virtual urls. This makes cgit generate urls like
## ##
## http://localhost/git/repo/log/?id=master ## http://localhost/git/repo/log/?id=master
@ -77,3 +81,4 @@
#repo.desc=the caching cgi for git #repo.desc=the caching cgi for git
#repo.path=/pub/git/cgit #repo.path=/pub/git/cgit
#repo.owner=Lars Hjemli #repo.owner=Lars Hjemli
#repo.snapshots=1 # override a sitewide snapshot-setting

View File

@ -20,6 +20,7 @@ char *cgit_virtual_root = NULL;
char *cgit_cache_root = "/var/cache/cgit"; char *cgit_cache_root = "/var/cache/cgit";
int cgit_nocache = 0; int cgit_nocache = 0;
int cgit_snapshots = 0;
int cgit_max_lock_attempts = 5; int cgit_max_lock_attempts = 5;
int cgit_cache_root_ttl = 5; int cgit_cache_root_ttl = 5;
int cgit_cache_repo_ttl = 5; int cgit_cache_repo_ttl = 5;
@ -83,6 +84,7 @@ struct repoinfo *add_repo(const char *url)
ret->path = NULL; ret->path = NULL;
ret->desc = NULL; ret->desc = NULL;
ret->owner = NULL; ret->owner = NULL;
ret->snapshots = cgit_snapshots;
return ret; return ret;
} }
@ -100,6 +102,8 @@ void cgit_global_config_cb(const char *name, const char *value)
cgit_virtual_root = xstrdup(value); cgit_virtual_root = xstrdup(value);
else if (!strcmp(name, "nocache")) else if (!strcmp(name, "nocache"))
cgit_nocache = atoi(value); cgit_nocache = atoi(value);
else if (!strcmp(name, "snapshots"))
cgit_snapshots = atoi(value);
else if (!strcmp(name, "cache-root")) else if (!strcmp(name, "cache-root"))
cgit_cache_root = xstrdup(value); cgit_cache_root = xstrdup(value);
else if (!strcmp(name, "cache-root-ttl")) else if (!strcmp(name, "cache-root-ttl"))
@ -122,6 +126,8 @@ void cgit_global_config_cb(const char *name, const char *value)
cgit_repo->desc = xstrdup(value); cgit_repo->desc = xstrdup(value);
else if (cgit_repo && !strcmp(name, "repo.owner")) else if (cgit_repo && !strcmp(name, "repo.owner"))
cgit_repo->owner = xstrdup(value); cgit_repo->owner = xstrdup(value);
else if (cgit_repo && !strcmp(name, "repo.snapshots"))
cgit_repo->snapshots = atoi(value);
} }
void cgit_repo_config_cb(const char *name, const char *value) void cgit_repo_config_cb(const char *name, const char *value)

View File

@ -169,11 +169,13 @@ void cgit_print_commit(const char *hex)
htmlf("'>%s</a></td></tr>\n", htmlf("'>%s</a></td></tr>\n",
sha1_to_hex(p->item->object.sha1)); sha1_to_hex(p->item->object.sha1));
} }
htmlf("<tr><th>download</th><td colspan='2' class='sha1'><a href='"); if (cgit_repo->snapshots) {
filename = fmt("%s-%s.zip", cgit_query_repo, hex); htmlf("<tr><th>download</th><td colspan='2' class='sha1'><a href='");
html_attr(cgit_pageurl(cgit_query_repo, "snapshot", filename = fmt("%s-%s.zip", cgit_query_repo, hex);
fmt("id=%s&name=%s", hex, filename))); html_attr(cgit_pageurl(cgit_query_repo, "snapshot",
htmlf("'>%s</a></td></tr>", filename); fmt("id=%s&name=%s", hex, filename)));
htmlf("'>%s</a></td></tr>", filename);
}
html("</table>\n"); html("</table>\n");
html("<div class='commit-subject'>"); html("<div class='commit-subject'>");