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

Reply via email to