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

Re: feature request: checkout repositories partially

From: Kevin Pilch-Bisson <kevin_at_pilch-bisson.net>
Date: 2002-09-22 23:51:06 CEST

Quoting Garrett Rooney <rooneg@electricjellyfish.net>:

> On Sunday, September 22, 2002, at 01:33 PM, Sander Striker wrote:
>
> >> From: Garrett Rooney [mailto:rooneg@electricjellyfish.net]
> >> Sent: 22 September 2002 19:00
> >
> > [...]
> >> if you do a nonrecursive checkout of a dir, you don't actually get any
> >> of the contents of the directory checked out. that can't be right...
> >> if that's the intended behaviour, it's pretty useless, as you can't
> >> actually do anything with the resulting working copy.
> >>
> >> i thought the way it was supposed to work was that you do a 'svn co -N
> >> http://foo.com/repos', and that gets you all the contents of that top
> >> level directory, but none of the contents of any subdirectories of it.
> >> thus one could have a top level directory that has a README or
> >> somethign in it (like svn.collab.net/repos/svn does), and you'd do a
> >> nonrecursive checkout of that dir to get that README so you could edit
> >> it without having to check out the whole damn repos.
> >
> > And that is what it does. Currently a non-recursive checkout of
> > a directory gets you that directory and its contents, minus its
> > subdirectories.
> >
> > These subdirectories _aren't_ in the .svn/entries file either, so
> > the working copy has no notion that there are (deliberate) absent
> > subdirectories.
>
> ahh, ok, the repos i tested on here didn't have anything but
> directories in the dir i tried to check out.
>
> if this is the case, then perhaps issue 695 is no longer really valid?
>
It's still valid. The problem is that if something changes in a subdir, the
server sends the changes, and the client chokes, since by this point it's
never heard of the subdirs.

There are two possible solutions that I can think of.

1) The client maintains state, and sends to the server during an update: "I
have base-rev X, but I'm not interested in changes within foo, bar, or bazz."
The server sends a normal update response, but excludes the parts the client
said it wasn't interested in.

2) The client maintains state, and sends a normal update request, then filters
the results for the subdirs it's not interested in.

I think 1 is a preferred solution, but two affects less code.

Just in case you wanted one, heres a repro recipe. If someone could add this
to the issue, it might help me not have to answer this question every month or
so. (I guess if I just fixed that would do it too :)

svnadmin create repo
svn co file://`pwd`/repo wc1
cd wc1
mkdir a
touch foo
touch a/bar
svn add a
svn add foo
svn add a/bar
svn ci
cd ..
svn co -N file://`pwd`/repo wc2 # get only foo here.
cd wc1/a
vim bar # make some changes
svn ci
cd ../wc2
svn up #watch the client choke because it's never heard of a/bar.

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Kevin Pilch-Bisson
kevin@pilch-bisson.net
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sun Sep 22 23:51:44 2002

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