Checkout
Julian Foad
committed
on 29 Jun 15
On the 'move-tracking-2' branch: Start implementing top-level branching.

Change the element data structures to support multiple top-level b… Show more
On the 'move-tracking-2' branch: Start implementing top-level branching.

Change the element data structures to support multiple top-level branches.

Everything works as before, using only top-level branch number 0.

This implementation assumes that the WC is within a single existing top

branch, and that the editor drive is within a single existing top branch.

It does not yet support creating or deleting a top-level branch.

It does not yet map top-level branches to different path-spaces in an old

repository, so it does not yet have anywhere to store the payloads.

* subversion/include/private/svn_branch.h,

 subversion/libsvn_delta/branch.c

 (svn_branch_repos_get_root_branch,

  svn_branch_repos_find_el_rev_by_path_rev): Select a particular top branch.

 (svn_branch_revision_root_t): Store an array of root branches instead of a

   single one.

 (svn_branch_revision_root_create): Remove the root branch parameter:

   instead, create the object with no branches.

 (svn_branch_revision_root_get_root_branch): New.

 (svn_branch_state_t): Update docs: for a top-level branch, the 'outer-eid'

   field now stores the top-level branch number.

* subversion/include/private/svn_editor3e.h

 (svn_editor3_in_memory): Select a particular top branch.

* subversion/libsvn_delta/compat3e.c

 (ev3_from_delta_baton_t): Remember which top branch we're editing.

 (drive_changes_branch,

  editor3_sequence_point): When accessing the root branch, access the right

   one.

 (svn_editor3_in_memory): Select a particular top branch.

* subversion/svnmover/svnmover.c

 (wc_checkout): Initialize the editor for the requested top branch; error

   out if that branch doesn't exist.

 (wc_create): Remember which top branch the WC is editing.

 (replay): Take branches instead of rev-roots as inputs.

 (commit_callback_baton_t): Remember which top branch we are editing.

 (wc_commit): Pass the appropriate top level branches to replay().

 (find_el_rev_by_rrpath_rev): Look up within the WC's designated top

   branch.

 (do_update): Operate within the designated top branch.

 (display_diff_of_commit,

  do_revert): Update calls.

 (usage,

  sub_main): Add a '-B'/'--branch-id' option to select the top branch.

* subversion/svnmover/svnmover.h

 (svnmover_wc_t): Remember which top branch the WC is editing.

Show less