From 47f8a44dd7296d34825aa0998f3adea948685bca Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 24 Feb 2015 21:53:33 -0800 Subject: [PATCH] Meta/Reintegrate: use older editions of what's cooking report as needed When down-merging old topics that graduated to 'master' some time ago to maintenance tracks, Meta/whats-cooking.txt that is checked out would no longer have the release notes entry for the topics. Look for recent editions of what's cooking report in such a case. --- Reintegrate | 59 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/Reintegrate b/Reintegrate index f6d32b55ed..48a698f9de 100755 --- a/Reintegrate +++ b/Reintegrate @@ -36,28 +36,47 @@ annotate_merge () { return 0; } - my ($branch) = $ARGV[0]; - my ($in_section, $in_desc); - my @msg = (); - while () { - chomp; - if (/^\* $branch /) { - $in_section = 1; - next; - } - last if (/^[-*\[]/ && $in_section); - next unless $in_section; - s/^\s+//; - if (/^$/) { - $in_desc = 1; + sub read_message { + my ($fh, $branch) = @_; + my ($in_section, $in_desc); + my @msg = (); + while (<$fh>) { + chomp; + if (/^\* $branch /) { + $in_section = 1; + next; + } + last if (/^[-*\[]/ && $in_section); + next unless $in_section; + s/^\s+//; + if (/^$/) { + $in_desc = 1; + } + next unless ($in_section && $in_desc); + next if (/Originally merged to '\''next'\'' on ([-0-9]+)/); + next if (wildo_match($_)); + push @msg, "$_\n"; } - next unless ($in_section && $in_desc); - next if (/Originally merged to '\''next'\'' on ([-0-9]+)/); - next if (wildo_match($_)); - push @msg, "$_\n"; + return ($in_section, @msg); } - if ($in_section && @msg) { + my ($branch) = $ARGV[0]; + my ($fh, $in_section, @msg); + if (open $fh, "<", "Meta/whats-cooking.txt") { + ($in_section, @msg) = read_message($fh, $branch); + } + if (!@msg) { + open my $revs, "-|", + qw(git -C Meta rev-list -32 HEAD -- whats-cooking.txt); + while (my $rev = <$revs>) { + chomp($rev); + open $fh, "-|", + qw(git -C Meta cat-file blob), "$rev:whats-cooking.txt"; + ($in_section, @msg) = read_message($fh, $branch); + last if (@msg); + } + } + if (@msg) { open(my $fh, "-|", qw(git cat-file commit HEAD)); my @original = (<$fh>); close $fh; @@ -86,7 +105,7 @@ annotate_merge () { print $fh @final; close $fh; } - '