The revert_list table is constructed using triggers in the recursive case. It used to do that for single item
changes, but the code (recently) switched to direct insertion into revert_list rather than depending upon
triggers. A similar change could be made for the recursive case.
In adm_ops.c, there are places where svn_wc__db_revert_list_notify() is called. However, it is NOT called
when notify_func is NULL. This means the revert_list table is not dropped. The code should be rejiggered
to ensure that the revert_list table is always dropped, even when errors occur. This probably means a
special call from svn_wc_revert4() after the variant sub-functions are called, and then compose any
resultant errors, to then be returned from revert4().