author | Lars Hjemli <hjemli@gmail.com> | 2009-07-31 15:42:57 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2009-07-31 15:42:57 (UTC) |
commit | f35db1cd2b75aac6952aa07713e44ca01fd89727 (patch) (unidiff) | |
tree | affc8325bf67ae51044c809c0b693cbe55dd097a /cgit.c | |
parent | 46b7abed99e957008c01c02cf612aa526ba92f04 (diff) | |
download | cgit-f35db1cd2b75aac6952aa07713e44ca01fd89727.zip cgit-f35db1cd2b75aac6952aa07713e44ca01fd89727.tar.gz cgit-f35db1cd2b75aac6952aa07713e44ca01fd89727.tar.bz2 |
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>
-rw-r--r-- | cgit.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -45,96 +45,98 @@ void config_cb(const char *name, const char *value) | |||
45 | else if (!strcmp(name, "favicon")) | 45 | else if (!strcmp(name, "favicon")) |
46 | ctx.cfg.favicon = xstrdup(value); | 46 | ctx.cfg.favicon = xstrdup(value); |
47 | else if (!strcmp(name, "footer")) | 47 | else if (!strcmp(name, "footer")) |
48 | ctx.cfg.footer = xstrdup(value); | 48 | ctx.cfg.footer = xstrdup(value); |
49 | else if (!strcmp(name, "head-include")) | 49 | else if (!strcmp(name, "head-include")) |
50 | ctx.cfg.head_include = xstrdup(value); | 50 | ctx.cfg.head_include = xstrdup(value); |
51 | else if (!strcmp(name, "header")) | 51 | else if (!strcmp(name, "header")) |
52 | ctx.cfg.header = xstrdup(value); | 52 | ctx.cfg.header = xstrdup(value); |
53 | else if (!strcmp(name, "logo")) | 53 | else if (!strcmp(name, "logo")) |
54 | ctx.cfg.logo = xstrdup(value); | 54 | ctx.cfg.logo = xstrdup(value); |
55 | else if (!strcmp(name, "index-header")) | 55 | else if (!strcmp(name, "index-header")) |
56 | ctx.cfg.index_header = xstrdup(value); | 56 | ctx.cfg.index_header = xstrdup(value); |
57 | else if (!strcmp(name, "index-info")) | 57 | else if (!strcmp(name, "index-info")) |
58 | ctx.cfg.index_info = xstrdup(value); | 58 | ctx.cfg.index_info = xstrdup(value); |
59 | else if (!strcmp(name, "logo-link")) | 59 | else if (!strcmp(name, "logo-link")) |
60 | ctx.cfg.logo_link = xstrdup(value); | 60 | ctx.cfg.logo_link = xstrdup(value); |
61 | else if (!strcmp(name, "module-link")) | 61 | else if (!strcmp(name, "module-link")) |
62 | ctx.cfg.module_link = xstrdup(value); | 62 | ctx.cfg.module_link = xstrdup(value); |
63 | else if (!strcmp(name, "virtual-root")) { | 63 | else if (!strcmp(name, "virtual-root")) { |
64 | ctx.cfg.virtual_root = trim_end(value, '/'); | 64 | ctx.cfg.virtual_root = trim_end(value, '/'); |
65 | if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) | 65 | if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) |
66 | ctx.cfg.virtual_root = ""; | 66 | ctx.cfg.virtual_root = ""; |
67 | } else if (!strcmp(name, "nocache")) | 67 | } else if (!strcmp(name, "nocache")) |
68 | ctx.cfg.nocache = atoi(value); | 68 | ctx.cfg.nocache = atoi(value); |
69 | else if (!strcmp(name, "noheader")) | 69 | else if (!strcmp(name, "noheader")) |
70 | ctx.cfg.noheader = atoi(value); | 70 | ctx.cfg.noheader = atoi(value); |
71 | else if (!strcmp(name, "snapshots")) | 71 | else if (!strcmp(name, "snapshots")) |
72 | ctx.cfg.snapshots = cgit_parse_snapshots_mask(value); | 72 | ctx.cfg.snapshots = cgit_parse_snapshots_mask(value); |
73 | else if (!strcmp(name, "enable-index-links")) | 73 | else if (!strcmp(name, "enable-index-links")) |
74 | ctx.cfg.enable_index_links = atoi(value); | 74 | ctx.cfg.enable_index_links = atoi(value); |
75 | else if (!strcmp(name, "enable-log-filecount")) | 75 | else if (!strcmp(name, "enable-log-filecount")) |
76 | ctx.cfg.enable_log_filecount = atoi(value); | 76 | ctx.cfg.enable_log_filecount = atoi(value); |
77 | else if (!strcmp(name, "enable-log-linecount")) | 77 | else if (!strcmp(name, "enable-log-linecount")) |
78 | ctx.cfg.enable_log_linecount = atoi(value); | 78 | ctx.cfg.enable_log_linecount = atoi(value); |
79 | else if (!strcmp(name, "max-stats")) | 79 | else if (!strcmp(name, "max-stats")) |
80 | ctx.cfg.max_stats = cgit_find_stats_period(value, NULL); | 80 | ctx.cfg.max_stats = cgit_find_stats_period(value, NULL); |
81 | else if (!strcmp(name, "cache-size")) | 81 | else if (!strcmp(name, "cache-size")) |
82 | ctx.cfg.cache_size = atoi(value); | 82 | ctx.cfg.cache_size = atoi(value); |
83 | else if (!strcmp(name, "cache-root")) | 83 | else if (!strcmp(name, "cache-root")) |
84 | ctx.cfg.cache_root = xstrdup(value); | 84 | ctx.cfg.cache_root = xstrdup(value); |
85 | else if (!strcmp(name, "cache-root-ttl")) | 85 | else if (!strcmp(name, "cache-root-ttl")) |
86 | ctx.cfg.cache_root_ttl = atoi(value); | 86 | ctx.cfg.cache_root_ttl = atoi(value); |
87 | else if (!strcmp(name, "cache-repo-ttl")) | 87 | else if (!strcmp(name, "cache-repo-ttl")) |
88 | ctx.cfg.cache_repo_ttl = atoi(value); | 88 | ctx.cfg.cache_repo_ttl = atoi(value); |
89 | else if (!strcmp(name, "cache-static-ttl")) | 89 | else if (!strcmp(name, "cache-static-ttl")) |
90 | ctx.cfg.cache_static_ttl = atoi(value); | 90 | ctx.cfg.cache_static_ttl = atoi(value); |
91 | else if (!strcmp(name, "cache-dynamic-ttl")) | 91 | else if (!strcmp(name, "cache-dynamic-ttl")) |
92 | ctx.cfg.cache_dynamic_ttl = atoi(value); | 92 | ctx.cfg.cache_dynamic_ttl = atoi(value); |
93 | else if (!strcmp(name, "commit-filter")) | ||
94 | ctx.cfg.commit_filter = new_filter(value, 0); | ||
93 | else if (!strcmp(name, "embedded")) | 95 | else if (!strcmp(name, "embedded")) |
94 | ctx.cfg.embedded = atoi(value); | 96 | ctx.cfg.embedded = atoi(value); |
95 | else if (!strcmp(name, "max-message-length")) | 97 | else if (!strcmp(name, "max-message-length")) |
96 | ctx.cfg.max_msg_len = atoi(value); | 98 | ctx.cfg.max_msg_len = atoi(value); |
97 | else if (!strcmp(name, "max-repodesc-length")) | 99 | else if (!strcmp(name, "max-repodesc-length")) |
98 | ctx.cfg.max_repodesc_len = atoi(value); | 100 | ctx.cfg.max_repodesc_len = atoi(value); |
99 | else if (!strcmp(name, "max-repo-count")) | 101 | else if (!strcmp(name, "max-repo-count")) |
100 | ctx.cfg.max_repo_count = atoi(value); | 102 | ctx.cfg.max_repo_count = atoi(value); |
101 | else if (!strcmp(name, "max-commit-count")) | 103 | else if (!strcmp(name, "max-commit-count")) |
102 | ctx.cfg.max_commit_count = atoi(value); | 104 | ctx.cfg.max_commit_count = atoi(value); |
103 | else if (!strcmp(name, "source-filter")) | 105 | else if (!strcmp(name, "source-filter")) |
104 | ctx.cfg.source_filter = new_filter(value, 1); | 106 | ctx.cfg.source_filter = new_filter(value, 1); |
105 | else if (!strcmp(name, "summary-log")) | 107 | else if (!strcmp(name, "summary-log")) |
106 | ctx.cfg.summary_log = atoi(value); | 108 | ctx.cfg.summary_log = atoi(value); |
107 | else if (!strcmp(name, "summary-branches")) | 109 | else if (!strcmp(name, "summary-branches")) |
108 | ctx.cfg.summary_branches = atoi(value); | 110 | ctx.cfg.summary_branches = atoi(value); |
109 | else if (!strcmp(name, "summary-tags")) | 111 | else if (!strcmp(name, "summary-tags")) |
110 | ctx.cfg.summary_tags = atoi(value); | 112 | ctx.cfg.summary_tags = atoi(value); |
111 | else if (!strcmp(name, "agefile")) | 113 | else if (!strcmp(name, "agefile")) |
112 | ctx.cfg.agefile = xstrdup(value); | 114 | ctx.cfg.agefile = xstrdup(value); |
113 | else if (!strcmp(name, "renamelimit")) | 115 | else if (!strcmp(name, "renamelimit")) |
114 | ctx.cfg.renamelimit = atoi(value); | 116 | ctx.cfg.renamelimit = atoi(value); |
115 | else if (!strcmp(name, "robots")) | 117 | else if (!strcmp(name, "robots")) |
116 | ctx.cfg.robots = xstrdup(value); | 118 | ctx.cfg.robots = xstrdup(value); |
117 | else if (!strcmp(name, "clone-prefix")) | 119 | else if (!strcmp(name, "clone-prefix")) |
118 | ctx.cfg.clone_prefix = xstrdup(value); | 120 | ctx.cfg.clone_prefix = xstrdup(value); |
119 | else if (!strcmp(name, "local-time")) | 121 | else if (!strcmp(name, "local-time")) |
120 | ctx.cfg.local_time = atoi(value); | 122 | ctx.cfg.local_time = atoi(value); |
121 | else if (!strcmp(name, "repo.group")) | 123 | else if (!strcmp(name, "repo.group")) |
122 | ctx.cfg.repo_group = xstrdup(value); | 124 | ctx.cfg.repo_group = xstrdup(value); |
123 | else if (!strcmp(name, "repo.url")) | 125 | else if (!strcmp(name, "repo.url")) |
124 | ctx.repo = cgit_add_repo(value); | 126 | ctx.repo = cgit_add_repo(value); |
125 | else if (!strcmp(name, "repo.name")) | 127 | else if (!strcmp(name, "repo.name")) |
126 | ctx.repo->name = xstrdup(value); | 128 | ctx.repo->name = xstrdup(value); |
127 | else if (ctx.repo && !strcmp(name, "repo.path")) | 129 | else if (ctx.repo && !strcmp(name, "repo.path")) |
128 | ctx.repo->path = trim_end(value, '/'); | 130 | ctx.repo->path = trim_end(value, '/'); |
129 | else if (ctx.repo && !strcmp(name, "repo.clone-url")) | 131 | else if (ctx.repo && !strcmp(name, "repo.clone-url")) |
130 | ctx.repo->clone_url = xstrdup(value); | 132 | ctx.repo->clone_url = xstrdup(value); |
131 | else if (ctx.repo && !strcmp(name, "repo.desc")) | 133 | else if (ctx.repo && !strcmp(name, "repo.desc")) |
132 | ctx.repo->desc = xstrdup(value); | 134 | ctx.repo->desc = xstrdup(value); |
133 | else if (ctx.repo && !strcmp(name, "repo.owner")) | 135 | else if (ctx.repo && !strcmp(name, "repo.owner")) |
134 | ctx.repo->owner = xstrdup(value); | 136 | ctx.repo->owner = xstrdup(value); |
135 | else if (ctx.repo && !strcmp(name, "repo.defbranch")) | 137 | else if (ctx.repo && !strcmp(name, "repo.defbranch")) |
136 | ctx.repo->defbranch = xstrdup(value); | 138 | ctx.repo->defbranch = xstrdup(value); |
137 | else if (ctx.repo && !strcmp(name, "repo.snapshots")) | 139 | else if (ctx.repo && !strcmp(name, "repo.snapshots")) |
138 | ctx.repo->snapshots = ctx.cfg.snapshots & cgit_parse_snapshots_mask(value); /* XXX: &? */ | 140 | ctx.repo->snapshots = ctx.cfg.snapshots & cgit_parse_snapshots_mask(value); /* XXX: &? */ |
139 | else if (ctx.repo && !strcmp(name, "repo.enable-log-filecount")) | 141 | else if (ctx.repo && !strcmp(name, "repo.enable-log-filecount")) |
140 | ctx.repo->enable_log_filecount = ctx.cfg.enable_log_filecount * atoi(value); | 142 | ctx.repo->enable_log_filecount = ctx.cfg.enable_log_filecount * atoi(value); |