-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcheckdiff
executable file
·47 lines (35 loc) · 1.03 KB
/
checkdiff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/bash
SOFT_NAME=$(basename $0);
if [ $# -eq 2 ]; then
SECOND="$1"
FIRST="$2"
else
echo "$SOFT_NAME : missing arguments"
echo "usage : $SOFT_NAME \${source} \${target}"
exit 127
fi
mkdir -p "/tmp/$SOFT_NAME"
temp_filename="/tmp/$SOFT_NAME/$(random_string 20).diff"
> "$temp_filename"
rm_temp_file () {
rm $temp_filename
}
trap rm_temp_file EXIT
set -euo pipefail
for file in $(find "$SECOND" -type f -not -path '*/CVS/*' -path '*/.git/*' -path '*/.idea/*');
do
cfile="${file##$SECOND/}"
if ! [ -f "$FIRST/$cfile" ];then
if diff -u "$FIRST/$cfile" "$SECOND/$cfile" > "$temp_filename";then
echo "$1::$cfile and $2::$cfile are identical"
else
cat $temp_filename | colordiff | less -R
echo "Press key to continue, y to patch $cfile"
read -p "" -n 1 letter
if [ "$letter" = "y" ]; then
echo "\nPatching $SECOND/$cfile ..."
patch -i $temp_filename "$FIRST/$cfile";
fi
fi
fi
done