Checkout Tools
  • last updated 32 mins ago
Constraints: committers
Constraints: files
Constraints: dates

Changeset 1697378 is being indexed.

On the 'move-tracking-2' branch: Update BRANCH-README following r1697376.


Remove a bug/query about cross-branch moving.

On the 'move-tracking-2' branch: Rework the 'move to a different branch'

functionality. Add new commands 'copy-and-delete', 'branch-and-delete',

'branch-into-and-delete', and make the 'mv' command interactively ask the user

what they want to do for a cross-branch move, offering those three as the


* subversion/svnmover/svnmover.c


action_defn): Define new actions 'copy-and-delete', 'branch-and-delete',


(do_copy_and_delete): Rename from 'move_by_copy_and_delete'. Use the

existing 'do_*' functions so as to be sure it is equivalent, and to get


(do_branch_and_delete): New.

(do_branch_into_and_delete): Rename from 'move_by_branch_and_delete'. Use

the existing 'do_*' functions, as above.

(do_interactive_cross_branch_move): New.

(do_move): Only handle 'normal' moves.

(VERIFY_NOT_CHILD_OF_SELF): Change the error message so it doesn't

assume the operation is 'move'.

(execute): Let 'mv' call the interactive function for a cross-branch move.

Implement the three new subcommands.

* subversion/tests/cmdline/


move_to_related_branch_element_already_exists): Use branch-into-and-delete.

(move_to_unrelated_branch): Use copy-and-delete.

(move_to_related_branch_2): Use branch-into-and-delete.

Remove unused code.

* subversion/libsvn_fs_fs/index.c

(svn_fs_fs__l2p_index_from_p2l_entries): Nobody uses the REVISION variable

so don't calculate it.

On the 'move-tracking-2' branch: Update an out-of-date comment.

* subversion/tests/cmdline/

(restructure_repo_projects_ttb_to_ttb_projects): Update a comment.

Add warnings to 1.8 and 1.9 release notes in the aftermath of issue #4588.

Turns out neither the release notes nor the SVN book is not too clear

about the fact that replacing repositories (e.g. after dump / load)

requires a server restart.

* site/publish/docs/release-notes/1.8.html

(FSFS format bump): Add a warning box instructing the user to restart

their server after(s) replacing a repository.

* site/publish/docs/release-notes/1.9.html

(Format bump): Same.

On the 'move-tracking-2' branch: Update an error message, now that

svnmover accepts paths specified with respect to a branch (r1696816),

and minor factoring.

* subversion/svnmover/svnmover.c

(point_to_outer_element_instead): Factor out error handling from

'execute' to here. Update the error message to suit top-level branches.

(execute): Update the call sites in the 'mv' and 'rm' commands.

On the 'move-tracking-2' branch: Update a check now that svnmover

accepts paths specified with respect to a branch (r1696816).

* subversion/svnmover/svnmover.c

(VERIFY_NOT_CHILD_OF_SELF): New macro, extracted from 'execute' and

updated to work properly when a path is specified relative to a branch.

(execute): Use VERIFY_NOT_CHILD_OF_SELF in the 'mv' command.

On the 'move-tracking-2' branch: catch up to trunk@1697326.

Resolved prop conflicts resulting from r1696087 which elided mergeinfo on

'notes' and 'subversion/tests/libsvn_fs_x'.

  1. … 31 more files in changeset.
On the 'move-tracking-2' branch: Minor refactoring: put each svnmover

subcommand in its own function, printing its own notification.

* subversion/svnmover/svnmover.c

(is_branch_root_element): Move here from further down.


branch_peid_name_to_path): New helpers.




do_put_file): New, extracted from execute().





do_branch_into): Do their own notification.

(execute): Use the new helpers, and don't do notification.

On the 'move-tracking-2' branch: Update BRANCH-README following r1696972.


Move 'svnmover switch'from the to-do list to the 'done' list.

On the 'move-tracking-2' branch: Add an 'svnmover switch' subcommand.

* subversion/svnmover/svnmover.c


action_defn): Define a 'switch' subcommand.

(do_switch): Rename from 'do_update' and extend to support switching to a

different branch. Error out on an attempt to switch to a branch with a

different root element; the merge would have errored out on this case


(execute): Adjust the 'update' command to use do_switch(), and implement

the 'switch' command.

On the 'move-tracking-2' branch: Add an 'svnmover info-wc' subcommand that

prints the WC URL, revision, and base and working branch ids.

* subversion/svnmover/svnmover.c


action_defn): Add an 'info-wc' subcommand.

(execute): Implement it.

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


On the 'move-tracking-2' branch: Update BRANCH-README and 'svnmover



Mention some more things to do. Remove non-nested (top-level) branching

from the to-do list, as it is now mainly done.

* subversion/svnmover/svnmover.c

(usage): Update the help text, both to mention the new ^B<branch-id>

syntax and generally.

