Julian Foad wrote on Wed, Aug 11, 2010 at 11:33:49 +0100:
> On Wed, 2010-08-11, Stefan Sperling wrote:
> > The BRANCH-README suggest that we add an interface like
> >   'svn propedit --revprop pname pval2 --old-value=pval'.
> > I don't think there is a valid use case for non-atomic revprop changes.
> > Why not just make all revprop changes atomic by default if the client
> > and server are both >= 1.7? Any propset/propedit operation could
> > transparently retrieve the old value before trying to set the new value.
> 
> It makes sense for propEDIT to ensure that the old value it got is still
> current when it sets the new value.

It already does this, propedit-cmd.c calls svn_client_revprop_set2(), which
I have patched on the branch to be atomic if the server supports it (and is
already on trunk "best approximation of atomic" for older servers).

> It would be silly for that to be a
> command-line option.  It should always do it.
> 

(see above)

> But for a propSET command, the old value that the user was looking at
> before performing the set is not something that the command itself can
> get.  There's no point in the command retrieving the "current" value at
> the time the propSET command is run, because that's not necessarily the
> value the user was looking at - it's already too late.

Yep.

> There is a case
> for this command taking the expected old value from the user, not that a
> command-line user is likely to provide it, but a script might.  The API
> behind it should certainly take this option so that GUIs etc. can use it
> in implementing their own propedit-like functionality via the propset
> API.
> 

Yes.  I was wondering whether to extend the client API to use the atomic RA
API, but then I discovered it already was doing "best approximation of
atomicity" so I went ahead and patched it up.  This reduces the scope of the
BRANCH-README item stsp quoted to just "Should propset-cmd.c expose this
flag?" --- which, re hwright's question, is one of the trivial items that I
won't hold reintegrating the branch on.

> - Julian
> 
> 

The _client API patches are r983234 and r983237 (both on the branch).

Reply via email to