On the 'move-tracking-2' branch: Get branch-state pointers out of the editor API. The API now uses only references (branch-id).
* subversion/include/private/svn_branch.h, subversion/libsvn_delta/branch.c (svn_branch_rev_bid_eid_t, svn_branch_rev_bid_eid_create, svn_branch_rev_bid_eid_dup): New type and its constructors, similar to svn_branch_el_rev_id_t but containing a branch-id instead of a branch state pointer.
* subversion/include/private/svn_editor3e.h, subversion/libsvn_delta/editor3e.c In all editor API methods, replace an svn_branch_state_t pointer with a branch-id or in the case of svn_editor3_new_eid get rid of it entirely, and replace svn_branch_el_rev_id_t with svn_branch_rev_bid_eid_t.
* subversion/libsvn_delta/compat3e.c (editor3_new_eid): Track the API change, accessing the transaction through the editor's private data instead of through the previously passed-in branch state pointer. (editor3_add, editor3_copy_one, editor3_copy_tree, editor3_delete, editor3_alter): Track the API change, looking up branches from their ids.
* subversion/svnmover/svnmover.c (subtree_replay, branch_merge_subtree_r, do_copy, do_delete, do_mkdir, do_put_file, mk_branch, do_move): Track the API change, looking up branch ids as needed.
On the 'move-tracking-2' branch: Fix a bug in committing a change with multiple top-level branches.
* subversion/libsvn_delta/compat3e.c (drive_changes): Rename from drive_changes_branch, and convert all the branch hierarchies to delta editor actions, but only pass the resulting list of per-path changes once to the delta editor drive. (editor3_complete): Call drive_changes() just once, not for each branch hierarchy.