Quoting Garrett Rooney <firstname.lastname@example.org>:
> On Sunday, September 22, 2002, at 01:33 PM, Sander Striker wrote:
> >> From: Garrett Rooney [mailto:email@example.com]
> >> 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
svn add a
svn add foo
svn add a/bar
svn co -N file://`pwd`/repo wc2 # get only foo here.
vim bar # make some changes
svn up #watch the client choke because it's never heard of a/bar.
To unsubscribe, e-mail: firstname.lastname@example.org
For additional commands, e-mail: email@example.com
Received on Sun Sep 22 23:51:44 2002