diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/git-notify | 77 |
1 files changed, 22 insertions, 55 deletions
diff --git a/tools/git-notify b/tools/git-notify index ce013891..1b10f690 100755 --- a/tools/git-notify +++ b/tools/git-notify | |||
@@ -194,7 +194,7 @@ sub get_repos_name() | |||
194 | return $repos; | 194 | return $repos; |
195 | } | 195 | } |
196 | 196 | ||
197 | # extract the information from a commit or tag object and return a hash containing the various fields | 197 | # extract the information from a commit object and return a hash containing the various fields |
198 | sub get_object_info($) | 198 | sub get_object_info($) |
199 | { | 199 | { |
200 | my $obj = shift; | 200 | my $obj = shift; |
@@ -202,21 +202,13 @@ sub get_object_info($) | |||
202 | my @log = (); | 202 | my @log = (); |
203 | my $do_log = 0; | 203 | my $do_log = 0; |
204 | 204 | ||
205 | open TYPE, "-|" or exec "git", "cat-file", "-t", $obj or die "cannot run git-cat-file"; | 205 | open OBJ, "-|" or exec "git", "cat-file", "commit", $obj or die "cannot run git-cat-file"; |
206 | my $type = <TYPE>; | ||
207 | chomp $type; | ||
208 | close TYPE; | ||
209 | |||
210 | open OBJ, "-|" or exec "git", "cat-file", $type, $obj or die "cannot run git-cat-file"; | ||
211 | while (<OBJ>) | 206 | while (<OBJ>) |
212 | { | 207 | { |
213 | chomp; | 208 | chomp; |
214 | if ($do_log) | 209 | if ($do_log) { push @log, $_; } |
215 | { | 210 | elsif (/^$/) { $do_log = 1; } |
216 | last if /^-----BEGIN PGP SIGNATURE-----/; | 211 | elsif (/^(author|committer) ((.*) (<.*>)) (\d+) ([+-]\d+)$/) |
217 | push @log, $_; | ||
218 | } | ||
219 | elsif (/^(author|committer|tagger) ((.*) (<.*>)) (\d+) ([+-]\d+)$/) | ||
220 | { | 212 | { |
221 | $info{$1} = $2; | 213 | $info{$1} = $2; |
222 | $info{$1 . "_name"} = $3; | 214 | $info{$1 . "_name"} = $3; |
@@ -224,15 +216,9 @@ sub get_object_info($) | |||
224 | $info{$1 . "_date"} = $5; | 216 | $info{$1 . "_date"} = $5; |
225 | $info{$1 . "_tz"} = $6; | 217 | $info{$1 . "_tz"} = $6; |
226 | } | 218 | } |
227 | elsif (/^tag (.*)$/) | ||
228 | { | ||
229 | $info{"tag"} = $1; | ||
230 | } | ||
231 | elsif (/^$/) { $do_log = 1; } | ||
232 | } | 219 | } |
233 | close OBJ; | 220 | close OBJ; |
234 | 221 | ||
235 | $info{"type"} = $type; | ||
236 | $info{"log"} = \@log; | 222 | $info{"log"} = \@log; |
237 | return %info; | 223 | return %info; |
238 | } | 224 | } |
@@ -243,24 +229,8 @@ sub send_commit_notice($$) | |||
243 | my ($ref,$obj) = @_; | 229 | my ($ref,$obj) = @_; |
244 | my %info = get_object_info($obj); | 230 | my %info = get_object_info($obj); |
245 | my @notice = (); | 231 | my @notice = (); |
246 | my $subject; | ||
247 | 232 | ||
248 | if ($info{"type"} eq "tag") | 233 | push @notice, |
249 | { | ||
250 | push @notice, | ||
251 | "Module: $repos_name", | ||
252 | "Branch: $ref", | ||
253 | "Tag: $obj", | ||
254 | $gitweb_url ? "URL: $gitweb_url/?a=tag;h=$obj\n" : "", | ||
255 | "Tagger: " . $info{"tagger"}, | ||
256 | "Date: " . format_date($info{"tagger_date"},$info{"tagger_tz"}), | ||
257 | "", | ||
258 | join "\n", @{$info{"log"}}; | ||
259 | $subject = "Tag " . $info{"tag"} . " : " . $info{"tagger_name"} . ": " . ${$info{"log"}}[0]; | ||
260 | } | ||
261 | else | ||
262 | { | ||
263 | push @notice, | ||
264 | "Module: $repos_name", | 234 | "Module: $repos_name", |
265 | "Branch: $ref", | 235 | "Branch: $ref", |
266 | "Commit: $obj", | 236 | "Commit: $obj", |
@@ -273,27 +243,26 @@ sub send_commit_notice($$) | |||
273 | "---", | 243 | "---", |
274 | ""; | 244 | ""; |
275 | 245 | ||
276 | open STAT, "-|" or exec "git", "diff-tree", "--stat", "-M", "--no-commit-id", $obj or die "cannot exec git-diff-tree"; | 246 | open STAT, "-|" or exec "git", "diff-tree", "--stat", "-M", "--no-commit-id", $obj or die "cannot exec git-diff-tree"; |
277 | push @notice, join("", <STAT>); | 247 | push @notice, join("", <STAT>); |
278 | close STAT; | 248 | close STAT; |
279 | |||
280 | open DIFF, "-|" or exec "git", "diff-tree", "-p", "-M", "--no-commit-id", $obj or die "cannot exec git-diff-tree"; | ||
281 | my $diff = join( "", <DIFF> ); | ||
282 | close DIFF; | ||
283 | 249 | ||
284 | if (($max_diff_size == -1) || (length($diff) < $max_diff_size)) | 250 | open DIFF, "-|" or exec "git", "diff-tree", "-p", "-M", "--no-commit-id", $obj or die "cannot exec git-diff-tree"; |
285 | { | 251 | my $diff = join( "", <DIFF> ); |
286 | push @notice, $diff; | 252 | close DIFF; |
287 | } | ||
288 | else | ||
289 | { | ||
290 | push @notice, "Diff: $gitweb_url/?a=commitdiff;h=$obj" if $gitweb_url; | ||
291 | } | ||
292 | 253 | ||
293 | $subject = $info{"author_name"} . ": " . ${$info{"log"}}[0]; | 254 | if (($max_diff_size == -1) || (length($diff) < $max_diff_size)) |
255 | { | ||
256 | push @notice, $diff; | ||
257 | } | ||
258 | else | ||
259 | { | ||
260 | push @notice, "Diff: $gitweb_url/?a=commitdiff;h=$obj" if $gitweb_url; | ||
294 | } | 261 | } |
295 | 262 | ||
296 | mail_notification($commitlist_address, $subject, "text/plain; charset=UTF-8", @notice); | 263 | mail_notification($commitlist_address, |
264 | $info{"author_name"} . ": " . ${$info{"log"}}[0], | ||
265 | "text/plain; charset=UTF-8", @notice); | ||
297 | } | 266 | } |
298 | 267 | ||
299 | # send a commit notice to the CIA server | 268 | # send a commit notice to the CIA server |
@@ -303,8 +272,6 @@ sub send_cia_notice($$) | |||
303 | my %info = get_object_info($commit); | 272 | my %info = get_object_info($commit); |
304 | my @cia_text = (); | 273 | my @cia_text = (); |
305 | 274 | ||
306 | return if $info{"type"} ne "commit"; | ||
307 | |||
308 | push @cia_text, | 275 | push @cia_text, |
309 | "<message>", | 276 | "<message>", |
310 | " <generator>", | 277 | " <generator>", |