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

Re: (FS) operational question

From: Greg Stein <gstein_at_lyra.org>
Date: 2000-12-23 10:25:26 CET

On Sat, Dec 23, 2000 at 04:06:36AM -0500, Greg Hudson wrote:
> > Hunh. Has anybody pondered the issue that for a checkin *anywhere*
> > in the tree, that on the next "svn update", we have to hit *every*
> > "entries" file in the entire WC to update the revision number stored
> > in there? It won't be a matter of simply zooming past them doing
> > nothing... we've got to rewrite every single file.
> Perhaps we need to add a bit to the version number to mean "actually,
> my version is whatever my parent directory's version is, but that's
> equivalent to what I say it is here." (This does not destroy the
> ability to sever a working directory subtree from the hierarchy and
> use it; if you simply ignore that bit on the directory "svn" gets run
> in, everything should work fine.) Note that if we support "svn update
> -l" (update without recursing), then we have to *unset* this bit in
> every subdirectory version since the assertion might not be true any
> more.

Unfortunately, that would mean that a directory could not be detached from
its parent and used elsewhere.

*within* a directory, we can certainly use the "inherit" concept. But if
we're going to rewrite the file for the directory's updated revision, then
we may as well dump each of the files' revisions in there, too, and keep it
all simple.

> > The alternative, of course, is to leave things at an old revision
> > number until a real change arrives, but then our state reporting
> > grows and grows as we get more exceptions throughout the tree (by
> > "exception" I mean a child needing to report a revision that is
> > different than the parent's).
> Actually, how do we make our exception list without making a complete
> pass over the working directory?

We *do* make a pass over the whole WC (well, from wherever the update,
commit, or whatever is performed).

Next question is how to minimize the resulting data set to keep network
traffic small on the request, and how to minimize the response. That
minimization is done with the revision-exception stuff.

For the response, it is more difficult since I need to return any version
resource URLs that have changed. Thus, my idea on how to keep the much more

> Perhaps an "I have version
> exceptions in my subtree" bit in the directory version? If so, that

The detach problem again.

> bit has to bubble up through parent directories when you run "svn
> update" in a subdir, which is ugly; however, I don't think there's an
> alternative. The fundamental difficult case is:
> svn co http://blah
> sleep 3600 # While someone else checks in changes
> cd foo/bar/baz/quux
> svn update
> cd ../../../..
> svn update # How do we know about the exception in
> # foo/bar/baz/quux without searching the whole
> # tree?

We do the complete traversal.

It will be interesting to compare a traverse-to-read against a
traverse-to-update of the entries files. It might not be too bad to zing
over them reading values. The update will be a bit more work.


Greg Stein, http://www.lyra.org/
Received on Sat Oct 21 14:36:18 2006

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