Index: subversion/include/mod_dav_svn.h
===================================================================
--- subversion/include/mod_dav_svn.h	(revision 13802)
+++ subversion/include/mod_dav_svn.h	(working copy)
@@ -74,6 +74,15 @@
                                                  const char **repos_path);
 
 
+/* Given an apache request R and a ROOT_PATH to the svn location
+   block this function returns the path to the repository on disk.
+
+   The function returns NULL, if no valid SVNPath or SVNParentPath was
+   specified for the location.
+*/
+AP_MODULE_DECLARE(const char *) dav_svn_get_repos_path(request_rec *r,
+                                                       const char *root_path);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
Index: subversion/mod_dav_svn/mod_dav_svn.c
===================================================================
--- subversion/mod_dav_svn/mod_dav_svn.c	(revision 13802)
+++ subversion/mod_dav_svn/mod_dav_svn.c	(working copy)
@@ -32,6 +32,7 @@
 
 #include "dav_svn.h"
 
+#include <mod_dav_svn.h>
 
 /* This is the default "special uri" used for SVN's special resources
    (e.g. working resources, activities) */
@@ -248,7 +249,48 @@
     return conf->fs_parent_path;
 }
 
+AP_MODULE_DECLARE(const char) *dav_svn_get_repos_path(request_rec *r, 
+                                                      const char *root_path)
+{
 
+    const char *fs_path;     /* the path to the repository on disk */
+    const char *repos_name;
+    const char *ignored_repos_path;
+    const char *ignored_cleaned_uri;
+    const char *ignored_relative;
+    int ignored_had_slash;
+
+    dav_error *err;
+    dav_svn_dir_conf *conf;
+
+    conf = ap_get_module_config(r->per_dir_config, &dav_svn_module);
+
+    /* The path that we will eventually try to open as an svn
+       repository.  Normally defined by the SVNPath directive. */
+    fs_path = conf->fs_path;
+
+    /* If the SVNParentPath directive was used instead... */
+    if (conf->fs_parent_path != NULL)
+      {
+        /* At this point we can be sure that fs_path is NULL. 
+           now let just compute the full path below svn parent path. */
+
+        /* This does all the work of interpreting/splitting the request uri. */
+        err = dav_svn_split_uri(r, r->uri, root_path, &ignored_cleaned_uri,
+                                &ignored_had_slash, &repos_name,
+                                &ignored_relative, &ignored_repos_path);
+
+        /* if an error encountered the value of conf->fs_path will be returned. */
+        if (!err)
+          {
+            /* ...and we need to specify exactly what repository to open. */
+            fs_path = svn_path_join(conf->fs_parent_path, repos_name, r->pool);
+          }
+      }
+
+    return fs_path;
+}
+
 const char *dav_svn_get_repo_name(request_rec *r)
 {
     dav_svn_dir_conf *conf;

