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

Re: [PROPOSAL] Managing large working copies using viewspecs

From: Daniel Berlin <dberlin_at_dberlin.org>
Date: 2006-07-17 16:53:05 CEST

David James wrote:
> It's often true that users want to checkout some, but not all, of a
> large repository. Currently, it's easy to checkout a single subdirectory
> using Subversion. However, if you want to checkout a group of
> subdirectories, and manage this group as a single working copy, you're
> going to run into some major challenges.
>
> In the past year, we've seen two proposals for managing large working
> copies. Last year, Ben Reser proposed creating two new subcommands,
> called 'svn include' and 'svn exclude', which allow you to configure
> which directories are pulled in by 'svn update' [1]. This year, Eric
> Gilespie proposed to instead add a depth parameter to the 'update'
> command [2].
>
> Both Ben and Eric's proposals suffer from a similar problem: they don't
> actually make it easy to checkout a group of subdirectories. With either
> proposal, you're forced to execute a long series of commands (or a long
> series of options) in order to check out a group of subdirectories as a
> single working copy.
>
> I'd like to propose we add full-fledged viewspecs to Subversion.

I'm not quite sure how i feel about adding perforce viewspecs to
subversion, but let's assume for a moment that we do it.

IIRC, viewspecs are a large load on the server side, because that is
where path discovery has to happen (or you have to download the entire
list of paths from the server, which is just as bad an idea)

Particularly with complex viewspecs, where you ask for all the
subdirectories of something, but subtract out some portion of them.

I.E.

+foo/...
-foo/bar/*
-foo/baz/...

How do you plan on handling something like that server side without it
being N^2?
It looks like you would either have to:

Prediscover the list of paths for subtractive viewspec directive that
contain "*" or "..." (* is actually worse, AFAICT), and put them
somewhere temporarily (requires having an entire directory tree in
memory, depending on the), so you can quickly match against them.

or

Match against each subtractive viewspec directive for each directory you
are considering sending to the client (N^2). I.E. process the viewspec
in order.

The more I think about how evil this is going to be performance wise on
the server side, the more I heavily dislike the idea.

--Dan

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Mon Jul 17 16:53:40 2006

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