5747035 [rkeene@sledge /home/rkeene/projects/scripts]$ cat -n svn_rm.sh
  1 #! /bin/bash
  2 
  3 function do_rm {
  4     local target target_parent SVN_OPTS
  5     target="$1"
  6     target_parent="$2"
  7     if [ -d "$target" ]; then
  8         # need -rf, -fr, -f -r, -r -f  to create --force
  9         if [ "${OPTS}" = "-rf" -o "${OPTS}" = "-fr" ]; then
 10             SVN_OPTS="--force"
 11         fi
 12     else
 13         if [ "${OPTS}" = "-f" -o "${OPTS}" = "-rf" -o "${OPTS}" = "-fr" ]; then
 14             SVN_OPTS="--force"
 15         fi
 16     fi
 17     echo svn rm ${SVN_OPTS} \"${target}\"
 18     svn rm ${SVN_OPTS} "${target}"
 19 }
 20 
 21 function do_mkdir {
 22     local target target_parent dest realdir dir
 23     target="$1"
 24     target_parent="$2"
 25     realdir=""
 26     for dir in `echo "${target}" | sed 's@/@ @g'`; do
 27         realdir="${realdir}${dir}/"
 28         if [ -d "${realdir}" ]; then
 29             if [ ! -d "${realdir}.svn/" ]; then
 30                 echo svn add \"${realdir}\"
 31                 svn add "${realdir}"
 32             fi
 33             continue
 34         fi
 35         echo svn mkdir \"${realdir}\"
 36         svn mkdir "${realdir}"
 37     done
 38 }
 39 
 40 function do_cp {
 41     local target target_parent dest
 42     target="$1"
 43     target_parent="$2"
 44     dest="$3"
 45     echo svn cp \"${target}\" \"${dest}\"
 46     svn cp "${target}" "${dest}"
 47 }
 48 
 49 function do_mv {
 50     local target target_parent dest
 51     target="$1"
 52     target_parent="$2"
 53     dest="$3"
 54     echo svn mv \"${target}\" \"${dest}\"
 55     svn mv "${target}" "${dest}"
 56 }
 57 
 58 function is_managed {
 59     local target target_parent target_parent_tmp target_managed
 60     target="$1"
 61     target_managed=1
 62     target_parent=""
 63     target_parent_tmp="${target}"
 64     while [ -z "${target_parent}" ]; do
 65         if [ "${target_parent_tmp}" = "/" ]; then target_parent="/"; break; fi
 66         target_parent_tmp="`echo "${target_parent_tmp}" | sed 's@/*$@@;s@/[^/]*$@/@'`"
 67         if echo "${target_parent_tmp}" | grep -v '/' >/dev/null; then target_parent_tmp="."; fi
 68         target_parent="`readlink -f "${target_parent_tmp}"`"
 69     done
 70     if [ -d "${target_parent}/.svn/" -o -d "${target}/.svn/" ]; then
 71         target_managed=0
 72     fi
 73     return $target_managed
 74 }
 75 
 76 CMD="`basename $0 | cut -f 2 -d _`"
 77 OPTS="`echo " $* " | sed 's@ @  @g;s@ [^- ][^ ]* @ @g;s@  *@ @g;s@^ *@@;s@ *$@@'`"
 78 
 79 OLDIFS="${IFS}"
 80 IFS=""
 81 
 82 dest=""
 83 if [ "${CMD}" = "mv" -o "${CMD}" = "cp" ]; then
 84     # last argument is a destination, remove it from the list.
 85     for dest in $*; do true; done
 86 fi
 87 if [ ! -z "${dest}" ]; then
 88     if is_managed "${dest}"; then dest_managed=1; else dest_managed=0; fi
 89 fi
 90 
 91 for target in $*; do
 92     if [ \( "${CMD}" = "mv" -o "${CMD}" = "cp" \) -a "${target}" = "${dest}" ]; then continue; fi
 93     if echo "${target}" | grep '^-' >/dev/null; then continue; fi
 94     if is_managed "${target}"; then target_managed=1; else target_managed=0; fi
 95     if [ -z "${dest}" ]; then dest_managed="${target_managed}"; fi
 96 
 97     IFS="${OLDIFS}"
 98     if [ "${dest_managed}" = "1" ]; then
 99         do_${CMD} "${target}" "${target_parent}" "${dest}"
100     else
101         if [ -z "${dest}" ]; then
102             echo ${CMD} ${OPTS} \"${target}\"
103             ${CMD} ${OPTS} "${target}"
104         else
105             echo ${CMD} ${OPTS} \"${target}\" \"${dest}\"
106             ${CMD} ${OPTS} "${target}" "${dest}"
107         fi
108     fi
109     IFS=""
110 done
111 IFS="${OLDIFS}"
5747036 [rkeene@sledge /home/rkeene/projects/scripts]$

Click here to go back to the directory listing.
Click here to download this file.
last modified: 2004-03-20 06:26:11