On the 'move-tracking-2' branch: Implement '^B<branch-id>/path' syntax for

svnmover path inputs.

The full syntax is


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,


(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_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


(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


* notes/svnsync.txt: Update auth parameters.
On the 'move-tracking-2' branch: Hide a tiny implementation detail.

* subversion/include/private/svn_branch.h


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


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

peeking into the implementation.

In the Windows build mark the DLLs of libsvn_ra, libsvn_fs_base, libsvn_fs_fs,

libsvn_fx as to be delayloaded.

Without this patch these DLLs and their dependencies are always loaded from

code that references them. After this patch the code is dynamically loaded

when first necessary. (In all supported compilers this is implemented as

a per DLL load via the import table, so there is no per function call

performance penalty)

The non-shared-library build is unaffected.

* build.conf




libsvn_ra): Mark as delayload.

* build/generator/

(TargetLib): Load property.

* build/generator/

(write): Calculate dependency dlls to be delayloaded.

* build/generator/

(create_dll_target): Copy property to right target.

* build/generator/templates/vcnet_vcxproj.ezt

Extend linker arguments.

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

[svnmover.c committed in r1696771, svnmover.h committed in r1696772]

* subversion/svnmover/svnmover.h

(svnmover_wc_version_t): New.

(svnmover_wc_t): Move base and working fields into sub-structures.

* subversion/svnmover/svnmover.c

(wc_checkout): Initialize the new sub-structures.





execute): Adjust references accordingly.

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

[svnmover.c committed in r1696771, svnmover.h committed in r1696772]

* subversion/svnmover/svnmover.h

(svnmover_wc_version_t): New.

(svnmover_wc_t): Move base and working fields into sub-structures.

* subversion/svnmover/svnmover.c

(wc_checkout): Initialize the new sub-structures.





execute): Adjust references accordingly.

Make libsvn_fs_util, libsvn_fs_base, libsvn_fs_fs and libsvn_fs_x proper

shared libraries on Windows when shared libraries are enabled in the build,

just like on other platforms. Before this all of them were statically

linked into libsvn_fs and any project that directly used their functions.

This patch automatically detects circular reference problems in this code,

such as the one fixed in r1696695 and will allow delay loading quite a bit

of code from svn and svnadmin in a followup patch.

The 'msvc-force-static' markers on many test projects formalizes that these

projects already depended on internal apis, which were only available because

they were statically linked.

* build.conf




libsvn_fs_util): Properly declare exports of these libraries.

* subversion/libsvn_fs/fs-loader.h

(LIBSVN_FS_FS_H): Use proper unique define.



svn_fs_x__init): Move to separate header files to allow using the export


* subversion/libsvn_fs_base/fs_init.h

* subversion/libsvn_fs_fs/fs_init.h

* subversion/libsvn_fs_x/fs_init.h

New files containing the single entry point of these libraries.

    • ?
    • ?
    • ?
* tools/client-side/

Delete, as it hasn't been updated for 1.8+ and isn't trivial to update.

See the dev@ email thread " script isn't updated for 1.8/1.9"

started on 2015-08-12 at e.g.

<> or


Suggested by: stsp

* STATUS: Nominate r1696695.
* tools/client-side/

Add a note about how this doesn't work with 1.8+, and link to the email thread.

Suggested by: Stefan <luke1410{_AT_}>

Resolve a circular library reference issue in libsvn_fs_x, by using the passed

pointer to a function instead of the function by its name.

Found by: danielsh

James McCoy <>

* subversion/libsvn_fs_x/fs_id.c

(svn_fs_x__id_context_t): Add function pointer.

(fs_cleanup): Store open pointer to allow reopening.

(get_fs): Use function pointer.

* branches/1.9.x/STATUS: Vote for the r1696222 group (tested in a Windows VM).

Update some 'serf' references, to reflect that it is now an Apache

project. Apply some minor tweaks related to removing neon.

Fix a double L2P translation in the FSFS access logging debug feature for

format 7. Instead of the item index, we passed the already translated offset

to the logging function in one case. That results in "Item index FOO too

large in revision BAR" errors when running 'svn log -v'.

Note that this is an opt-in debugging feature for FSFS development only.

This does NOT solve

because the dbg_log_access function is a no-op unless explicitly activated

at compile time.

* subversion/libsvn_fs_fs/cached_data.c

(svn_fs_fs__get_changes): Only in phys. addressing mode, pass the resolved

file offset to the logging function.

* subversion/libsvn_fs_fs/cached_data.c

(dbg_log_access): Even when we are debugging, keep resource usage low

and close file handles asap.

In FSFS, make the access logging code compile and link again.

Note that this is an opt-in debugging feature for FSFS development only.

* subversion/libsvn_fs_fs/cached_data.c

(SVN_FS_FS__LOG_ACCESS): Fix typos in docstring.

(dbg_log_access): Adapt to recent internal API changes.