Add support for repo.commit-filter and repo.source-filter

These options can be used to override the default commit- and source-
filter settings per repository.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Šī revīzija ir iekļauta:
Lars Hjemli 2009-08-09 13:22:00 +02:00
vecāks f35db1cd2b
revīzija e976df2795
6 mainīti faili ar 35 papildinājumiem un 21 dzēšanām

4
cgit.c
Parādīt failu

@ -146,6 +146,10 @@ void config_cb(const char *name, const char *value)
ctx.repo->max_stats = cgit_find_stats_period(value, NULL); ctx.repo->max_stats = cgit_find_stats_period(value, NULL);
else if (ctx.repo && !strcmp(name, "repo.module-link")) else if (ctx.repo && !strcmp(name, "repo.module-link"))
ctx.repo->module_link= xstrdup(value); ctx.repo->module_link= xstrdup(value);
else if (ctx.repo && !strcmp(name, "repo.commit-filter"))
ctx.repo->commit_filter = new_filter(value, 0);
else if (ctx.repo && !strcmp(name, "repo.source-filter"))
ctx.repo->source_filter = new_filter(value, 1);
else if (ctx.repo && !strcmp(name, "repo.readme") && value != NULL) { else if (ctx.repo && !strcmp(name, "repo.readme") && value != NULL) {
if (*value == '/') if (*value == '/')
ctx.repo->readme = xstrdup(value); ctx.repo->readme = xstrdup(value);

20
cgit.h
Parādīt failu

@ -48,6 +48,15 @@ typedef void (*configfn)(const char *name, const char *value);
typedef void (*filepair_fn)(struct diff_filepair *pair); typedef void (*filepair_fn)(struct diff_filepair *pair);
typedef void (*linediff_fn)(char *line, int len); typedef void (*linediff_fn)(char *line, int len);
struct cgit_filter {
char *cmd;
char **argv;
int old_stdout;
int pipe_fh[2];
int pid;
int exitstatus;
};
struct cgit_repo { struct cgit_repo {
char *url; char *url;
char *name; char *name;
@ -64,6 +73,8 @@ struct cgit_repo {
int enable_log_linecount; int enable_log_linecount;
int max_stats; int max_stats;
time_t mtime; time_t mtime;
struct cgit_filter *commit_filter;
struct cgit_filter *source_filter;
}; };
struct cgit_repolist { struct cgit_repolist {
@ -129,15 +140,6 @@ struct cgit_query {
int showmsg; int showmsg;
}; };
struct cgit_filter {
char *cmd;
char **argv;
int old_stdout;
int pipe_fh[2];
int pid;
int exitstatus;
};
struct cgit_config { struct cgit_config {
char *agefile; char *agefile;
char *cache_root; char *cache_root;

Parādīt failu

@ -238,6 +238,9 @@ repo.clone-url::
A list of space-separated urls which can be used to clone this repo. A list of space-separated urls which can be used to clone this repo.
Default value: none. Default value: none.
repo.commit-filter::
Override the default commit-filter. Default value: <commit-filter>.
repo.defbranch:: repo.defbranch::
The name of the default branch for this repository. If no such branch The name of the default branch for this repository. If no such branch
exists in the repository, the first branch name (when sorted) is used exists in the repository, the first branch name (when sorted) is used
@ -278,6 +281,9 @@ repo.snapshots::
A mask of allowed snapshot-formats for this repo, restricted by the A mask of allowed snapshot-formats for this repo, restricted by the
"snapshots" global setting. Default value: <snapshots>. "snapshots" global setting. Default value: <snapshots>.
repo.source-filter::
Override the default source-filter. Default value: <source-filter>.
repo.url:: repo.url::
The relative url used to access the repository. This must be the first The relative url used to access the repository. This must be the first
setting specified for each repo. Default value: none. setting specified for each repo. Default value: none.

Parādīt failu

@ -62,6 +62,8 @@ struct cgit_repo *cgit_add_repo(const char *url)
ret->module_link = ctx.cfg.module_link; ret->module_link = ctx.cfg.module_link;
ret->readme = NULL; ret->readme = NULL;
ret->mtime = -1; ret->mtime = -1;
ret->commit_filter = ctx.cfg.commit_filter;
ret->source_filter = ctx.cfg.source_filter;
return ret; return ret;
} }

Parādīt failu

@ -89,19 +89,19 @@ void cgit_print_commit(char *hex)
} }
html("</table>\n"); html("</table>\n");
html("<div class='commit-subject'>"); html("<div class='commit-subject'>");
if (ctx.cfg.commit_filter) if (ctx.repo->commit_filter)
cgit_open_filter(ctx.cfg.commit_filter); cgit_open_filter(ctx.repo->commit_filter);
html_txt(info->subject); html_txt(info->subject);
if (ctx.cfg.commit_filter) if (ctx.repo->commit_filter)
cgit_close_filter(ctx.cfg.commit_filter); cgit_close_filter(ctx.repo->commit_filter);
show_commit_decorations(commit); show_commit_decorations(commit);
html("</div>"); html("</div>");
html("<div class='commit-msg'>"); html("<div class='commit-msg'>");
if (ctx.cfg.commit_filter) if (ctx.repo->commit_filter)
cgit_open_filter(ctx.cfg.commit_filter); cgit_open_filter(ctx.repo->commit_filter);
html_txt(info->msg); html_txt(info->msg);
if (ctx.cfg.commit_filter) if (ctx.repo->commit_filter)
cgit_close_filter(ctx.cfg.commit_filter); cgit_close_filter(ctx.repo->commit_filter);
html("</div>"); html("</div>");
if (parents < 3) { if (parents < 3) {
if (parents) if (parents)

Parādīt failu

@ -22,12 +22,12 @@ static void print_text_buffer(const char *name, char *buf, unsigned long size)
"<a class='no' id='n%1$d' name='n%1$d' href='#n%1$d'>%1$d</a>\n"; "<a class='no' id='n%1$d' name='n%1$d' href='#n%1$d'>%1$d</a>\n";
html("<table summary='blob content' class='blob'>\n"); html("<table summary='blob content' class='blob'>\n");
if (ctx.cfg.source_filter) { if (ctx.repo->source_filter) {
html("<tr><td class='lines'><pre><code>"); html("<tr><td class='lines'><pre><code>");
ctx.cfg.source_filter->argv[1] = xstrdup(name); ctx.repo->source_filter->argv[1] = xstrdup(name);
cgit_open_filter(ctx.cfg.source_filter); cgit_open_filter(ctx.repo->source_filter);
write(STDOUT_FILENO, buf, size); write(STDOUT_FILENO, buf, size);
cgit_close_filter(ctx.cfg.source_filter); cgit_close_filter(ctx.repo->source_filter);
html("</code></pre></td></tr></table>\n"); html("</code></pre></td></tr></table>\n");
return; return;
} }