the repository which powers this website
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 <[email protected]>
Lars Hjemli 2009-07-31
parent 46b7abe · commit f35db1c
-rw-r--r--cgit.c2
-rw-r--r--cgit.h1
-rw-r--r--cgitrc.5.txt6
-rw-r--r--ui-commit.c8
4 files changed, 17 insertions, 0 deletions
diff --git a/cgit.c b/cgit.c
index eb7b45d5..2cda554a 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 f9cf0df7..438301d5 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 d420ad4e..2efd6aa6 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 41ce70e2..ee0e139e 100644
--- a/ui-commit.c
+++ b/ui-commit.c
@@ -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)