subversion

Checkout Tools
  • last updated 1 hour ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset 1697405 is being indexed.

Correct a pool name.

* subversion/libsvn_fs_fs/load-index.c

(svn_fs_fs__load_index): ITERPOOL actually a mere SUBPOOL.

Make 'svnfsfs load-index' more convenient to use in case the revision

footer is corrupted or missing. Also, as long as the footer is valid,

make sure the new index actually covers all revision contents.

* subversion/libsvn_fs_fs/load-index.c

(get_max_covered): New utility function.

(svn_fs_fs__load_index): In case of a footer parser error, truncate

the rev file where the coverage of new index

data ends. Otherwise, require the coverage

to be the same as the old index coverage.

* subversion/tests/libsvn_fs_fs/fs-fs-private-test.c

(load_index): Update test to pass the stricter internal checks.

Improve error checking in 'svnfsfs load-index'. The input data must

have no holes or overlaps in it.

* subversion/libsvn_fs_fs/load-index.c

(check_all_covered): New validation function.

(svn_fs_fs__load_index): Invoke the new check.

* STATUS: Add svnfsfs load-index fixes (r1697381, r1697384, r1697387).
Actually implement what 'svnfsfs load-index' promises: That the input data

does not need to be pre-sorted by offset.

* subversion/libsvn_fs_fs/load-index.c

(compare_p2l_entry_revision): Define ordering criterion.

(svn_fs_fs__load_index): Sort the input before processing it.

Fix an inconsistency between 'svnfsfs dump-index' and 'svnfsfs load-index'.

While the first writes decimal item numbers, the load would interpret them

as hex. Read them as decimal now.

* subversion/svnfsfs/load-index-cmd.c

(token_to_i64): Make the RADIX selectable.

(parse_index_line): Parse each column with the appropriate radix.

Fix a bug in FSFS format7's index rewriting code, used by svnfsfs only.

The bug will lead to invalid index data for packed revisions if the first

entry in the index data passed in from svnfsfs is not part of the revision

in that pack file. A workaround is possible by adding a simple dummy

entry for an empty item of size 0 with the correct revision number in front

of the actual index data.

* subversion/libsvn_fs_fs/load-index.c

(svn_fs_fs__load_index): Pass the first revision in the pack down the

call stack instead of a random revision within

the same pack.

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

* BRANCH-README

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

options.

* subversion/svnmover/svnmover.c

(action_code_t,

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

'branch-into-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

notifications.

(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/svnmover_tests.py

(move_to_related_branch,

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/svnmover_tests.py

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

(el_rev_id_to_path,

branch_peid_name_to_path): New helpers.

(do_copy,

do_delete,

do_mkdir,

do_put_file): New, extracted from execute().

(do_move,

mk_branch,

do_branch,

do_topbranch,

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.

* BRANCH-README

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_code_t,

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

anyway.

(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_code_t,

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

hierarchy.

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

help'.

* BRANCH-README

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

[^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().

* 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_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.

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_fs_base,

libsvn_fs_fs,

libsvn_fs_x,

libsvn_ra): Mark as delayload.

* build/generator/gen_base.py

(TargetLib): Load property.

* build/generator/gen_vcnet_vcproj.py

(write): Calculate dependency dlls to be delayloaded.

* build/generator/gen_win.py

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

(wc_commit,

find_el_rev_by_rrpath_rev,

do_update,

do_revert,

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.

(wc_commit,

find_el_rev_by_rrpath_rev,

do_update,

do_revert,

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_base,

libsvn_fs_fs,

libsvn_fs_x,

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_base__init,

svn_fs_fs__init,

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

generator.

* 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.

    • ?
    /trunk/subversion/libsvn_fs_x/fs_init.h
    • ?
    /trunk/subversion/libsvn_fs_base/fs_init.h
    • ?
    /trunk/subversion/libsvn_fs_fs/fs_init.h
* tools/client-side/detach.py

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

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

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

<http://svn.haxx.se/dev/archive-2015-08/0071.shtml> or

<http://mail-archives.apache.org/mod_mbox/subversion-dev/201508.mbox/%3C55CA829A.2080509@gmx.de%3E>.

Suggested by: stsp

* STATUS: Nominate r1696695.