Checkout Tools
  • last updated 4 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset 1707086 is being indexed.

On the 'move-tracking-2' branch: Refactoring towards moving the

subbranch-root element concept to a higher level. Represent a subbranch-root

payload by a payload object with a flag set, rather than by null, and

eliminate some special handling of a subbranch-root element.

* subversion/include/private/svn_branch.h

(svn_branch_update_subbranch_root_element): Delete.

* subversion/include/private/svn_element.h

(svn_element_payload_t): Add an 'is_subbranch_root' field.

(svn_element_payload_create_subbranch): New.

* subversion/libsvn_delta/branch.c

(svn_branch_update_subbranch_root_element): Delete.

(branch_validate_element,

map_purge_orphans,

svn_branch_map_add_subtree,

svn_branch_state_parse,

svn_branch_state_serialize): Update the callers/users.

* subversion/libsvn_delta/compat3e.c

(editor3_alter): Update the callers/users.

* subversion/libsvn_delta/editor3e.c

(svn_editor3_alter,

svn_editor3_copy_one,

svn_editor3_payload_resolve,

wrap_alter): Update the callers/users.

* subversion/libsvn_delta/element.c

(svn_element_payload_invariants,

svn_element_payload_equal): Update the callers/users.

(svn_element_payload_create_subbranch): New.

* subversion/svnmover/svnmover.c

(subtree_replay,

element_merge,

mk_branch,

do_branch): Update the callers/users.

  1. … 6 more files in changeset.
On the 'move-tracking-2' branch: Simpify an API.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_instantiate_elements): Rename from

'svn_branch_instantiate_subtree'. Don't take new parent-eid and name

parameters; instead, take these from the 'elements' input.

* subversion/libsvn_delta/compat3e.c

(editor3_branch): Adjust the caller.

* subversion/svnmover/svnmover.c

(do_branch_into): Adjust the caller.

  1. … 3 more files in changeset.
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.

  1. … 7 more files in changeset.
On the 'move-tracking-2' branch: Some tidying up.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_id_nest): New.

(svn_branch_id_unnest): Rename from 'svn_branch_id_split'. Move the doc

string to the declaration.

(svn_branch_branch_subtree): Delete.

(svn_branch_rev_bid_eid_dup): Allow a null input.

(svn_branch_instantiate_subtree): Avoid using svn_branch_branch_subtree().

(svn_branch_state_parse): Track the rename.

* subversion/libsvn_delta/compat3e.c

(editor3_open_branch): Use svn_branch_id_nest().

* subversion/libsvn_delta/editor3e.c

(svn_editor3_open_branch,

svn_editor3_branch): Allow the output pointer to be null.

* subversion/svnmover/svnmover.c

(subtree_subbranch_str): Use svn_branch_id_nest().

(merge_subbranch): Avoid using svn_branch_branch_subtree().

(branch_merge_subtree_r): Add comments.

(subtree_diff_r): Use svn_branch_id_nest().

  1. … 4 more files in changeset.
On the 'move-tracking-2' branch: Keep track of new EIDs assigned with a

transaction, and only convert them to permanent EIDs at commit time.

This allows us to add elements in a txn based on an old revision, and then

'update' the txn to be based on a newer revision, and the EIDs added in the

newer revision will not clash with the EIDs added in the txn. (This 'update'

could be either a client-side WC update or the automatic rebase-on-commit.)

* subversion/libsvn_delta/editor3e.c

(VALID_EID): Adjust for local EIDs being negative.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_revision_root_t): Document that 'first_eid' holds less than

zero for transaction-local EIDs.

(svn_branch_txn_new_eid): Rename from 'svn_branch_revision_root_new_eid'.

Allocate negative EIDs instead of positive EIDs.

(branch_finalize_eids,

svn_branch_txn_finalize_eids): New.

(svn_branch_map_add_subtree): Track the rename.

* subversion/libsvn_delta/compat3e.c

(editor3_new_eid): Track the rename.

(editor3_alter): Track the rename. Adjust for local EIDs being negative.

(editor3_complete): Finalize the txn EIDs before committing.

* subversion/libsvn_delta/element.c

(svn_element_payload_invariants): Adjust for local EIDs being negative.

* subversion/svnmover/svnmover.c

(do_branch): Track the rename.

  1. … 5 more files in changeset.
On the 'move-tracking-2' branch: Tweak comments.

* subversion/include/private/svn_branch.h

(svn_branch_instantiate_subtree): Correct the doc string.

(svn_branch_branch_subtree): Fix a typo in the doc string.

On the 'move-tracking-2' branch: Tweak an API to remove an unneeded option.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_add_new_branch): Require the caller to specify the new branch

root EID. (Callers already comply.)

* subversion/include/private/svn_editor3e.h

(svn_editor3_open_branch): Correct the documentation -- the same requirement

