]> gitweb.ps.run Git - ps-cgit/commitdiff
ui-commit: add support for 'commit-filter' option
authorLars Hjemli <hjemli@gmail.com>
Fri, 31 Jul 2009 15:42:57 +0000 (17:42 +0200)
committerLars Hjemli <hjemli@gmail.com>
Fri, 31 Jul 2009 15:42:57 +0000 (17:42 +0200)
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>
cgit.c
cgit.h
cgitrc.5.txt
ui-commit.c

diff --git a/cgit.c b/cgit.c
index eb7b45d5e77f897276a3765b09124723e245439b..2cda554ad1efe9b72a8c4063465f55734569e938 100644 (file)
--- 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 f9cf0df76df342b53f7c2bd724dccf0f16265a3d..438301d54b6ccf130b14e5bbe832a04bbaf7a910 100644 (file)
--- 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;
 };
 
index d420ad4e474b4710982170794afa170566272aab..2efd6aa639ccfadf52b83f9427fecc43b94ece36 100644 (file)
@@ -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".
index 41ce70e2a9964839b5bf8f03ba6698b7d1ac69d1..ee0e139e3d9d554210054c7f4e8dedecd38ffc6c 100644 (file)
@@ -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)