mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
simple perl script for retreiving cvs log messages for a file
after a given date. I use it to help update the WHATSNEW.txt for a
release.
./cvslog.pl SAMBA_2_2 '>2002-06-18' configure.in
The output is a little messy right now, but I plan to clean that up.
(This used to be commit 8812223e2a
)
This commit is contained in:
parent
d7ad31cdea
commit
ea27af285a
102
source3/script/cvslog.pl
Executable file
102
source3/script/cvslog.pl
Executable file
@ -0,0 +1,102 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
my ( $tag, $filename, $date );
|
||||
my ( $tmp, $change_flag );
|
||||
|
||||
if ( $#ARGV != 2 ) {
|
||||
|
||||
print "Usage: ", $0, " cvstag date file\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
$tag = $ARGV[0];
|
||||
$date = $ARGV[1];
|
||||
$filename = $ARGV[2];
|
||||
|
||||
print STDERR "$filename\n";
|
||||
|
||||
open ( CVSLOG, "cvs log -d\"$date\" $filename |" ) || die $!;
|
||||
|
||||
##
|
||||
## First get the branch revision number
|
||||
##
|
||||
undef $revision;
|
||||
while ( !defined($revision) ) {
|
||||
if ( eof( \*CVSLOG ) ) {
|
||||
print STDERR "Premature end of cvs log output!\n";
|
||||
exit (1);
|
||||
}
|
||||
|
||||
$string = <CVSLOG>;
|
||||
chomp( $string );
|
||||
|
||||
if ( $string =~ /$tag:/ ) {
|
||||
( $tmp, $revision ) = split( /:/, $string );
|
||||
$revision =~ s/\s+//g;
|
||||
$revision =~ s/\.0\./\./g;
|
||||
}
|
||||
}
|
||||
|
||||
##
|
||||
## Setup the beginning of the first record
|
||||
##
|
||||
$string = "";
|
||||
while ( $string !~ /^-+/ ) {
|
||||
$string = <CVSLOG>;
|
||||
exit(0) if ( eof(\*CVSLOG) );
|
||||
}
|
||||
|
||||
##
|
||||
## Loop starting at the revision number for the entry
|
||||
##
|
||||
|
||||
while ( $string = <CVSLOG> ) {
|
||||
|
||||
($tmp, $entry_rev) = split( /\s+/, $string );
|
||||
if ( equal_revision( $revision, $entry_rev ) ) {
|
||||
if ( ! defined($change_flag) ) {
|
||||
print "++++++++++++++++++++++++++++++++++++++++++++++++++\n";
|
||||
print "## $filename\n";
|
||||
print "++\n";
|
||||
$change_flag = 1;
|
||||
}
|
||||
|
||||
while ( $string !~ /^-+/ && !eof(CVSLOG) ) {
|
||||
print "$string";
|
||||
$string = <CVSLOG>;
|
||||
}
|
||||
}
|
||||
else {
|
||||
while ( ($string !~ /^-+/) && !eof(CVSLOG) ) {
|
||||
$string = <CVSLOG>;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
close( CVSLOG );
|
||||
exit 0;
|
||||
|
||||
##############################################################
|
||||
##
|
||||
sub equal_revision {
|
||||
my ( $branch, $newfile ) = @_;
|
||||
my ( $indx );
|
||||
my ( @branch_rev, @file_rev );
|
||||
|
||||
@branch_rev = split( /\./, $branch );
|
||||
@file_rev = split( /\./, $newfile );
|
||||
|
||||
return 0 if ( $#branch_rev != ($#file_rev - 1) );
|
||||
|
||||
$indx = 0;
|
||||
while( $indx <= $#branch_rev ) {
|
||||
if ( $branch_rev[$indx] != $file_rev[$indx] ) {
|
||||
return 0;
|
||||
}
|
||||
$indx++;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user