Alexandre Julliard : patches: Add commit URL to committed patch notifications.

Alexandre Julliard julliard at winehq.org
Fri Dec 22 08:49:36 CST 2017


Module: tools
Branch: master
Commit: fd1adfc8ec7aa9bbace4f1cb034d69e4ebffa269
URL:    https://source.winehq.org/git/tools.git/?a=commit;h=fd1adfc8ec7aa9bbace4f1cb034d69e4ebffa269

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Dec 21 17:44:33 2017 +0100

patches: Add commit URL to committed patch notifications.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 patches/expire | 62 +++++++++++++++++++++++++++-------------------------------
 1 file changed, 29 insertions(+), 33 deletions(-)

diff --git a/patches/expire b/patches/expire
index ba98885..53e3f27 100755
--- a/patches/expire
+++ b/patches/expire
@@ -160,12 +160,24 @@ foreach my $arg (@ARGV)
     else { $dir = $arg; }
 }
 
+sub read_file($)
+{
+    my $file = shift;
+    if (open FILE, "<$file")
+    {
+        chomp( my $ret = <FILE> );
+        close FILE;
+        return $ret;
+    }
+    return undef;
+}
+
 sub get_patch_state($)
 {
     my $file = shift;
     my %patch;
 
-    return undef unless open PATCH, "<$dir/$file";
+    return () unless open PATCH, "<$dir/$file";
     while (<PATCH>)
     {
         if (/^Subject: (.*)$/) { $patch{subject} = $1; }
@@ -190,33 +202,11 @@ sub get_patch_state($)
     $patch{file} = $file;
     $patch{status} ||= "nil";
     $patch{mtime} ||= (stat "$dir/$file")[9];
+    $patch{commit} = read_file( "$dir/$file.commit" ) if $patch{status} eq "committed";
+    $patch{prev_status} = read_file( "$dir/OLD/$file.status" ) || "nil";
     return %patch;
 }
 
-sub get_previous_state($)
-{
-    my $file = shift;
-    my $prev_status = "nil";
-
-    if (open PREVSTATUS, "<$dir/OLD/$file.status")
-    {
-        $prev_status = <PREVSTATUS>;
-        chomp $prev_status;
-        close PREVSTATUS;
-    }
-    return $prev_status;
-}
-
-sub get_patch_reviewer($)
-{
-    my $file = shift;
-
-    return undef unless open REVIEW, "<$dir/$file.review";
-    chomp( my $ret = <REVIEW> );
-    close REVIEW;
-    return $ret;
-}
-
 sub get_notify_headers($$)
 {
     my $file = shift;
@@ -254,11 +244,12 @@ sub get_notify_headers($$)
     return @headers;
 }
 
-sub notify_state_change($$$)
+sub notify_state_change(%)
 {
-    my $file = shift;
-    my $prev_status = shift;
-    my $status = shift;
+    my (%patch) = @_;
+    my $file = $patch{file};
+    my $status = $patch{status};
+    my $prev_status = $patch{prev_status};
 
     return if $prev_status eq $status;
 
@@ -269,7 +260,7 @@ sub notify_state_change($$$)
 
     if ($status eq "assigned")
     {
-        my $reviewer = get_patch_reviewer( $file );
+        my $reviewer = read_file( "$dir/$file.review" );
         push @{$reviews{$reviewer}}, $file if $reviewer;
     }
 
@@ -293,7 +284,11 @@ been reviewed and its status set to "$status_descr{$status}".
 $status_explanation{$status}
 EOF
 
-    if ($status ne "committed" && $status ne "assigned")
+    if ($patch{commit})
+    {
+        printf SENDMAIL "\nCommit: %s\n", $patch{commit};
+    }
+    elsif ($status ne "committed" && $status ne "assigned")
     {
         print SENDMAIL <<"EOF";
 
@@ -373,9 +368,9 @@ foreach my $file (sort readdir DIR)
 {
     next unless $file =~ /^[0-9]+$/;
     my %patch = get_patch_state( $file );
-    my $prev_status = get_previous_state( $file );
+    next unless defined $patch{file};
 
-    notify_state_change( $file, $prev_status, $patch{status} );
+    notify_state_change( %patch );
 
     $patches{$patch{msgid}} = \%patch;
 }
@@ -394,6 +389,7 @@ foreach my $p (keys %patches)
         {
             unlink "$dir/$file";
             unlink "$dir/$file.status";
+            unlink "$dir/$file.commit";
             unlink "$dir/$file.order";
             unlink "$dir/$file.review";
             unlink "$dir/$file.testbot";




More information about the wine-cvs mailing list