releaseAutomation/mercurialComparison.pl
changeset 57 18edc8e9ec9e
parent 56 9b6317ec9e32
child 78 ce6215be051a
child 82 bbe9783cf993
--- a/releaseAutomation/mercurialComparison.pl	Thu Sep 17 14:18:32 2009 +0100
+++ b/releaseAutomation/mercurialComparison.pl	Thu Sep 17 16:39:00 2009 +0100
@@ -25,14 +25,14 @@
 defined shift and die "No more than three arguments please\n";
 
 # Use external scripts to get the raw data and produce the CSV summary (to go into Excel, etc)
-system("perl $FindBin::Bin\\..\\clone_packages\\clone_all_packages.pl -packagelist $bomInfoFile -exec -- hg status -A --rev $previousPdkLabel 2>&1 | perl $FindBin::Bin\\..\\williamr\\summarise_hg_status.pl 2> nul: > $detailsTsvFilename");
+my @pkgErrors = `perl $FindBin::Bin\\..\\clone_packages\\clone_all_packages.pl -packagelist $bomInfoFile -exec -- hg status -A --rev $previousPdkLabel 2>&1 | perl $FindBin::Bin\\..\\williamr\\summarise_hg_status.pl 2>&1 > $detailsTsvFilename`;
 
-# The redirection above means that we discard STDERR from summarise_hg_status,
+# The redirection above means that we capture STDERR from summarise_hg_status,
 # which lists packages for which it was unable to generate any data
 # 
-# It's discarded because that happens either because it's a new package or has
+# It's captured because that happens either because it's a new package or has
 # moved from SFL -> EPL or we've reverted to using the MCL instead of the FCL
-# (in which cases it's dealt with in another part of the release notes) or it
+# (in which case it's dealt with in another part of the release notes) or it
 # just hasn't had any changes since the last release
 
 # Input from TSV file
@@ -65,8 +65,16 @@
 	$cookedData{$datum->{Package}}->{same} += $datum->{Count} if $datum->{Change} eq "same";
 	$cookedData{$datum->{Package}}->{addRemove} += $datum->{Count} if $datum->{Change} =~ m{^[AR]$};
 }
+# Add the "exception" packages
+foreach my $package (@pkgErrors)
+{
+	chomp $package;
+	$package =~ s{No valid comparison for }{};
+	$cookedData{$package}->{exception} = "Package is brand new, or converted from SFL -> EPL, or has transitioned from FCL back to MCL (not covered in this section)\n";
+}
 
 # Cut-off for "interesting" packages
+
 foreach my $package (keys %cookedData)
 {
 	# Ensure items are defined
@@ -74,11 +82,14 @@
 	$cookedData{$package}->{same} |= 0;
 	$cookedData{$package}->{addRemove} |= 0;
 	$cookedData{$package}->{percentChurn} = 100 * (1 - ($cookedData{$package}->{same} / $cookedData{$package}->{totalFiles}));
+	$cookedData{$package}->{exception} |= "";
 	
 	# More than N files added + removed
 	next if $cookedData{$package}->{addRemove} >= 400;
 	# More than M% churn
 	next if $cookedData{$package}->{percentChurn} > 30;
+	# Unable to compare at all
+	next if $cookedData{$package}->{exception};
 	# Nothing interesting about this package
 	delete $cookedData{$package};
 }
@@ -102,7 +113,7 @@
 
 $cookedData{$package}->{addRemove} files added/removed
 $cookedData{$package}->{percentChurn}% churn
-
+$cookedData{$package}->{exception}
 * Cause1
 * etc