#!/usr/bin/env bash # from http://www.martin-probst.com/blog/2008/02/11/shell-script-to-restore-svn-directories-in-mac-os-x-bundles IFS=" " # must be dir! if [ ! -d "$1" ]; then echo "Path is not a directory." echo "Usage: $0 [bundle directory]" exit 1 fi # get info dir=`dirname "$1"` base=`basename "$1"` # go to dir pushd "$dir">/dev/null # prefix prefix="tmp" prefixi=1 # does it exist? while [ -x "$prefix.$base" ]; do prefix="tmp$prefixi" prefixi=$(( prefixi + 1 )) done # move to temp echo "* moving to temp location..." mv "$base" "$prefix.$base" # update echo "* svn update..." svn update -q "$base" # check to make sure it's a dir! if [ ! -d "$base" ]; then echo "Updated path is not a folder! Restoring original!" mv "$prefix.$base" "$base" exit 2 fi # go to dir echo -n "* moving .svn directories" pushd "$base" >/dev/null # find .svn dirs for foo in `find . -type d -name .svn`; do if [ -d ../"$prefix.$base"/"`dirname "$foo"`" ]; then # only move it if the folder exists in the modified version mv "$foo" ../"$prefix.$base"/"`dirname "$foo"`" echo -n "." fi done popd >/dev/null echo # replace echo "* replacing..." rm -Rf "$base" mv "$prefix.$base" "$base" popd >/dev/null echo "* done."