is already enforced in this API.

  1. … 2 more files in changeset.
On the 'move-tracking-2' branch: Add an editor method 'open_branch'.

This gets rid of some direct access to the editor's txn.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_id_split): Newly public; renamed from 'branch_id_split'.

(svn_branch_state_parse): Track the rename.

* subversion/include/private/svn_editor3e.h

(svn_editor3_open_branch,

svn_editor3_cb_open_branch_t): New.

(svn_editor3_cb_funcs_t): Add the new method.

* subversion/libsvn_delta/editor3e.c

(svn_editor3_open_branch,

wrap_open_branch,

change_detection_open_branch): New.

(svn_editor3__get_debug_editor,

svn_editor3__change_detection_editor): Add the new method to the vtable.

* subversion/libsvn_delta/compat3e.c

(editor3_open_branch): New.

(svn_editor3_in_memory,

svn_editor3__ev3_from_delta_for_commit): Add it to the vtable.

(editor3_alter): Move the EID allocation hack to here...

* subversion/svnmover/svnmover.c

(subtree_replay): ... from here. Take a branch id instead of a pointer.

(svn_branch_replay): Use the new editor method. Use branch ids instead of

pointers.

(replay): Pass a branch id instead of a pointer.

(mk_branch): Use the new editor method. Return a branch id instead of a

pointer.

(execute): Adjust the call to mk_branch.

  1. … 5 more files in changeset.
On the 'move-tracking-2' branch: Rename a function for consistency.

* subversion/include/private/svn_branch.h

subversion/libsvn_delta/branch.c

(svn_branch_revision_root_new_eid): Renamed from

'svn_branch_allocate_new_eid'.

(svn_branch_map_add_subtree,

svn_branch_add_new_branch): Track the rename.

* subversion/libsvn_delta/compat3e.c

(editor3_new_eid): Track the rename.

* subversion/svnmover/svnmover.c

(subtree_replay,

do_branch): Track the rename.

  1. … 3 more files in changeset.
On the 'move-tracking-2' branch: Separate the repository-object API from the

rest of the branching API, into its own header and implementation files.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_repos_t): Leave the typedef here; make the struct definition

opaque, moving it to 'branch_repos.c'.

(svn_branch_repos_create,

svn_branch_repos_get_revision,

svn_branch_repos_get_root_branch,

svn_branch_repos_get_branch_by_id,

svn_branch_repos_find_el_rev_by_id,

svn_branch_repos_find_el_rev_by_path_rev,

svn_branch_revision_root_get_base): Move these...

* subversion/include/private/svn_branch_repos.h,

subversion/libsvn_delta/branch_repos.c

... to these new files.

(svn_branch_repos_get_base_revision_root): Renamed from

'svn_branch_revision_root_get_base'.

(svn_branch_repos_add_revision): New.

* subversion/libsvn_delta/compat3e.c

Include 'svn_branch_repos.h'.

* subversion/libsvn_ra/ra_loader.c

Include 'svn_branch_repos.h'.

(svn_branch_repos_fetch_info,

commit_callback_wrapper): Use 'svn_branch_repos_add_revision' instead of

direct access to the 'repos' structure.

* subversion/svnmover/svnmover.c

Include 'svn_branch_repos.h'.

(wc_checkout,

display_diff_of_commit): Track the rename.

  1. … 6 more files in changeset.
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.

  1. … 5 more files in changeset.
On the 'move-tracking-2' branch: Implement '^B<branch-id>/path' syntax for

svnmover path inputs.

The full syntax is

[^B<branch-id>/]relpath[@rev]

When BRANCH-ID is given, this means the relative path RELPATH within the

branch. When branches are nested, this may identify an element in a branch

that is nested inside branch <branch-id>; in case of multiple nesting, the

most deeply nested branch is found.

When the '^B<branch-id>/' prefix is not given, look inside the same branch

id as the WC base branch when a revision number is given, and look inside

the WC working branch when a revision number is not given.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_repos_find_el_rev_by_path_rev): Take an arbitrary branch id

and a branch-relative path instead of a top-level branch number and a

repository-relative path.

(svn_branch_find_nested_branch_element_by_relpath): Rename from

svn_branch_find_nested_branch_element_by_rrpath. Take a branch-relative

path instead of a repository-relative path.

(svn_branch_repos_get_branch_by_id): New.

(svn_branch_repos_find_el_rev_by_id): Simplify by using

svn_branch_repos_get_branch_by_id; this also means it will throw an

error instead of crashing if the branch is not found.

* subversion/libsvn_delta/compat3e.c

(drive_changes_r,

drive_changes_branch): Track the change to

svn_branch_repos_find_el_rev_by_path_rev(), by identifying the top-level

branch by its branch-id rather than its top-level branch number.

* subversion/svnmover/svnmover.h

