From: Jo-Philipp Wich Date: Thu, 1 Jul 2021 19:10:53 +0000 (+0200) Subject: build: add script to find commits suitable for cherry picking X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=48a78f01a84795263187cfbc71cf573c8c4596ee;p=openwrt-luci.git build: add script to find commits suitable for cherry picking Signed-off-by: Jo-Philipp Wich --- diff --git a/build/find-cherry-pick-candidates.pl b/build/find-cherry-pick-candidates.pl new file mode 100755 index 0000000000..658c499fa4 --- /dev/null +++ b/build/find-cherry-pick-candidates.pl @@ -0,0 +1,44 @@ +#!/usr/bin/env perl + +use strict; + +sub git { + my $res = undef; + + if (open my $git, '-|', 'git', @_) { + { + local $/; + $res = readline $git; + } + + chomp $res; + close $git; + } + + return $res; +} + +my $release_branch = git(qw(rev-parse --abbrev-ref HEAD)); +my $default_branch = system(qw(git show-ref --verify --quiet refs/heads/main)) ? 'master' : 'main'; + +if ($release_branch eq $default_branch) { + printf STDERR "Please execute from a non-default branch\n"; + exit 1; +} + +open my $cherry, '-|', 'git', 'cherry', '-v', $release_branch, $default_branch; + +while (defined(my $line = readline $cherry)) { + my ($id, $subject) = $line =~ m!^\+ ([a-f0-9]+) (.*)$!; + next unless $id; + + my $found = git('log', '-1', '-E', "--grep=(backported|cherry picked) from commit $id"); + next if $found; + + my @files = split /\n/, git('show', '--pretty=format:', '--name-only', $id); + next unless grep { !/\.pot?$/ } @files; + + print "$id $subject\n"; +} + +close $cherry;