Evgeny Kotkov wrote:
> 1) Currently we allow changing 'svn:check-ood' and 'svn:check-locks'.  We also
>    silently discard a property change whenever it targets 'svn:client-date'.
>    I find the first part questionable, because we basically allow a caller to
>    mess with our private implementation details.  [...] silently discarding
>    changes  to 'svn:client-date' is somewhat broken.  [...]
> 
>    I propose that we solve this part of the problem with the attached patch.
>    [...]
> 
>    Log message:
> [[[
> Error out on attempts to change internal transaction properties like
> 'svn:check-locks' through the public FS API.

+1 (concept)

That sounds like the logical approach. I haven't reviewed the patch itself.

> [...]  As a caller, I would expect a
> successive call to mean that the requested changes were applied without any
> problems, and that's the behavior we get with this patch.

s/successive/successful/


> 2) These internal properties currently are a part of what 
> svn_fs_txn_proplist()
>    and svn_fs_txn_prop() return.  From my point of view, they are nothing more
>    than an implementation detail and I don't think that something like that
>    should ever reach the caller of a public API.  However, this is how things
>    have been working for a long time, and I am not sure about changing it now,
>    although it does make sense to me.

+1.

The only test of svn_fs_txn_proplist() is fs-test.c 14 "transaction_props", and 
it fails if I change its begin-txn code from

  SVN_ERR(svn_fs_begin_txn(&txn, fs, 0, pool));

to (for example)

  SVN_ERR(svn_fs_begin_txn2(&txn, fs, 0, SVN_FS_TXN_CHECK_OOD, pool));

because it does not expect to see any txn-props that it did not create itself, 
except for svn:date.

The only other place where we currently acknowledge this leakage is in another 
test:

$ grep -E -w 
"SVN_FS__(CHECK_LOCKS|CHECK_OOD|CLIENT_DATE)|check-locks|check-ood|client-date" 
\
  subversion/libsvn_[^f]*/*.[ch] \
  subversion/[^l]*/*.[ch] \
  subversion/include/*.h \
  subversion/tests/cmdline/*.py
subversion/tests/cmdline/svnlook_tests.py: '  svn:check-locks\n', # internal 
prop, not really expected

I think it would be good to change this now. I don't think there is any 
legitimate reason to keep exposing these properties just because we have been 
doing so for a long time.

- Julian

Reply via email to