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

Re: Reducing "out-of-date" errors - another way?

From: C. Michael Pilato <cmpilato_at_collab.net>
Date: 2006-08-03 15:31:13 CEST

Max Bowsher wrote:
> IIUC, a big part of getting out-of-date errors on directories, is that
> we are very strict in our server-side transaction-merging code about
> fully up-to-date.
>
> I think there is scope to loosen the restrictions, if done carefully.
>
> Currently, we disallow a propchange on a directory unless it is
> up-to-date in the WC with the last revision made anywhere below it in
> the repository (due to bubble-up). We do this (IIRC) because post-commit
> rev-bumping of a directory which was not fully up to date *could*
> involve addition or removal of children of the directory.
>
> Therefore, the first relaxation we could do, would be to explicitly
> check whether a given merging involves a change in the child list of a
> directory, instead of simply noting that it *might*, and stopping
> immediately.

So long as we could perform this check both during the editor drive (for
early-out in the failure case) and in the final merge, I think this makes
sense.

Of course, we'll need to make sure our check for a change in the child list
is done right. It's early, and I'm only halfway through my coffee, but I
think the criteria would be:

   * the entries list for the "old" and "new" directories would be identical
     from an entry name perspective.

   * for each name in one list, the child associated with that name must
     be related-to-and-not-a-copy-of the child associated with that name
     in the other list.

It's that second requirement that strikes me as non-trivial in the case of
child node's lazily growing different copy-IDs after the copy of the
directory. Here's what I'm thinking about:

   $ svn cp http://.../trunk http://.../branches/my-branch
   $ svn co http://.../branches/my-branch
   $ vi my-branch/some-file
   $ svn ci -m "Modify some-file in my-branch." my-branch
   $ svn propset svn:ignore '*.rej' my-branch
   $ svn ci -m "Ignore files ending in .rej in my-branch." my-branch

cmpilato awaits one much more awake to smack his concerns into oblivion.

-- 
C. Michael Pilato <cmpilato@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand

Received on Thu Aug 3 15:34:42 2006

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.