]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
release-notes.pl: ignore dupes on input and output
authorDaniel Stenberg <daniel@haxx.se>
Tue, 15 Jul 2025 15:43:57 +0000 (17:43 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 15 Jul 2025 16:28:37 +0000 (18:28 +0200)
Re-running this script now makes it track the already mentioned
changelog entries and not add them again even if the git log contains
them.

This makes the script better handle reruns in a release branch after
rebasing on a later version of master.

Closes #17937

scripts/release-notes.pl

index c72b56de6ea0d2ff085180c2e6a9033aa4b68c1e..741235a3e66e50d18547507560c7217927bf237b 100755 (executable)
@@ -61,16 +61,29 @@ my @releasenotes=`cat RELEASE-NOTES`;
 my @o; # the entire new RELEASE-NOTES
 my @refused; # [num] = [2 bits of use info]
 my @refs; # [number] = [URL]
+my %dupe;
 for my $l (@releasenotes) {
     if($l =~ /^ o .*\[(\d+)\]/) {
         # referenced, set bit 0
         $refused[$1]=1;
+        my $m = $l;
+        chomp $m;
+        $m =~ s/^ o //;
+        $m =~ s/ \[\d+\]$//;
+        $dupe{$m} = 1; # mark this as present
     }
     elsif($l =~ /^ \[(\d+)\] = (.*)/) {
         # listed in a reference, set bit 1
         $refused[$1] |= 2;
         $refs[$1] = $2;
     }
+    # mention without reference
+    elsif($l =~ /^ o (.*)/) {
+        my $m = $l;
+        chomp $m;
+        $m =~ s/^ o //;
+        $dupe{$m} = 1; # mark this as present
+    }
 }
 
 # Return a new fresh reference number
@@ -156,6 +169,11 @@ sub onecommit {
     my ($short)=@_;
     my $ref;
 
+    if($dupe{$short}) {
+        # this git commit message was found in the file
+        return;
+    }
+
     if($bug[0]) {
         $ref = $bug[0];
     }
@@ -185,6 +203,11 @@ for my $l (@releasenotes) {
         push @o, $l;
         push @o, "\n";
         for my $f (@line) {
+            if($dupe{$f}) {
+                # this item is already listed
+                next;
+            }
+
             push @o, sprintf " o %s%s\n", $f,
                 $moreinfo{$f}? sprintf(" [%d]", $moreinfo{$f}): "";
             $refused[$moreinfo{$f}]=3;