Eu escrevi um pequeno script Perl para corrigir os arquivos. Este script é muito básico, que percorre os diretórios recursivamente e busca o arquivo e cria um diff.
Usage: script_name.pl <source_dir> <dest_dir> <dir_2_create_diffs>
testpatch.pl
#!/usr/bin/perl
use File::Find;
my $source = $ARGV[0];
my $dest = $ARGV[1];
my $pathdir = $ARGV[2];
unless (defined $ARGV[2]) { print "Usage: $0 <source> <dest> <patch_directory>\n"; exit 0; }
my @alldir;
find sub {
return if -d;
push @alldir, $File::Find::name;
}, "$source";
for my $path ( @alldir) {
my @tmp = split ("/",$path); my $rmt_dir = shift(@tmp);
my $fpath = join("/",@tmp); my $fn = $tmp[-1];
pop(@tmp); my $strp_path = join("/",@tmp);
'mkdir -p $pathdir/$strp_path' unless( -d "$pathdir/$strp_path");
'diff -dupN $path $dest$fpath > $pathdir/$strp_path/$fn.patch';
}
Uso da amostra: $ ./testpatch.pl original_308/ tmp/ tmp1
Eu criei arquivos de amostra (header.cpp, head1.S, head.S)
- original_308 / arch / arm / boot: header.cpp
- original_308 / arch / arm / boot / compactado: head1.S head.S
- tmp / arch / arm / boot: header.cpp
- tmp / arch / arm / boot / compactado: head1.S
cabeça.S
Depois de executar o script, os diffs foram criados em um novo diretório "tmp1"
Saída:
- tmp1 / arch / arm / boot: header.cpp.patch
- tmp1 / arch / arm / boot / compactado: head1.S.patch head.S.patch
Espero que isso ajude.