#!/usr/bin/env perl if (open F, '-|', 'find', $ARGV[0] || '.', '-type', 'f', '-name', '*.po') { while (defined(my $path = readline F)) { chomp $path; (my $ref = $path) =~ s/\.po$/\.master.po/; printf 'Updating %s ', $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); } close F; }