[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[PATCH] dav_svn_get_repo_name handling of SVNParentPath

From: Maxime Petazzoni <maxime.petazzoni_at_bulix.org>
Date: 2006-01-14 15:36:35 CET

Hi,

I've been playing with SVNIndexXSLT recently and I noticed that in the
XML output from mod_dav_svn, the name parameter of the index markup
was not set when using the SVNParentPath directive in Apache HTTPd
configuration.

After a closer look at the code, I managed to identify where the XML
output function gets his repository information from : the
dav_svn_get_resource() function, from mod_dav_svn/repos.c.

This function builds an information structure containing the repository
name we are looking for. This particular field is filled in using the
dav_svn_get_repo_name() function, from mod_dav_svn/mod_dav_svn.c.

Unfortunately, this function is only able to return a repository name if
one was set using the SVNReposName/SVNPath directives (it just returns the
repo_name field from the Apache conf structure related to the relevant
directory), thus it can't return a repository name when SVNParentPath is
used.

The attached patch creates a new function, revved from the actual
dav_svn_get_repo_name(). It's prototype changed so it can propagate an
eventual error during the processing. Basically, the new
dav_svn_get_repo_name2() function uses the dav_svn_split_uri function to
retrieve the repository name from the current requested URI if the
SVNParentPath directive is used, otherwise it acts like the old
dav_svn_get_repo_name.

The corresponding function prototype has been added to dav_svn.h, and
the call from dav_svn_get_resource() has been updated to use this new
function. I did not find any other call to the dav_svn_get_repo_name
function in the Subversion source code.

You can find a current Debian's Subversion (1.2.3) example at
https://ssl.bulix.org/svn/demo/ using the SVNParentPath directive and
thus not giving the name parameter in the XML output. A development
Subversion is currently running on my dev box with this patch working
at http://skikda-dev.bulix.org/svn/test

Regards,
- Maxime

[[[
Make mod_dav_svn retrieve a repository name even when configured to
operate with SVNParentPath.

* subversion/mod_dav_svn/mod_dav_svn.c
  (dav_svn_get_repo_name2): New function, revved from
    dav_svn_get_repo_name. Takes new root_path and repo_name arguments
    and returns a dav_error for error propagation. Retrieves the
    repository name in a SVNParentPath setup using dav_svn_split_uri.
  (dav_svn_get_repo_name): Deprecate.

* subversion/mod_dav_svn/dav_svn.h
  (dav_svn_get_repo_name2): Declare the new function in the API.

* subversion/mod_dav_svn/repos.c
  (dav_svn_get_resource): Use dav_svn_get_repo_name2 to retrieve the
  repository name, and propagate any dav_error values received.
]]]

-- 
Maxime Petazzoni (http://www.bulix.org)
 -- gone crazy, back soon. leave message.

Received on Sat Jan 14 15:37:50 2006

This is an archived mail posted to the Subversion Dev mailing list.