1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #!/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;
|