You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Jarle Jacobsen <ja...@gmail.com> on 2012/03/08 08:05:34 UTC

svn:externals and different access methods (svn: http:)

Hi,

we are currently running subversion 1.7.3 and are using svnserve on
the server (windows platform). We are using the distribution from
Collabnet and now we want to switch to using the Subversion Edge
config app and Apache web server. Because we have many users in
different locations and a lot of build scripts/continues integration
jobs, tools and utilities that use subversion we would like to switch
from svn:// to http:// gradually by running both Apache and svnserve
for a short period.

We have several repositories and are using svn:exsternals to link
projects both between repositories and within a repository. All
repositories are on the same server.

Lets say that we have the repositories Repo1 and Repo2 and they are
running on the SrcServer.

Accessing Repo1 will be done using svn://SrcServer/Repo1 or
http://SrcServer/svn/Repo1 (the svn part is from the Location element
created by Subversion Edge in httpd.conf). This works fine.

When we link projects with svn:externals we use relative paths. For
example we could link from a project in Repo1 to Proj1 also in Repo1
using ^/Proj1. This also works fine the URL will be translated to
svn://SrcServer/Repo1/Proj1 or http://SrcServer/svn/Repo1/Proj1.

The problem occurs when we want to link to a project in a different
repository. For example we could link from a project in Repo1 to Proj2
in Repo2 using /Repo2/Proj2. The URL will be translated to
svn://SrcServer/Repo2/Proj2 or http://SrcServer/Repo2/Proj2. The svn:
URL is correct but the http: URL is missing the svn part.

I can see 2 possible solutions to this:
1: Drop using svn: and http: at the same time and add the svn part to
the relative URLs.when switching to http:.
2: hack the generated httpd.conf file and use a Location element
without the svn part.

I don't like any of these  solutions. Solution1 means doing a big bang
that will be difficult to handle. I don't know if solution 2 is
possible at all (never used Apache before). The Apache server is
handling more than one application (like viewvc) and moving Subversion
to the root doesn't sound like a good solution.

Is there a way to use relative URLs so that linking between
repositories on the same server will work for this case?

Using the ^ subversion will add the svn part of the URL so it must
know how to decode the different parts of the URL. Is this a bug in
the handling of the / (relative to the root URL of the server) or
should there be a syntax for saying relative to the repository parent
path?

Regards
Jarle Jacobsen

Re: svn:externals and different access methods (svn: http:)

Posted by Konstantin Kolinko <kn...@gmail.com>.
2012/3/8 Jarle Jacobsen <ja...@gmail.com>:
> Hi,
>
> we are currently running subversion 1.7.3 and are using svnserve on
> the server (windows platform). We are using the distribution from
> Collabnet and now we want to switch to using the Subversion Edge
> config app and Apache web server. Because we have many users in
> different locations and a lot of build scripts/continues integration
> jobs, tools and utilities that use subversion we would like to switch
> from svn:// to http:// gradually by running both Apache and svnserve
> for a short period.
>
> We have several repositories and are using svn:exsternals to link
> projects both between repositories and within a repository. All
> repositories are on the same server.
>
> Lets say that we have the repositories Repo1 and Repo2 and they are
> running on the SrcServer.
>
> Accessing Repo1 will be done using svn://SrcServer/Repo1 or
> http://SrcServer/svn/Repo1 (the svn part is from the Location element
> created by Subversion Edge in httpd.conf). This works fine.
>
> When we link projects with svn:externals we use relative paths. For
> example we could link from a project in Repo1 to Proj1 also in Repo1
> using ^/Proj1. This also works fine the URL will be translated to
> svn://SrcServer/Repo1/Proj1 or http://SrcServer/svn/Repo1/Proj1.
>
> The problem occurs when we want to link to a project in a different
> repository. For example we could link from a project in Repo1 to Proj2
> in Repo2 using /Repo2/Proj2. The URL will be translated to
> svn://SrcServer/Repo2/Proj2 or http://SrcServer/Repo2/Proj2. The svn:
> URL is correct but the http: URL is missing the svn part.
>
> I can see 2 possible solutions to this:
> 1: Drop using svn: and http: at the same time and add the svn part to
> the relative URLs.when switching to http:.
> 2: hack the generated httpd.conf file and use a Location element
> without the svn part.
>
> I don't like any of these  solutions. Solution1 means doing a big bang
> that will be difficult to handle. I don't know if solution 2 is
> possible at all (never used Apache before). The Apache server is
> handling more than one application (like viewvc) and moving Subversion
> to the root doesn't sound like a good solution.
>
> Is there a way to use relative URLs so that linking between
> repositories on the same server will work for this case?
>
> Using the ^ subversion will add the svn part of the URL so it must
> know how to decode the different parts of the URL. Is this a bug in
> the handling of the / (relative to the root URL of the server) or
> should there be a syntax for saying relative to the repository parent
> path?

If you are in Repo1 then an external starting with "^/../Repo2/"
addresses the second repository.

Best regards,
Konstantin Kolinko