10
by Oleg Tsarev
propogate Oleg's patches |
1 |
#!/usr/bin/env sh
|
2 |
a=$1 |
|
3 |
b=$2 |
|
4 |
patch_name=$3 |
|
5 |
prefix="[$patch_name]" |
|
6 |
big_prefix="$prefix ===== " |
|
7 |
echo "$big_prefix Regenerate patch $patch_name based thought $a and $b" |
|
8 |
echo "$big_prefix Header is:" |
|
9 |
cat $patch_name | head -n7; |
|
10 |
echo "$big_prefix Ok, let's go:" |
|
11 |
patch_name_new=$patch_name.new; |
|
12 |
patch_name_split=$patch_name.split; |
|
13 |
echo "$prefix Remove $patch_name_new if exists..." |
|
14 |
rm -f $patch_name_new; |
|
15 |
echo "$prefix Remove $patch_name_split if exists..." |
|
16 |
rm -rf $patch_name_split; |
|
17 |
echo "$prefix Create $patch_name_split" |
|
18 |
mkdir $patch_name_split; |
|
19 |
cd $patch_name_split; |
|
20 |
echo "$prefix Add header" |
|
21 |
cat ../$patch_name | head -n7 > ../$patch_name_new |
|
22 |
echo "$prefix Split to separated files" |
|
23 |
for filename in `splitdiff -a -d ../$patch_name | awk '{ print $2 }' | sed -e "s/>//g"`; do |
|
24 |
echo "$prefix extract diff metainformation from $filename" |
|
25 |
a_head=`cat $filename | head -n2 | head -n1`; |
|
26 |
b_head=`cat $filename | head -n2 | tail -n1`; |
|
27 |
a_path=`echo $a_head | awk '{ print $2 }'`; |
|
28 |
b_path=`echo $b_head | awk '{ print $2 }'`; |
|
29 |
diff_string="diff -ruN $a_path $b_path"; |
|
30 |
echo "$big_prefix $filename metainformation is:"; |
|
31 |
echo "$prefix $diff_string"; |
|
32 |
echo "$prefix $a_head" |
|
33 |
echo "$prefix $b_head" |
|
34 |
echo "$big_prefix Update patch by $filename" |
|
35 |
(cd ..; echo $diff_string >> $patch_name_new); |
|
36 |
(cat $filename | head -n2 | head -n1 >> ../$patch_name_new); |
|
37 |
(cat $filename | head -n2 | tail -n1 >> ../$patch_name_new); |
|
38 |
(cd ..; diff -ruN $a_path $b_path | tail -n+3 >> $patch_name_new); |
|
39 |
done; |
|
40 |
cd ..; |
|
41 |
echo "$prefix Rename temporary patch to final" |
|
42 |
cat $patch_name_new > $patch_name; |
|
43 |
echo "$prefix Remove temporary files" |
|
44 |
rm $patch_name_new; |
|
45 |
rm -rf $patch_name_split; |
|
46 |
echo "$big_prefix Complete" |