Greg Stein <gstein@lyra.org> writes:
> This still isn't quite right. A while back, I asked about an FS API function
> to say, "hey! can I modify this?" We punted because it seemed like a simple
> ID comparison. I'm finding it isn't :-)
>
> The additional restriction needed is to ask "is D' an immediate child of D,
> *AND* is D' mutable?" It is entirely possible for somebody to try and check
> out D' (due to monkeyness noted in the comment in code (not shown in the
> context)), and then you have D'' when it becomes mutable.
Err, mutability shouldn't be visible at all outside the svn_fs.h
interface. Every node in a transaction can be freely changed.
> The monkeyness is basically:
>
> 1) Jon starts a commit based on rev R
> 2) Jane commits a change, upping the revision to R'
> 3) Jon updates D to D'
> 4) Jon's commit, while trucking along needs to do a DAV CHECKOUT on D' to
> make some changes
> ==> the old code punted (restart the commit (based on R'), hoser). after
> this change, it gets through. this may work, maybe not. need to apply
> heavy brain power.
I don't understand how this case arises. If Jon has a working copy at
base revision B, and starts a commit, mod_dav_svn creates a
transaction based on the current youngest revision, C. The only
comparisons you need to worry about are the changes between B and C
vs. the changes between B and Jon's working copy. If Jane commits a
new revision C' after Jon creates his transaction, that's irrelevant
to you.
Received on Sat Oct 21 14:36:28 2006