Pyon's Diary
成る可くJIS X 0213:2004對應MSフォント(5.0)、IPAフォント(003.02)で御覽下さい
2005-06-28 舊 平成拾漆年皐月廿玖日 (曇) [長年日記]
晩御飯。
- 地元の驛前に在るRoyal Hostでクラブハウス・サンドウイツチ、麥酒。
CVS コミツト・メールに差分と備忘録を含める。
だの 2004 年 04 月 28 日の條に Ruby で書かれたスクリプトが載つてゐたので、其れを Perl で書直して使ふ事にした。
#!/usr/bin/perl
#
use strict;
#
my $user = $ENV{USER};
my @argv = split ( /\s+/, shift ( @ARGV ) );
my $module = shift ( @argv );
#
my $cvs = '/usr/bin/cvs';
my $nkf = '/usr/local/bin/nkf';
my $sendmail = '/usr/sbin/sendmail';
#
my $to = 'hogehoge@example.com';
$to .= ' fugafuga@example.com' if ( $module =~ m/^foo/ );
#
my $body = '';
while ( my $l = <> ) {
$body .= $l;
}
$body .= "----------------------\n";
#
sub status_and_diff {
my ( $module, $file, $oldrev, $newrev ) = @_;
my $str = sprintf ( "\n\n%s, %s, %s, %s: \n",
$module, $file, $oldrev, $newrev );
my $path = sprintf ( "%s/%s", $module, $file );
$str .= "status:\n";
$str .= `$cvs -nQq status $file`;
$str .= "diff:\n";
$str .= `$cvs -nQq rdiff -u -r $oldrev -r $newrev $path`;
return $str;
}
sleep ( 1 ) if ( @argv );
foreach my $e ( @argv ) {
$body .= &status_and_diff ( $module, split ( /,/, $e ) );
}
my $msg = <<_MAIL_;
Subject: [CVS] $user is committing.
To: foo\@example.com
From: foo\@example.com
Reply-To: foo\@example.com
$body
_MAIL_
open ( O, "| $nkf -j -Lw | $sendmail -Ac $to" ) || die $!;
print O $msg;
close ( O );
print $msg;
exit 0;
[ツッコミを入れる]
[]