freebsd-ports/devel/subversion16/files/patch-contrib--client-side--asvn
Lev A. Serebryakov 0c0e8fd828 (1) Update to 1.4.0 release
(2) Migrate book to stable version 1.2
  (3) Add images to HTML book
  (4) Add dependency to gfind (findutils) for asvn
  (5) Improve asvn script

PR:		ports/99177 [4],[5]
Submitted by:	David Robillard <david.robillard@gmail.com> [3]
2006-09-12 12:46:30 +00:00

267 lines
8.2 KiB
Text

--- contrib/client-side/asvn.orig Tue Jun 15 06:02:44 2004
+++ contrib/client-side/asvn Mon Sep 11 17:07:04 2006
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/local/bin/bash
#-------------------------------------------------------------------------
# Author: Ross Mark (rossm@controllingedge.com.au)
# Date: Tue Mar 11 10:02:57 EST 2003
@@ -46,7 +46,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
@@ -58,7 +58,8 @@
function basedirname()
{
refname="$1"
- dir="`dirname $2`"
+ shift
+ dir="`dirname \"$*\"`"
ref=`expr "$dir" : "$refname/\(.*\)"`
if [ -z "$ref" ]
then
@@ -105,10 +106,10 @@
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
+ updatedirsymlinks $1 "$dirlist"
+ updatedirdevices $1 "$dirlist"
done
}
@@ -126,15 +127,15 @@
#
# 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)"`
- [ -b $file ] && echo -n ' type=b'
- [ -c $file ] && echo -n ' type=c'
- [ -p $file ] && echo ' type=p'
- if [ -b $file -o -c $file ]
+ 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'
+ if [ -b "$file" -o -c "$file" ]
then
- ls -l $file |
+ ls -l "$file" |
sed -e 's/^[-lcpbrdwxXstugoTS]* *[0-9] [^ ]* *[^ ]* *\([0-9]*\), *\([0-9]*\) .*/ major=\1 minor=\2/'
fi
# In this case file is the full path.
@@ -145,7 +146,7 @@
#
# Obtain the currently defined devices
#
- $SVN propget $DEV_PROP $dir >$TMPFILE1
+ $SVN propget $DEV_PROP "$dir" >$TMPFILE1
#
# If the two list are the same then there is nothing to do.
@@ -161,7 +162,7 @@
if [ "$CHECKIN" = "true" ]
then
# Add the current devices to the property
- $SVN propset $DEV_PROP $dir -F $TMPFILE
+ $SVN propset $DEV_PROP "$dir" -F $TMPFILE
else
# Delete all the unwanted devices ie not in TMPFILE1
cat $TMPFILE |while read line
@@ -169,8 +170,8 @@
file=`expr "$line" : "file='\(.*\)' mode"`
if ! grep -q "file='$file'" $TMPFILE1
then
- rm $file
- deleteignorefile $file
+ rm "$file"
+ deleteignorefile "$file"
fi
done
fi
@@ -178,7 +179,7 @@
# There are no devices in this directory
if [ "$CHECKIN" = "true" ]
then
- $SVN propdel $DEV_PROP $dir
+ $SVN propdel $DEV_PROP "$dir"
fi
fi
@@ -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]*\)"`
@@ -205,10 +206,11 @@
# This file is either missing or wrong
# Delete the old and create it anew.
#
- rm -f $dir/$file
- mknod --mode=$mode $dir/$file $type $major $minor
- chown $user:$group $dir/$file
- addignorefile $dir/$file
+ rm -f "$dir/$file"
+ mknod --mode=$mode "$dir/$file" $type $major $minor
+# 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
#
@@ -243,7 +245,7 @@
#
# Obtain the currently defined symlinks
#
- $SVN propget $SYM_PROP $dir >$TMPFILE1
+ $SVN propget $SYM_PROP "$dir" >$TMPFILE1
#
# If the two list are the same then there is nothing to do.
@@ -259,7 +261,7 @@
if [ "$CHECKIN" = "true" ]
then
# Add the current symlinks to the property
- $SVN propset $SYM_PROP $dir -F $TMPFILE
+ $SVN propset $SYM_PROP "$dir" -F $TMPFILE
else
# Delete all the unwanted symlinks
cat $TMPFILE |while read line
@@ -268,8 +270,8 @@
efile="`echo $file |sed -e 's!\([\[\(\$]\)!\\\\\1!g'`"
if ! grep -q "file='$efile'" $TMPFILE1
then
- rm $dir/$file
- deleteignorefile $dir/$file
+ rm "$dir/$file"
+ deleteignorefile "$dir/$file"
fi
done
fi
@@ -277,7 +279,7 @@
# There are no symlinks in this directory
if [ "$CHECKIN" = "true" ]
then
- $SVN propdel $SYM_PROP $dir
+ $SVN propdel $SYM_PROP "$dir"
fi
fi
@@ -294,10 +296,10 @@
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
+ rm -f "$dir/$file"
+ ln -s $dest "$dir/$file"
done
fi
}
@@ -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`"
+ dir="`basedirname \"$PCWD\" $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
@@ -382,7 +387,7 @@
[ "$ACTION" = "pre" ] && pre_checkin $@
-$SVN $@
+$SVN "$@"
[ $? = 0 -a "$ACTION" = "post" ] && post_checkout $@