Ticket #7010: cpsvndir2.patch

File cpsvndir2.patch, 1.5 KB (added by mythtv@…, 15 years ago)

Latest version against HEAD (resolves problem of creating directory named with 'del' character)

  • themes/cpsvndir

     
    22#
    33# cpsvndir: recursive directory copy excluding .svn sub dirs.
    44
     5
    56if [ -z "$1" -o -z "$2" ]; then
    67    echo "Usage: $0 source-dir destination-dir"
    78    exit -1
     
    2021    if [ -z "$EGID" ];     then EGID=0       ;fi  # Will fail if not root
    2122fi
    2223
    23 BASE=$(basename "$1")
    24 case "$BASE" in
    25     .|..|/)  BASE="" ;;
    26     *)       BASE="/$BASE" ;;
    27 esac
    28 
    29 SRC="$1"
    30 
    31 case "$2" in
    32     /*) DEST="$2$BASE" ;;
    33     *)  DEST="$(pwd)/$2$BASE" ;;
    34 esac
    35 
    36 #echo "BASE=$BASE SRC=$SRC DEST=$DEST"
    37 
    38 IFS='
    39 '
    40 
    41 # Copy all files and directories except .svn
    42 cd "$SRC"
    43 for file in $(find . -name .svn -prune -or -print); do
    44     #echo "processing $file"
    45     if [ -d "$file" ]; then
    46         mkdir -p "$DEST/$file"
     24# Build directory structure
     25IFS=$'\012'
     26for directory in $(find "$1" -path '*/.svn' -prune -or -type d -print); do
     27    if [ ${directory:${#1}} ]; then
     28        mkdir -p "$2/${1##*/}/${directory:${#1}}"
    4729    else
    48         cp -p "$file" "$DEST/$file"
    49         chown $EUID:$EGID "$DEST/$file"
    50         chmod +r "$DEST/$file" &> /dev/null
     30        mkdir -p "$2/${1##*/}"
    5131    fi
    5232done
    5333
    54 exit 0
     34# Copy files
     35for file in $(find "$1" -path '*/.svn' -prune -or ! -type d -print); do
     36    cp -pR "$file" "$2/${1##*/}/${file:${#1}}"
     37    chown $EUID:$EGID "$2/${1##*/}/${file:${#1}}" &> /dev/null
     38    chmod +r "$2/${1##*/}/${file:${#1}}" &> /dev/null
     39done
    5540
     41exit 0