Finishing relative svn:externals
From: Blair Zajac <blair_at_orcaware.com>
Date: 2007-07-19 10:47:11 CEST
I'm picking up feature to support relative URLs in svn:externals:
http://subversion.tigris.org/issues/show_bug.cgi?id=1336
I would like to get this into 1.5 if possible. The main thing holding
Threads
Links to threads:
http://subversion.tigris.org/issues/show_bug.cgi?id=1336
Relative Externals - format debate
Relative externals - take 2
Final(?) Relative Externals format
Different relative URLs
This is the justification for each type of relative URL.
There are four locations in an absolute URL where you may want to
1) Relative to the current directory
You never pull an external from a subdirectory where you are, you
This form works well if you have a trunk containing a number of
This doesn't work well when you branch or tag and have externals
This relative URL will never break if you move the repository.
2) Relative to the repository root
You want to refer to a directory in the same repository by the root
There is the potential to refer to external repositories that are
This relative URL will never break if you move the repository.
3) Relative to the site root
You have a svn server that hosts multiple repositories and the
In a distributed environment with multiple repositories, you have
4) Scheme relative
You have multiple servers and want to a different server using the
Representations
The relative URL to the current directory is easy: ../ You don't have
The issue is with the remaining ones.
RFC 3986 Compliance
One line of thought is that we should use RFC 3986 to guide our relative
http://www.ietf.org/rfc/rfc3986.txt
So the question is, what degree of non-compliance do we mind.
RFC 3986 specifies these two clearly:
relative to site root
It appears that /// has the same meaning as /, that is the same scheme
relative to repository root
It appears that while the URL is an "absolute" URL since it has an
However, if we extend relative URLs to the command line, then using a
My proposal is to introduce the ^ as the repository root character, as
^branches/1.4.x
would point to the http://svn.collab.net/svn/repos/branches/1.4.x
While RFC 2396 is now obsolete, there is this section:
Other characters are excluded because gateways and other transport
unwise = "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`"
Data corresponding to excluded characters must be escaped in order to
So people aren't likely coding this into URLs. Also, if we extend
RFC 3986 Non-Compliance
I don't see the scheme relative URL as being as important, so you could
relative to repository root
However, // is used by svk, so it's not clear how that would interact.
Rebuttal to Fitz's -0.9 on repository root relative URLs
This is my rebuttal to Fitz's -0.9 on repository root relative URLs. He
http://svn.haxx.se/dev/archive-2005-01/0959.shtml
If I had to prioritize, I would rather see repository root relative URLs
Reasons to implement them:
1) I don't want people using directory relative URLs to get repository
2) It should be possible to use externals to have multiple projects,
3) It should be possible to have externals that never break, even
4) With mirroring of Subversion repositories to remote facilities,
These reasons combined together, in a more complicated network setup,
Proposal
1) Be as RFC 3986 compliant as we can.
2) The relative URLs are:
relative to current directory
Unspecified behavior is how far up ..'s go in relative to the current
Regards,
-- Blair Zajac, Ph.D. Subversion training, consulting and support http://www.orcaware.com/svn/ --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org For additional commands, e-mail: dev-help@subversion.tigris.orgReceived on Thu Jul 19 10:46:32 2007 |
This is an archived mail posted to the Subversion Dev mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.