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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
--- contrib/client-side/asvn.orig Tue Jun 15 06:02:44 2004
+++ contrib/client-side/asvn Thu May 18 16:05:43 2006
@@ -36,6 +36,7 @@
#
#
#-------------------------------------------------------------------------
+EDITOR?=vi
SVN=/usr/local/bin/svn
ACTION=""
DEV_PROP="dir:devices"
@@ -46,7 +47,7 @@
TMPFILE2=/tmp/asvn.tmp2.$$
PCWD=`/bin/pwd`
SKIPSVN='\( -name .svn -prune -false \)'
-PRINTDETAILS="-printf \"file='%p' mode=%m user=%u(%U) group=%g(%G)\n\""
+PRINTDETAILS="-printf \"file='%p' mode=%m user=(%U) group=(%G)\n\""
trap cleanup 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
@@ -105,7 +106,7 @@
function recorddirinfo
{
- eval "find $PCWD $SKIPSVN -o \( -type d ! -name .svn -print \)" |while read dirlist
+ eval "gfind $PCWD $SKIPSVN -o \( -type d ! -name .svn -print \)" |while read dirlist
do
updatedirsymlinks $1 $dirlist
updatedirdevices $1 $dirlist
@@ -126,9 +127,9 @@
#
# Obtain the list of devices in this directory
#
- find "$dir" \( \( -type b -o -type c -o -type p \) -print \) -o -type d ! -name "`basename $dir`" -prune | while read file
+ gfind "$dir" \( \( -type b -o -type c -o -type p \) -print \) -o -type d ! -name "`basename $dir`" -prune | while read file
do
- echo -n `find $file -printf "file='%f' mode=%m user=%u(%U) group=%g(%G)"`
+ echo -n `gfind $file -printf "file='%f' mode=%m user=%u(%U) group=%g(%G)"`
[ -b $file ] && echo -n ' type=b'
[ -c $file ] && echo -n ' type=c'
[ -p $file ] && echo ' type=p'
@@ -194,10 +195,10 @@
grep -q "$info" $TMPFILE && continue # This line still matches
file=`expr "$info" : "file='\(.*\)' "`
mode=`expr "$info" : ".*' mode=\([0-9]*\) "`
- user=`expr "$info" : ".* user=\([^(]*\)("`
- uid=`expr "$info" : ".* user=[^(]*(\([0-9]*\) "`
- group=`expr "$info" : ".* group=\([^(]*\)("`
- gid=`expr "$info" : ".* group=[^(]*(\([0-9]*\) "`
+# user=`expr "$info" : ".* user=\([^(]*\)("`
+ uid=`expr "$info" : ".* user=[^(]*(\([0-9]*\)"`
+# group=`expr "$info" : ".* group=\([^(]*\)("`
+ gid=`expr "$info" : ".* group=[^(]*(\([0-9]*\)"`
type=`expr "$info" : ".* type=\(.\)"`
major=`expr "$info" : ".* major=\([0-9]*\)"`
minor=`expr "$info" : ".* minor=\([0-9]*\)"`
@@ -207,7 +208,8 @@
#
rm -f $dir/$file
mknod --mode=$mode $dir/$file $type $major $minor
- chown $user:$group $dir/$file
+# chown $user:$group $dir/$file
+ chown $uid:$gid $dir/$file
addignorefile $dir/$file
done
fi
@@ -228,7 +230,7 @@
#
# Obtain the list of symlinks in this directory
#
- find "$dir" \( -type l -printf "file='%f' dest='%l'\n" \) -o -type d ! -name "`basename $dir`" -prune |
+ gfind "$dir" \( -type l -printf "file='%f' dest='%l'\n" \) -o -type d ! -name "`basename $dir`" -prune |
sort >$TMPFILE
#
@@ -294,7 +296,7 @@
if [ -L $dir/$file ]
then
- [ "`find $dir/$file -printf '%l'`" = "$dest" ] && continue
+ [ "`gfind $dir/$file -printf '%l'`" = "$dest" ] && continue
fi
rm -f $dir/$file
ln -s $dest $dir/$file
@@ -313,37 +315,39 @@
# Find all the directories and files
cp /dev/null $TMPFILE
- eval "find $PCWD $SKIPSVN -o \( \( -type d ! -name .svn \) -o -type f \) $PRINTDETAILS" | while read info
+ eval "gfind $PCWD $SKIPSVN -o \( \( -type d ! -name .svn \) -o -type f \) $PRINTDETAILS" | while read info
do
device=`expr "$info" : "file='\(.*\)' mode"`
info=`expr "$info" : "file='.*' \(mode.*\)"`
+ #echo DEBUG: device vale $device
if [ "$PCWD" = "$device" ]
then
dir="."
file=""
else
dir="`basedirname $PCWD $device`"
- file="`basename $device`"
+ file=`basename "$device"`
fi
# see if the properties have changed.
- if [ "`$SVN propget $FILE_PROP $dir/$file`" != "$info" ]
+ if [ "`$SVN propget $FILE_PROP \"$dir/$file\"`" != "$info" ]
then
if [ "$CHECKIN" = "true" ]
then
- $SVN propset $FILE_PROP "$info" $dir/$file
+ $SVN propset $FILE_PROP "$info" "$dir/$file"
else
info=`$SVN propget $FILE_PROP "$dir/$file"`
mode=`expr "$info" : "mode=\([0-9]*\) "`
- user=`expr "$info" : ".* user=\([^(]*\)("`
- uid=`expr "$info" : ".* user=[^(]*(\([0-9]*\) "`
- group=`expr "$info" : ".* group=\([^(]*\)("`
- gid=`expr "$info" : ".* group=[^(]*(\([0-9]*\) "`
- if [ "$user" = "" -o "$group" = "" -o "$mode" = "" ]
+# user=`expr "$info" : ".* user=\([^(]*\)("`
+ uid=`expr "$info" : ".* user=[^(]*(\([0-9]*\)"`
+# group=`expr "$info" : ".* group=\([^(]*\)("`
+ gid=`expr "$info" : ".* group=[^(]*(\([0-9]*\)"`
+ if [ "$uid" = "" -o "$gid" = "" -o "$mode" = "" ]
then
echo "property $FILE_PROP not set for $dir/$file"
else
- chown $user:$group $dir/$file
- chmod $mode $dir/$file
+# chown $user:$group $dir/$file
+ chown $uid:$gid "$dir/$file"
+ chmod $mode "$dir/$file"
fi
fi
fi
@@ -364,8 +368,9 @@
if [ "$CHDIR" = "true" ]
then
shift $(($# -1))
- cd $1
- PCWD="$PCWD/$1"
+ WD=`echo $1 | sed "s/\/$//" | awk -F "/" '{print $(NF)}' `
+ cd $WD
+ PCWD="$PCWD/$WD"
fi
recorddirinfo
recordpermissions
|