On the 'move-tracking-2' branch: Record where branches were branched from.
* subversion/include/private/svn_branch.h, subversion/libsvn_d…
On the 'move-tracking-2' branch: Record where branches were branched from.* subversion/include/private/svn_branch.h, subversion/libsvn_delta/branch.c (svn_branch_rev_bid_t, svn_branch_rev_bid_create, svn_branch_rev_bid_dup): New. (svn_branch_state_t, svn_branch_state_create, svn_branch_add_new_branch, svn_branch_subtree_t): Add a 'predecessor' field. (svn_branch_get_subtree): Fill in the 'predecessor' field. (svn_branch_instantiate_subtree): Pass on the predecessor when creating any nested branches. (parse_branch_line, svn_branch_state_parse, svn_branch_state_serialize): Read and write the branch predecessor info. (svn_branch_revision_root_serialize): Finalize the predecessor 'rev' field by converting '-1' to the committed revision number.* subversion/include/private/svn_editor3e.h, subversion/libsvn_delta/editor3e.c (svn_editor3_open_branch, svn_editor3_open_branch_t): Add a 'predecessor' field. (wrap_open_branch, change_detection_open_branch): Adjust accordingly.* subversion/libsvn_delta/compat3e.c (editor3_open_branch, editor3_branch): Pass on the predecessor when creating a new branch.* subversion/libsvn_ra/ra_loader.c (svn_branch_get_mutable_state): Update all the 'predecessor' info to point to the base revision instead of to that revision's predecessor.* subversion/svnmover/svnmover.c (svn_branch_replay): Pass on the predecessor when creating a new branch. (mk_branch): Pass null for the predecessor of the new branch.* subversion/tests/cmdline/svntest/wc.py (re_parse_eid_branch, State.from_eids): Adjust the regex for matching the branch metadata.