summaryrefslogtreecommitdiff
path: root/Reintegrate
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-02-25 05:53:33 (GMT)
committerJunio C Hamano <gitster@pobox.com>2015-02-25 05:53:33 (GMT)
commit47f8a44dd7296d34825aa0998f3adea948685bca (patch)
tree44d5ee9d0c7473376758e015fa128002a6cb3dc8 /Reintegrate
parent21de0506514eecf666f8aa131b087a2feadb55ab (diff)
downloadgit-47f8a44dd7296d34825aa0998f3adea948685bca.zip
git-47f8a44dd7296d34825aa0998f3adea948685bca.tar.gz
git-47f8a44dd7296d34825aa0998f3adea948685bca.tar.bz2
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.
Diffstat (limited to 'Reintegrate')
-rwxr-xr-xReintegrate59
1 files changed, 39 insertions, 20 deletions
diff --git a/Reintegrate b/Reintegrate
index f6d32b5..48a698f 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 (<STDIN>) {
- 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;
}
- ' <Meta/whats-cooking.txt "$1"
+ ' "$1"
}
case "$generate" in