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

repository URLs (was: Just say no to collections: moving wc meta-data out of the wc)

From: Greg Stein <gstein_at_lyra.org>
Date: 2002-05-30 01:54:26 CEST

On Wed, May 29, 2002 at 11:41:38AM -0500, Karl Fogel wrote:
> cmpilato@collab.net writes:
> > I've always been under the impression (and pleased with that
> > impression) that were going to do just this; store the FULL url, and
> > store the repos url. There are precious few operations at this stage
> > that actually need the repos url,

*Nothing* needs the repository URL. All we need (in the new commit/update
code to handle mixed-repository working copies) is a repository identifier
that can be compared for equivalency. It would be perfectly acceptable to
say that the repos IDs associated with three WCs are "a", "a", and "b". The
first two WCs come from the same repository, and the third from another.

> > but everything needs the full
> > url...so we burden ourselves with the calculation overhead every time
> > we need the full url? The subtraction to get a relative url is
> > extremely straightforward and cheap (drop a `\0' at strlen (repos_url)
> > + 1).

Conversely, since we never need a repository URL, we never need a relative
URL either.

We can take two approaches towards identifying the repository.

1) The identifier is private (an opaque string).

   For this case, the RA layer will provide an identifier back to the WC of
   its own choosing. For ra_dav, this would probably be the URL of the VCC,
   and I could use it in various scenarios to optimize out some roundtrips.
   ra_local would just use the raw filesystem path (e.g. /var/repos/test)

2) The identifier is public (meaning it has specific semantics associated
   with it, and can probably be presented to the user).

   In this case, we don't let the RA layer define what it means, but we
   impose a meaning. This would probably be "the URL corresponding to the
   root of the repository." For ra_dav, this would be an http(s) URL. For
   example, the SVN repository would be http://svn.collab.net/repos/svn/.
   ra_local would be file:///var/repos/test/

I can see advantages for either approach. My technical preference would be
for option (1), but I think that option (2) has certain advantages for
users. So... I'm not even sure which way I lean on this. Hopefully, somebody
will come up with some really good arguments for one or the other.

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Jun 1 14:22:39 2002

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.