(svnmover_wc_t): Remove the 'top_branch_num' field.

* subversion/svnmover/svnmover.c

(wc_create): Remove initialization of the obsolete 'top_branch_num' field.

(action_t): Add a 'branch_id' field.

(find_el_rev_by_rrpath_rev): Look up the path in a given branch, defaulting

to the base branch when looking in a given revision or the working branch

otherwise.

(execute): Pass on the branch id when looking up a path. Remove a

re-initialization of the obsolete 'top_branch_num' field.

(parse_actions): Parse "^B<branch-id>/path" syntax.

(sub_main): No longer pass the obsolete 'top_branch_num' parameter to

wc_create().

  1. … 4 more files in changeset.
On the 'move-tracking-2' branch: Hide a tiny implementation detail.

* subversion/include/private/svn_branch.h

(svn_branch_add_new_branch,

svn_branch_branch_subtree): Document that when creating a top-level

branch a new id is assigned and the OUTER_EID parameter ignored.

* subversion/libsvn_delta/branch.c

(svn_branch_add_new_branch): When creating a top-level branch, assign it

the next available top-branch number.

* subversion/svnmover/svnmover.c

(wc_commit,

do_topbranch): Pass 0 for the new top-level branch number instead of

peeking into the implementation.

  1. … 2 more files in changeset.
On the 'move-tracking-2' branch: More support for top-level (that is,

non-nested) branches.

This makes it possible to create a new top-level branch by branching any

existing branch, by means of:

svnmover -B <existing-branch-id> tbranch <path-to-existing-branch>

(The syntax is redundant, as <existing-branch-id> implies

<path-to-existing-branch>.)

TODO:

* change svnmover syntax so that paths given are relative to the branch

designated by the "-B" option;

* mkbranch <top-level-branch>

* rmbranch <top-level-branch>

* command-line syntax for addressing things in other top-level branches,

e.g. <path>@[<rev>].[B<branch-id>]

or ^B<branch-id>/path[@rev]

* subversion/include/private/svn_branch.h

(svn_branch_add_new_branch,

svn_branch_branch_subtree): Take the revision root as a separate parameter.

* subversion/libsvn_delta/branch.c

(svn_branch_instantiate_subtree): Adjust calls to track the API changes.

(svn_branch_add_new_branch,

svn_branch_branch_subtree): Take the revision root as a separate parameter.

(svn_branch_revision_root_delete_branch): Also update the list of

top-level branches, in preparation for when we can delete a top-level

branch.

(svn_branch_delete_branch_r): Remove a dereference that was redundant for

nested branches but would have broken when deleting a top-level branch.

(svn_branch_repos_find_el_rev_by_path_rev): Error out nicely if asked to

look in a nonexistent top-level branch.

* subversion/libsvn_delta/compat3e.c

(drive_changes_branch): Create the top-level storage node for any newly

created top-level branch.

* subversion/svnmover/svnmover.c

(commit_callback_baton_t,

display_diff_of_commit): Rename a baton field, for clarity.

(wc_commit): Support creating a new top-level branch as part of the commit.

(action_code_t,

action_defn): Add a 'tbranch' subcommand.

(do_topbranch): New.

(execute): Implement the 'tbranch' subcommand.

(find_el_rev_by_rrpath_rev): Adjust doc string now that it can return an

error if the given top-level branch does not exist at the requested rev.

(svn_branch_replay,

merge_subbranch,

mk_branch,

do_branch): Adjust calls to track the API changes.

  1. … 3 more files in changeset.
On the 'move-tracking-2' branch: Remove 'svn_branch_copy_subtree' from the

public API, because 'svn_branch_add_subtree' is a better, more general form

of the same operation.

* subversion/include/private/svn_branch.h

(svn_branch_copy_subtree): Move and rename...

* subversion/libsvn_delta/compat3e.c

(copy_subtree): ... to here.

(editor3_copy_tree): Track the rename.

  1. … 2 more files in changeset.
On the 'move-tracking-2' branch: Remove 'svn_branch_branch' from the public

API, because 'svn_branch_branch_subtree' is a better, more general form of

the same operation.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_branch): Move and rename...

* subversion/svnmover/svnmover.c

(do_branch): ... to here.

(execute): Track the rename.

  1. … 2 more files in changeset.
On move-tracking-2 branch: add '--ui serial' for 'ls' and 'ls-br-r', use

it to verify eids in a test.

* subversion/include/private/svn_branch.h

(svn_branch_state_serialize): Declare.

* subversion/libsvn_delta/branch.c

(svn_branch_state_serialize): Make non-static.

* subversion/svnmover/svnmover.c

(UI_MODE_SERIAL): Add.

(ui_mode_map): Extend.

(execute): Implement ls-br-r and ls serial output.

* subversion/tests/cmdline/svnmover_tests.py

(test_svnmover3): New.

