build/i18n-merge-master: ignore apps deleted in master
authorHannu Nyman <hannu.nyman@iki.fi>
Fri, 15 May 2020 13:46:23 +0000 (16:46 +0300)
committerHannu Nyman <hannu.nyman@iki.fi>
Fri, 15 May 2020 13:46:23 +0000 (16:46 +0300)
Refine the code to ignore apps that have been deleted from master
but still exist in release branches. E.g. luci-app-samba

Previously the unhandled git error from non-existing master
mangled the .po files in the release branch: the 18n header was
removed and all non-ASCII chars were deleted from translation.

Fix this by processing only those files where 'git show' succeeds.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
(cherry picked from commit e4baee8d25 in openwrt-19.07)

build/i18n-merge-master.pl

index d7479efb84a810831233bc55e2d83addabe30b65..be0474da90df3cde39d68aff6920bce56be3d3f2 100755 (executable)
@@ -7,9 +7,14 @@ if (open F, '-|', 'find', $ARGV[0] || '.', '-type', 'f', '-name', '*.po') {
                (my $ref = $path) =~ s/\.po$/\.master.po/;
 
                printf 'Updating %s ', $path;
-               system("git show --format=\%B 'master:$path' > '$ref'");
-               system('msgmerge', '-N', '-o', $path, $ref, $path);
-               system('msgattrib', '--no-obsolete', '-o', $path, $path);
+               my $returnCode = system("git show --format=\%B 'master:$path' > '$ref'");
+               if ( $returnCode == 0 )
+               {
+                       system('msgmerge', '-N', '-o', $path, $ref, $path);
+                       system('msgattrib', '--no-obsolete', '-o', $path, $path);
+               } else {
+                       print "...failed due to git error.\n";
+               }
                unlink($ref);
        }