If your commits into trunk are only mergesets, you can use pre-commit hook, which
- Intercepts commits to /trunk
- Check some property of some file or (maybe even /trunk), defined in this commit (originally property have to be defined in branch-root and appear as property of trunk on merge in WC)
- Allow this commit only if property defined defined and has a predefined value
If your commits are mixed (direct development in trunk and merges), you can slightly expand the above hook and check two svn-properies, where one (and only one) must be defined.
Something like "direct-commit YES" and "merge-approved YES". For development commits merge-approved
must not exist, while direct-commit
will be defined, for mergesets the situation is reversed (direct-commit
doesn't exist, merge-approved
is defined)
I see only one problem for administration and management side: on creating branch all these properties must be wiped in branch, "signing" branches for approving merge must happen in secure way (ordinary propset will be exploited soon)