(merge_swap_abc): Use new function.

* subversion/tests/cmdline/svntest/wc.py

(_re_parse_eid_header, _re_parse_eid_branch, _re_parse_eid_ele,

_re_parse_split_branch_eid, from_eids): New.

(StateItem): Add eid attribute.

  1. … 4 more files in changeset.
On the 'move-tracking-2' branch: Tweak a doc string.

* subversion/include/private/svn_branch.h

(svn_branch_get_id): Document the id format. Move to a better position in

the file.

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.

  1. … 5 more files in changeset.
On the 'move-tracking-2' branch: Remove the 'branch-into' function from the

public API as it is a derived, not fundamental, branching operation.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_branch_into): Move from here...

* subversion/svnmover/svnmover.c

(do_branch_into): ... to here. Rename. Improve and correct the doc string.

(execute): Track the rename.

  1. … 2 more files in changeset.
On the 'move-tracking-2' branch: Tweak a doc string.

* subversion/include/private/svn_branch.h

(svn_branch_subtree_create): Tweak doc string.

On the 'move-tracking-2' branch: Add notes about operating on transactions

and flat tree states.

* BRANCH-README,

subversion/include/private/svn_branch.h

Add notes about operating on transactions and flat trees, and what needs

to be done to improve the situation.

  1. … 1 more file in changeset.
On the 'move-tracking-2' branch: Provide more simple APIs for clarity,

instead of accessing structure fields directly.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_repos_t): Correct a comment.

(svn_branch_repos_get_revision,

svn_branch_repos_get_root_branch,

svn_branch_revision_root_get_base): New.

(svn_branch_repos_find_el_rev_by_id,

svn_branch_repos_find_el_rev_by_path_rev): Use them.

* subversion/svnmover/svnmover.c

(wc_commit,

do_update,

do_revert): Use them.

  1. … 2 more files in changeset.
On the 'move-tracking-2' branch: Rename an API for clarity.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_get_immediate_subbranches): Rename from

'svn_branch_get_all_subbranches'.

* subversion/libsvn_delta/compat3e.c

(convert_branch_to_paths_r): Track the rename.

  1. … 2 more files in changeset.
On the 'move-tracking-2' branch: Tweak a doc string.

* subversion/include/private/svn_branch.h

(svn_branch_map_add_subtree): Clarify the use of new EIDs.

On the 'move-tracking-2' branch: A small refactoring.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_add_new_branch): If the given root EID is -1, allocate a new EID.

* subversion/svnmover/svnmover.c

(mk_branch): Don't allocate a new EID here; let

svn_branch_add_new_branch() do it.

  1. … 2 more files in changeset.
On the 'move-tracking-2' branch: Track the base revision number for a

branching transaction. We do not yet make use of this.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_revision_root_t,

svn_branch_revision_root_create): Add a base revision number field.

(svn_branch_revision_root_parse): Initialize the base revision number.

* subversion/libsvn_delta/compat3e.c

(drive_changes_branch): Use the stored base revision number instead of

assuming it is the head revision.

* subversion/libsvn_ra/ra_loader.c

(svn_branch_get_mutable_state): Set both the revision and the base revision

numbers appropriately for a transaction. (Previously even the existing

revision number field was not being changed to indicate a transaction.)

  1. … 3 more files in changeset.
On the 'move-tracking-2' branch: Eliminate some direct access to branch

object implementation details.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_repos_find_el_rev_by_id): New.

* subversion/libsvn_delta/compat3e.c

(svn_editor3_get_all_branches_in_rev): Use an accessor function instead of

directly reading rev_root->branches.

* subversion/svnmover/svnmover.c

(svn_branch_find_predecessor_el_rev): Use the new method

'svn_branch_repos_find_el_rev_by_id'.

(svn_branch_log): Adjust the call to 'svn_branch_find_predecessor_el_rev'.

  1. … 3 more files in changeset.
On the 'move-tracking-2' branch: Eliminate some direct access to branch

object implementation details.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_get_elements): New.

* subversion/svnmover/svnmover.c

(sort_compare_items_by_eid): New.

(list_branch_elements_by_eid,

branch_merge_subtree_r): Iterate over the elements in the branch

rather than over all known element ids.

(flat_branch_diff_r,

svn_branch_diff_r): Print element ids using a hard-coded minimum width of

3 rather than based on the maximum of all known element ids.

  1. … 2 more files in changeset.
On the 'move-tracking-2' branch: Delete a branch_state_t API function that

assumed branch state would have access by paths.

* subversion/include/private/svn_branch.h,

subversion/libsvn_delta/branch.c

(svn_branch_get_subbranches): Delete.

(svn_branch_get_subtree): Gather subbranches a different way, using

svn_branch_get_all_subbranches() instead of svn_branch_get_subbranches().

  1. … 1 more file in changeset.