Subversion の属性値もコピーしてくるシェルスクリプト

Subversion でベンダブランチを作る際、一次開発元も Subversion を使っている場合には、属性値も全部そのまま持ってきたい。なんか、そういうツールは絶対どこかにあるんじゃないかとは思うんだが、探せなくて作ってしまった:
適当なワーキングコピー中にあるディレクトリを引数に指定して実行すると、そのディレクトリ以下の全内容・全属性をカレントディレクトリの下に再現する:

#! /bin/sh

set -e

if [ "$1" != "--sub" ]
then
	VENDOR_ROOT="$1"
	if [ -z "$VENDOR_ROOT" ]
	then
		echo "usage: ${0##*/} <vendor-root>" 1>&2
		exit 1
	fi

	svn info "$VENDOR_ROOT" >/dev/null
	  # checking whether $VENDOR_ROOT is a working copy.

	if echo "$VENDOR_ROOT" |grep -v '/$' >/dev/null
	then
		VENDOR_ROOT="${VENDOR_ROOT}/"
	fi

	exec find "$VENDOR_ROOT" ! -name '.svn' ! -path '*/.svn/*' \
		-exec "$0" --sub "$VENDOR_ROOT" '{}' \;
fi

VENDOR_ROOT="$2"

function CopyProperty()
{
	local NODE_FROM="$1"
	local PROPERTY="$2"
	local NODE_TO="$3"

	if echo $PROPERTY |grep -E "^'" >/dev/null 2>&1
	then
		return
	fi

	if echo $PROPERTY |grep -E '^の属性:' >/dev/null 2>&1
	then
		return
	fi

	local VALUE="$( svn propget "$PROPERTY" "$NODE_FROM" )"
	svn propset "$PROPERTY" "$VALUE" "$NODE_TO"
}

function CopyNode()
{
	local NODE_FROM="$1"

	local NODE_TO="$( echo -n "$NODE_FROM" |sed -e "s|^$VENDOR_ROOT||" )"
	if [ -z "$NODE_TO" ]
	then
		NODE_TO='.'
	fi

	if [ -L "$NODE_FROM" ]
	then
		ln -s "$( readlink "$NODE_FROM" )" "$NODE_TO"
		svn add "$NODE_TO"
		return
	fi

	if [ -d "$NODE_FROM" ]
	then
		if [ "$NODE_TO" != '.' ]
		then
			svn mkdir "$NODE_TO"
		fi
	else
		cp -p "$NODE_FROM" "$NODE_TO"
		svn add "$NODE_TO"
	fi

	for PROPERTY in $( svn proplist "$NODE_FROM" )
	do
		CopyProperty "$NODE_FROM" "$PROPERTY" "$NODE_TO"
	done
}

CopyNode "$3"
exit 0