version 1.14, 2004/07/02 22:04:50
|
version 1.15, 2014/06/09 05:14:12
|
Line 77 Options (before file/dir names):
|
Line 77 Options (before file/dir names):
|
N=2: same as N=1 except without md5sum |
N=2: same as N=1 except without md5sum |
N=3: md5sum=same --> 1; age<0 --> 2 |
N=3: md5sum=same --> 1; age<0 --> 2 |
N=4: cvstime>0 --> 2 |
N=4: cvstime>0 --> 2 |
|
N=5: md5sum=same --> 1; cvstime<0 and sha1sum from dns_checksums=different --> 2; |
|
N=6: md5sum=same --> 1; age<0 and sha1sum from dns_checksums=different --> 2; |
|
|
The third way to pass arguments is set by the -s flag. |
The third way to pass arguments is set by the -s flag. |
filecompare.pl -s SOURCE=[source] TARGET=[target] MODE=[mode] LOC1 LOC2 |
filecompare.pl -s SOURCE=[source] TARGET=[target] MODE=[mode] LOC1 LOC2 |
Line 103 unless (@ARGV) {
|
Line 105 unless (@ARGV) {
|
# size similarity (bytes) |
# size similarity (bytes) |
# line count difference |
# line count difference |
# number of different lines |
# number of different lines |
|
# sha1sum similarity to checksum for same file in installed version |
# |
# |
# Quantities of comparison: |
# Quantities of comparison: |
# existence (no,yes); other values become 'n/a' |
# existence (no,yes); other values become 'n/a' |
Line 112 unless (@ARGV) {
|
Line 115 unless (@ARGV) {
|
# size similarity (byte difference) |
# size similarity (byte difference) |
# line count difference (integer) |
# line count difference (integer) |
# number of different lines (integer) |
# number of different lines (integer) |
|
# sha1sum ("same" or "different") |
|
|
# ---------------------------------------------------------------- Dependencies |
# ---------------------------------------------------------------- Dependencies |
# implementing from unix command line (assuming bash) |
# implementing from unix command line (assuming bash) |
# md5sum, diff, wc -l |
# md5sum, diff, wc -l, sha1sum |
|
|
# ---------------------------------------------- Process command line arguments |
# ---------------------------------------------- Process command line arguments |
# Flags (before file/dir names): |
# Flags (before file/dir names): |
Line 240 my %OUTPUT=(
|
Line 244 my %OUTPUT=(
|
'size'=>(sub {print 'size: '.@_[0];return;}), |
'size'=>(sub {print 'size: '.@_[0];return;}), |
'lines'=>(sub {print 'lines: '.@_[0];return;}), |
'lines'=>(sub {print 'lines: '.@_[0];return;}), |
'diffs'=>(sub {print 'diffs: '.@_[0];return;}), |
'diffs'=>(sub {print 'diffs: '.@_[0];return;}), |
|
'sha1sum'=>(sub {print 'sha1sum: '.@_[0];return;}), |
); |
); |
|
|
my %MEASURE=( |
my %MEASURE=( |
Line 275 my %MEASURE=(
|
Line 280 my %MEASURE=(
|
my $rv2=`diff $file1 $file2 | grep '^>' | wc -l`; |
my $rv2=`diff $file1 $file2 | grep '^>' | wc -l`; |
chop $rv2; $rv2=~s/^\s+//; $rv2=~s/\s+$//; |
chop $rv2; $rv2=~s/^\s+//; $rv2=~s/\s+$//; |
return ($rv1,$rv2); } ), |
return ($rv1,$rv2); } ), |
|
'sha1sum'=>( sub { my ($file1,$file2)=@_; |
|
if (open(my $fh,"</etc/loncapa-release.prev")) { |
|
my $loncaparev = <$fh>; |
|
close($fh); |
|
chomp($loncaparev); |
|
$loncaparev =~ s/^\QLON-CAPA release \E//; |
|
$loncaparev =~ s/\-\d{8}$//; |
|
my ($rv1)=split(/ /,`sha1sum $file2`); chomp $rv1; |
|
my $checksum; |
|
if ($loncaparev eq 'CVS_HEAD') { |
|
return ($rv1,$checksum); |
|
} |
|
elsif (open(my $fh,"<../../loncom/dns_checksums/$loncaparev.tab")) { |
|
while (<$fh>) { |
|
chomp(); |
|
if (/^\Q$file2\E,[\d\.]+,(\w+)$/) { |
|
$checksum = $1; |
|
last; |
|
} |
|
} |
|
close($fh); |
|
return ($rv1,$checksum); |
|
} |
|
} |
|
return('n/a','n/a'); }), |
); |
); |
|
|
FLOOP: foreach my $file (@files) { |
FLOOP: foreach my $file (@files) { |
Line 290 FLOOP: foreach my $file (@files) {
|
Line 320 FLOOP: foreach my $file (@files) {
|
} |
} |
my ($existence1,$existence2)=&{$MEASURE{'existence'}}($file1,$file2); |
my ($existence1,$existence2)=&{$MEASURE{'existence'}}($file1,$file2); |
my $existence=$existence1.':'.$existence2; |
my $existence=$existence1.':'.$existence2; |
my ($cvstime,$md5sum,$age,$size,$lines,$diffs); |
my ($cvstime,$md5sum,$age,$size,$lines,$diffs,$sha1sum); |
if ($existence1 eq 'no' or $existence2 eq 'no') { |
if ($existence1 eq 'no' or $existence2 eq 'no') { |
$md5sum='n/a'; |
$md5sum='n/a'; |
$age='n/a'; |
$age='n/a'; |
Line 298 FLOOP: foreach my $file (@files) {
|
Line 328 FLOOP: foreach my $file (@files) {
|
$size='n/a'; |
$size='n/a'; |
$lines='n/a'; |
$lines='n/a'; |
$diffs='n/a'; |
$diffs='n/a'; |
|
$sha1sum='n/a'; |
} |
} |
else { |
else { |
if ($buildmode) { |
if ($buildmode) { |
my ($cvstime1,$cvstime2)=&{$MEASURE{'cvstime'}}($file1,$file2); |
my ($cvstime1,$cvstime2)=&{$MEASURE{'cvstime'}}($file1,$file2); |
$cvstime=$cvstime1-$cvstime2; |
$cvstime=$cvstime1-$cvstime2; |
} |
my ($sha1sumfile,$checksum) = &{$MEASURE{'sha1sum'}}($file1,$file2); |
|
$sha1sum='n/a'; |
|
unless ($checksum eq 'n/a') { |
|
if ($sha1sumfile && $checksum) { |
|
if ($sha1sumfile eq $checksum) { |
|
$sha1sum='same'; |
|
} |
|
else { |
|
$sha1sum='different'; |
|
} |
|
} |
|
} |
|
} |
else { |
else { |
$cvstime='n/a'; |
$cvstime='n/a'; |
|
$sha1sum='n/a'; |
} |
} |
my ($age1,$age2)=&{$MEASURE{'age'}}($file1,$file2); |
my ($age1,$age2)=&{$MEASURE{'age'}}($file1,$file2); |
$age=$age1-$age2; |
$age=$age1-$age2; |
Line 468 FLOOP: foreach my $file (@files) {
|
Line 512 FLOOP: foreach my $file (@files) {
|
exit(0); |
exit(0); |
} |
} |
} |
} |
|
elsif ($buildmode==5) { # -b5 |
|
if ($md5sum eq 'same') { |
|
exit(1); |
|
} |
|
elsif ($cvstime<0) { |
|
if ($sha1sum eq 'same') { |
|
exit(0); |
|
} |
|
else { |
|
exit(2); |
|
} |
|
} |
|
else { |
|
exit(0); |
|
} |
|
} |
|
elsif ($buildmode==6) { # -b6 |
|
if ($md5sum eq 'same') { |
|
exit(1); |
|
} |
|
elsif ($age<0) { |
|
if ($sha1sum eq 'same') { |
|
exit(0); |
|
} |
|
else { |
|
exit(2); |
|
} |
|
} |
|
else { |
|
exit(0); |
|
} |
|
} |
|
|
if ($showflag) { |
if ($showflag) { |
print "$file"; |
print "$file"; |
if ($verbose==1) { |
if ($verbose==1) { |
Line 479 FLOOP: foreach my $file (@files) {
|
Line 556 FLOOP: foreach my $file (@files) {
|
print &{$OUTPUT{'age'}}($age); |
print &{$OUTPUT{'age'}}($age); |
print "\t"; |
print "\t"; |
print &{$OUTPUT{'md5sum'}}($md5sum); |
print &{$OUTPUT{'md5sum'}}($md5sum); |
|
print "\t"; |
|
print &{$OUTPUT{'sha1sum'}}($sha1sum); |
print "\t"; |
print "\t"; |
print &{$OUTPUT{'size'}}($size); |
print &{$OUTPUT{'size'}}($size); |
print "\t"; |
print "\t"; |
print &{$OUTPUT{'lines'}}($lines); |
print &{$OUTPUT{'lines'}}($lines); |
print "\t"; |
print "\t"; |
print &{$OUTPUT{'diffs'}}($diffs); |
print &{$OUTPUT{'diffs'}}($diffs); |
|
|
} |
} |
print "\n"; |
print "\n"; |
} |
} |