On Tue, Dec 18, 2001 at 05:08:53PM +0100, Joern Kersten wrote: > Hi! > > I'd like to get an email notification *including the log message* when > somebody is committing changes to certain files. Currently, I'm using > cvs watch and the standard command in CVSROOT/notify, > > ALL mail %s -s "CVS notification"
This might be overkill for what you want, but I use a perl script to assemble and format the mail message and also link to your cvsweb interface for viewing the differences. This is what I have in CVSROOT/notify: ALL /usr/local/cvs/bin/cvsnotify.pl %s And this is the perl in /usr/local/cvs/bin/cvsnotify.pl (change cvsroot and the CVS web url and whatever else to make it work for you): --- begin cvsnotify.pl --- #!/usr/bin/perl # notes: # # this script is run by CVS to notify users of changes # a copy or link of this should be placed in /usr/local/cvs/bin, # or the location/name should be changed in the 'notify' support # file (check out in CVSROOT) # # - TODO: doesn't tell what happened (add,change,remove) # - TODO: doesn't work right for removed files (URL, log) # - TODO: doesn't work right for added files (URL, log) # - TODO: use env $CVSROOT for $cvsroot # # config vars $cvsroot = '/YOUR/CVSROOT'; $cvsweb_base = "http://YOUR.CVSWEB.MACHINE/cgi-bin/cvsweb.cgi"; # user's email address, aliases from 'users' file in CVSROOT $useraddr = shift @ARGV; # notify info is passed in on <stdin> @lines = <>; $line = shift @lines; # remove trailing newline chop $line; # module and file ($module,$file) = split (' ',$line); # ignore lines shift @lines; shift @lines; # changed $line = shift @lines; ($nop, $changer) = split (' ',$line); # use rlog to get 'rcs' info $rlog_file = $cvsroot . $module . "/" . $file . ",v"; $rlog_cmd = "rlog -zLT -r " . $rlog_file; open (RLOGOUTPUT, "$rlog_cmd |") or die "can't run rlog"; while (<RLOGOUTPUT>) { if (/^head: (.*)$/) { $head = $1; } if (/^branch: (.*)$/) { $branch = $1; } if (/^date: /) { last ; } } # assemble log message while (<RLOGOUTPUT>) { if (/^=========================================/) { last; } push @log_msg, $_; } close (RLOGOUTPUT); # assemble mail message open (MAILINP, "| mail -s '[CVS notify] $module changed' $useraddr"); print MAILINP "This is an automated message generated by CVS.\n"; print MAILINP "If you do not wish to receive these messages, use\n"; print MAILINP "'cvs watch' to modify your watches.\n\n"; print MAILINP "module: $module\n"; print MAILINP "file: $file\n"; print MAILINP "head: $head\n"; print MAILINP "date: $dat\n"; print MAILINP "log message:\n", join ('', @log_msg), "\n\n"; $head =~ m/^([^.]*)\.(.*)$/; $whole = $1; $part = $2 - 1; $lhead = $whole . "." . $part; print MAILINP "see changes at: $cvsweb_base/$module/$file.diff?r1=text&tr1=$lhead&r2=text&tr2=$head&f=h"; close MAILINP; --- end cvsnotify.pl --- HTH Scott -- If you can't be good, be careful. If you can't be careful, give me a call. _______________________________________________ Info-cvs mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/info-cvs
