Revision properties are unversioned that's well documented. There are
two hooks associated with a revprop change, the pre-revprop-change and
the post-revprop-change. What's not well documented is that these
hooks and the change are not executed within a Subversion transaction,
which means that the ACTION parameter passed to the hooks is not
reliable. The example pre-revprop-change hook created with every
repository includes:
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
which could lead one to believe that ACTION is reliable.
At the very least that's a documentation bug, but is it a code bug as
well? Is there any point in providing ACTION if it is not reliable?
Should we run the pre-revprop-change and the change itself in a
Subversion transaction? Something like:
Process 1 Process 2
--------- ---------
start txn
get old value
run pre-revprop-change
start txn
get old value
run pre-revprop-change
change-value
commit txn
run post-revprop-change
change value
fail to commit txn
return error
return success
--
Philip