diff --git a/svn-switch.sh b/svn-switch.sh
new file mode 100644
index 0000000000000000000000000000000000000000..35bbc2f640a4126432971fc042e5ff2f6124caa1
--- /dev/null
+++ b/svn-switch.sh
@@ -0,0 +1,39 @@
+#! /bin/sh
+
+
+if test $# -ne 1; then
+
+cat <<EOF
+
+A script to "reparent" the working-copy of the ALBERTA package by
+calling "svn switch" on all directories referred to by "svn:externals"
+properties.
+    
+Calling convention:
+
+$0 NEW_URL
+    
+Note: the old repository URL is determined using "svn info".
+EOF
+exit 1
+fi
+
+set -x
+
+OLD_URL=`svn info .|fgrep URL |awk '{ print $2 }'`
+NEW_URL="$1"
+
+if test "${OLD_URL}" = "${NEW_URL}"; then
+    Working copy already pointing to new URI.
+    exit 1
+fi
+
+svn switch --relocate "${OLD_URL}" "${NEW_URL}"/albertadist
+
+OLD_URL=`echo "${OLD_URL}"|sed 's/albertadist//g'`
+
+for i in alberta alberta_util demo add_ons gnu-compat doc; do
+    cd $i
+    svn switch --relocate "${OLD_URL}"/"$i" "${NEW_URL}"/"$i"
+    cd ..
+done