ui-commit: add support for 'commit-filter' option

This new option specifies a filter which is executed on the commit
message, i.e. the commit message is written to the filters STDIN and
the filters STDOUT is included verbatim as the commit message.

This can be used to implement commit linking by creating a simple
shell script in e.g. /usr/bin/cgit-commit-filter.sh like this:

#/bin/sh
sed -re 's|\b([0-9a-fA-F]{6,40})\b|<a href="./?id=\1">\1</a>|g'

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Bu işleme şunda yer alıyor:
Lars Hjemli 2009-07-31 17:42:57 +02:00
ebeveyn 46b7abed99
işleme f35db1cd2b
4 değiştirilmiş dosya ile 17 ekleme ve 0 silme

2
cgit.c
Dosyayı Görüntüle

@ -90,6 +90,8 @@ void config_cb(const char *name, const char *value)
ctx.cfg.cache_static_ttl = atoi(value);
else if (!strcmp(name, "cache-dynamic-ttl"))
ctx.cfg.cache_dynamic_ttl = atoi(value);
else if (!strcmp(name, "commit-filter"))
ctx.cfg.commit_filter = new_filter(value, 0);
else if (!strcmp(name, "embedded"))
ctx.cfg.embedded = atoi(value);
else if (!strcmp(name, "max-message-length"))

1
cgit.h
Dosyayı Görüntüle

@ -183,6 +183,7 @@ struct cgit_config {
int summary_branches;
int summary_log;
int summary_tags;
struct cgit_filter *commit_filter;
struct cgit_filter *source_filter;
};

Dosyayı Görüntüle

@ -55,6 +55,12 @@ clone-prefix::
setting is only used if `repo.clone-url` is unspecified. Default value:
none.
commit-filter::
Specifies a command which will be invoked to format commit messages.
The command will get the message on its STDIN, and the STDOUT from the
command will be included verbatim as the commit message, i.e. this can
be used to implement bugtracker integration. Default value: none.
css::
Url which specifies the css document to include in all cgit pages.
Default value: "/cgit.css".

Dosyayı Görüntüle

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