I have a script here that generates a diff from a CVS tree, and does
the historically approved thing with ChangeLogs. And it avoids a CVS
bug (got to move to a new CVS server...) And it avoids generated
files.
Ben: you might consider running this to generate your next version of
big-patch, which will avoid the generated files in your output.
: #-*- Perl -*-
eval 'exec perl -w -S $0 ${1+"$@"}' # Portability kludge
if 0; # Author: Martin Buchholz
use strict;
(my $myName = $0) =~ s@.*/@@; my $usage="
Usage: $myName [diff-arg ...]
Make a CVS diff for submission as a patch to the maintainers.\n";
die $usage if grep (/^-h/, @ARGV);
my $debug = defined $ENV{VERBOSE} || defined $ENV{DEBUG};
chomp (my @files = `cvs-mods`);
my @ChangeLogs = grep ( m@(^|/)ChangeLog$@, @files);
@files = grep (! m(a)(^|/)(ChangeLog|configure|depend|auto-autoloads.el|custom-load.el)$@,
@files);
select(STDOUT); $| = 1;
for my $ChangeLog (@ChangeLogs) {
print "\n$ChangeLog:\n\n";
system "cvs diff -w @ARGV $ChangeLog | sed -n 's/^\+//p' | grep -v
'^\\+\\+\\+'";
}
print "\n";
# cvs has an evil bug that if I give a list of files containing both
# files in the current directory and in subdirectories, cvs ignores
# the files in the current directory.
sub Diff {
@_ = ('cvs', 'diff', '-w', @_);
die "Can't fork: $!\n" unless defined (my $pid = fork());
if ($pid == 0) { exec @_ or die "Can't exec @_: $!\n"; }
waitpid($pid,0);
}
Diff grep ( m@/@, @files) if grep ( m@/@, @files);
Diff grep (! m@/@, @files) if grep (! m@/@, @files);