在已有代码上修改代码一般要生成diff文件来生成patch,从而porting到相关baseline上。
修改文件较少时可以一个个来生成,但是当修改文件较多时就会很耗费工时,所以就想
写一个脚本来减少工时消耗。你只需要关注coding,而不必担心diff文件的生成。
实现的思想只要是:首先搜索以".orig"结尾的文件(这可以通过vim中设置来自动生成),
然后截断.orig来获得修改后的文件。从而生成已"*.diff"结尾的diff文件也可以成为patch。
当把这三个相关文件复制到一个专门存放code文件夹中时,要考虑在coding文件夹中创建
相关目录,目录只能是一级一级创建。所以要用到split来分割。
具体实现如下:
[python] view plaincopy
1 #!/usr/bin/perl 2 3 4 # create a direction to save coding files 5 $code = "./coding"; 6 if(-d $code) 7 { 8 print "Direction $code already existed. Remove it\n"; 9 `rm -rf $code`; 10 } 11 print "create $code direction\n"; 12 `mkdir $code`; 13 14 15 #Find orig file and modifed file for mkdir diff file 16 foreach $orig_file_name (`find . -name "*.orig" -size +0c`){ 17 chomp ($orig_file_name); 18 $file_name = substr($orig_file_name, 0, index($orig_file_name, ".orig")); 19 if(-f $file_name) 20 { 21 $diff_file_name = $file_name.".diff"; 22 print "find $file_name\n"; 23 print "find $orig_file_name\n"; 24 print "create $diff_file_name\n"; 25 `diff -c $orig_file_name $file_name > $diff_file_name`; 26 27 @dTree = split(/\//, $orig_file_name); 28 $a = @dTree; 29 $d = $code; 30 for($i = 1; $i < $a - 1; $i++) 31 { 32 $d = "$d/$dTree[$i]"; 33 `mkdir $d`; 34 } 35 print "create $d\n"; 36 print "copy $file_name, $orig_file_name, $diff_file_name to $d\n"; 37 `cp $file_name $d`; 38 `cp $orig_file_name $d`; 39 `cp $diff_file_name $d`; 40 }
时间: 2024-11-05 14:42:47