diff --git a/cgit.c b/cgit.c index eb7b45d..2cda554 100644 --- a/cgit.c +++ b/cgit.c @@ -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")) diff --git a/cgit.h b/cgit.h index f9cf0df..438301d 100644 --- a/cgit.h +++ b/cgit.h @@ -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; }; diff --git a/cgitrc.5.txt b/cgitrc.5.txt index d420ad4..2efd6aa 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt @@ -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". diff --git a/ui-commit.c b/ui-commit.c index 41ce70e..ee0e139 100644 --- a/ui-commit.c +++ b/ui-commit.c @@ -89,11 +89,19 @@ void cgit_print_commit(char *hex) } html("\n"); html("
"); + 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("
"); html("
"); + 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("
"); if (parents < 3) { if (parents)