If the parent directory is not executable __svn_dir() will not be able
to change to it and will hang. Prevent this by returning failure if the
working directory isn't executable.
+# Get UUID for the working copy.
function __svn_uuid() {
svn info 2>/dev/null | sed -n 's/^Repository UUID: //p'
return $?
}
+# Get SVN toplevel.
function __svn_dir() {
local last="$1"; shift
local uuid=$(__svn_uuid)
+ # Bomb out if we ended up in an unexecutable directory.
+ if [ ! -x "$PWD" ]; then
+ return 1
+ fi
+
+ # Return the last directory if we just changed and found a different repo.
if [ -n "$last" -a ! "$uuid" = "$last" ]; then
echo "$OLDPWD"
return 0
last="$uuid"
cd ..
+
+ # Root?
if [ "$PWD" = "$OLDPWD" ]; then
return 1
fi
return $?
}
+# Find the URL for the working copy and detect if we are on trunk.
function __svn_url() {
local url=$(svn info "$1" 2>/dev/null | sed -n 's/^URL: //p')
[ $? -gt 0 ] && return 1