Q:

How can I find the root folder of a given subversion working copy

Quite often I'm sitting in the middle of a subversion working copy, and I want to do a quick svn status to find out what changes I have made since the last checkin.  However svn status only works on the current folder and it's children. ( Similarly for svn up too)
I'd like a quick way to change to the root folder of the subversion working copy so I can run a svn status and see all files that have changed, maybe a checkin or a update, and then get back to work where I was before. 

A:

Here's my first go at an answer: I wrote a little bash script called svnbase:
#! /bin/bash -u

# this command outputs the top-most parent of the current folder that is still 
# under svn revision control to standard out

# if the current folder is not under svn revision control, nothing is output
# and a non-zero exit value is given

parent=""
grandparent="." 

while [ -d "$grandparent/.svn" ]; do
    parent=$grandparent
    grandparent="$parent/.."
done

if [ !  -z "$parent" ]; then
    echo $parent
else
    exit 1
fi

So now I can do this:
[~/work/scripts/XXX/code/speech-detection/framework]$ cd $(svnbase)
[~/work/scripts/XXX]$ svn status
?       code/speech-detection/framework/output.old
[~/work/scripts/XXX]$ cd -
/home/XXXX/work/scripts/XXX/code/speech-detection/framework
[~/work/scripts/XXX/code/speech-detection/framework]$ 

A:

On Windows:
svn info .  |findstr /C:"Working Copy Root Path:"

On Linux:
svn info .  |grep -F "Working Copy Root Path:"

It can be assigned to a variable using a little string manipulation.  Windows version:
FOR /F "delims=" %%i IN ('svn info .  ^|findstr /C:"Working Copy Root Path:"') DO SET SOME_TEMP_VAR=%%i
SET WORKING_COPY_ROOT=%SOME_TEMP_VAR:~24%

A:

If you use git-svn as your Subversion client, then you can interact transparently with a Subversion repository using Git commands locally.  Git automatically shows you pending across the whole repository when you use commands like git status anywhere in the tree.