ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/yiiyama/Toolset/scripts/filepatch
Revision: 1.1
Committed: Fri Apr 20 18:11:59 2012 UTC (13 years ago) by yiiyama
Branch: MAIN
CVS Tags: HEAD
Log Message:
renamed patch

File Contents

# Content
1 #!/bin/bash
2
3 dodiff=0
4 force=0
5 single=0
6 while [ $# -gt 0 ]; do
7 case $1 in
8 -d)
9 dodiff=1
10 shift
11 ;;
12 -f)
13 force=1
14 shift
15 ;;
16 -s)
17 single=1
18 shift
19 ;;
20 *)
21 break
22 ;;
23 esac
24 done
25
26 cpr(){
27 if [ $dodiff -eq 1 ]; then
28 if [ $single -eq 0 ]; then
29 for entry in $(ls $2); do
30 if [ $entry = "CVS" -o $(expr "$entry" : '[^~]*[~]') -ne 0 ]; then
31 continue
32 fi
33
34 if [ -e $1/$entry ]; then
35 continue
36 fi
37
38 if [ -d $2/$entry ]; then
39 echo "###Patch: Directory $1/$entry does not exist"
40 elif [ -f $2/$entry ]; then
41 echo "###Patch: File $1/$entry does not exist"
42 fi
43
44 done
45 fi
46 fi
47
48 for entry in $(ls $1); do
49 if [ $entry = "CVS" -o $(expr "$entry" : '[^~]*[~]') -ne 0 ]; then
50 continue
51 fi
52
53 if [ -d $1/$entry -a ! -e $2/$entry ]; then
54 if [ $dodiff -eq 1 ]; then
55 echo "###Patch: Directory $2/$entry does not exist"
56 continue
57 else
58 echo "###Patch: mkdir $2/$entry"
59 mkdir $2/$entry
60 fi
61 fi
62
63 if [ -d $1/$entry ]; then
64 cpr $1/$entry $2/$entry
65 else
66 if [ $dodiff -eq 1 ]; then
67 if [ -e $2/$entry ]; then
68 echo "###Patch: diff $1/$entry $2/$entry"
69 diff $1/$entry $2/$entry
70 echo ""
71 else
72 echo "###Patch: File $2/$entry does not exist"
73 fi
74 else
75 if [ ! -e $2/$entry -o -n "$(diff $1/$entry $2/$entry)" ]; then
76 copy=0
77 if [ -e $2/$entry -a $force -eq 0 ]; then
78 copy=-1
79 while [ $copy -lt 0 ]; do
80 echo "###Patch: Overwrite $2/$entry? (Y=yes|n=no|d=diff)"
81 read answer
82 case $answer in
83 'Y')
84 copy=1
85 ;;
86 'n')
87 copy=0
88 ;;
89 'd')
90 echo "###Patch: diff $1/$entry $2/$entry"
91 diff $1/$entry $2/$entry
92 ;;
93 *)
94 ;;
95 esac
96 done
97 else
98 copy=1
99 fi
100 if [ $copy -eq 1 ]; then
101 echo "###Patch: cp $1/$entry $2/"
102 cp $1/$entry $2/
103 fi
104 fi
105 fi
106 fi
107 done
108 }
109
110 if [ ! -d "$1" -o ! -d "$2" ]; then
111 echo "Usage: patch DIR1 DIR2"
112 exit 1
113 fi
114
115 cpr $1 $2
116
117