From cee488dff5d9851fd0135ca0540011b06e075e2d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 20 Mar 2026 15:02:49 -0700 Subject: [PATCH] Meta/cook: grab the initial topic description from merges to seen --- cook | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/cook b/cook index fd7181b8f7..61dfc7a827 100755 --- a/cook +++ b/cook @@ -54,6 +54,35 @@ sub describe_relation { return "(this branch " . join("; ", @desc) . ".)"; } +sub desc_from_merge { + my ($topic) = @_; + my ($fh, $accum); + open($fh, '-|', + qw(git cat-file commit), "seen^{/^Merge branch '$topic' into }") + or return undef; + $accum = undef; + + while (<$fh>) { + if (!defined $accum) { + $accum = "" if (/^Merge branch '$topic' into /); + next; + } + last if (/^\* /); + next if ($accum eq "" && /^\s*$/); + $accum .= " $_"; + } + for ($accum) { + s/^\s+//s; + s/\s*$//s; + if ($accum eq "") { + $_ = undef; + } else { + $_ = "\n $_"; + } + } + return $accum; +} + sub forks_from { my ($topic, $fork, $forkee, @overlap) = @_; my %ovl = map { $_ => 1 } (@overlap, @{$topic->{$forkee}{'log'}}); @@ -779,6 +808,10 @@ sub merge_cooking { push @new_topic, $topic; # lazily find the source for a new topic. $current->{$topic}{'src'} = join("\n", get_source($topic)); + my $summary = desc_from_merge($topic); + if (defined $summary) { + $current->{$topic}{'desc'} .= "\n$summary"; + } } next; }