Hi all, I've patched log_accum.pl from CVSROOT[1] to also close bugs fixed in the commits that it sends mail to debian-www-cvs about. I figure that it is easiest to patch this script than to duplicate its functionality of aggregating commit messages from different directories. I haven't tested this patch, if someone with access to www-master could do so that would be great. The patch is inspired by the qa.d.o bug closing hook[2].
1. cvs -d :pserver:[email protected]:/cvs/webwml checkout CVSROOT 2. http://anonscm.debian.org/viewvc/qa/trunk/bin/svn-closes-hook?view=co -- bye, pabs http://wiki.debian.org/PaulWise
? webwml-close-bugs-automatically.patch
Index: log_accum.pl
===================================================================
RCS file: /cvs/webwml/CVSROOT/log_accum.pl,v
retrieving revision 1.12
diff -p -u -r1.12 log_accum.pl
--- log_accum.pl 15 Nov 2009 01:51:42 -0000 1.12
+++ log_accum.pl 2 Dec 2012 04:43:51 -0000
@@ -3,6 +3,7 @@
##
#
# This script, taken from the OpenBSD CVS repository.
+# Modified to close Debian bugs fixed by the commits.
#
# Perl filter to handle the log messages from the checkin of files in
# a directory. This script will group the lists of files by log
@@ -275,6 +276,45 @@ EOF
}
}
+sub close_bugs {
+ local(@text) = @_;
+ my @bugs, @done;
+ my $log = join("\n", @text);
+ my $log_copy = $log;
+ while( $log_copy =~ s/(closes:\s*(?:bug)?\#\s*\d+(?:,\s*(?:bug)?\#\s*\d+)*)//is )
+ {
+ my $match = $1;
+ push @bugs, "#$1" while $match =~ s/#(\d+)//;
+ push @done, "[email protected]" while $match =~ s/#(\d+)//;
+ }
+ my $bugs = join(", ", @bugs);
+ my $done = join(", ", @done);
+
+ open MAIL, "| $MAILER -t";
+ print MAIL <<EOF ;
+From: Debian WWW CVS <webmaster\@debian.org>
+To: $done
+Subject: Debian WWW CVS commit by $login fixes $bugs
+Reply-To: debian-www\@lists.debian.org
+Mail-Followup-To: debian-www\@lists.debian.org
+Mail-Copies-To: never
+
+This bug was closed by $login in the webwml CVS repository:
+
+http://www.debian.org/devel/website/using_cvs
+
+Note that it might take some time until www.debian.org has been updated.
+
+Commit message:
+
+$log
+EOF
+ close MAIL;
+ if ($debug) {
+ print STDERR "close_bugs(): name = ", $name, "; subject = ", $subject, ".\n";
+ }
+}
+
sub write_commitlog {
local($logfile, @text) = @_;
@@ -379,6 +419,7 @@ if ($files[1] eq "- New directory") {
}
&mail_notification($mailto, $files[0], @text);
+ &close_bugs(@text);
if ($commitlog) {
&write_commitlog($commitlog, @text);
@@ -444,6 +485,7 @@ if ($files[1] eq "- Imported sources") {
}
&mail_notification($mailto, "Import $file[0]", @text);
+ &close_bugs(@text);
if ($commitlog) {
&write_commitlog($commitlog, @text);
@@ -570,6 +612,7 @@ if ($#status_txt >= 0) {
# Mailout the notification.
#
&mail_notification($mailto, $subject_txt, @text);
+&close_bugs(@text);
# cleanup
#
signature.asc
Description: This is a digitally signed message part

