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

Changeset 1657026 is being indexed.

As we are revving svn_client_revert() for 1.9 anyway, now is the time to

give it a 'metadata_only' flag, like we have on copy and move.

This helps gui clients that should record changes after they occured, who

don't want to revert local changes just to re-apply them using the Subversion

function. (And thereby avoiding file lock challenges on Windows)

Note that some of the refactoring in this patch is preparation for a

followup performance patch for reverting huge trees (like entire WC).

* subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp

(Java_org_apache_subversion_javahl_SVNClient_revert): Add another boolean.

* subversion/bindings/javahl/native/SVNClient.cpp

(SVNClient::revert): Forward metadata_only.

* subversion/bindings/javahl/native/SVNClient.h

(SVNClient::revert): Add metadata_only boolean.

* subversion/bindings/javahl/src/org/apache/subversion/javahl/

(revert): Add and document argument.

* subversion/bindings/javahl/src/org/apache/subversion/javahl/

(revert): Add argument (3*)

* subversion/include/svn_client.h

(svn_client_revert3): Add and document argument.

(svn_client_revert2): Document behavior of new argument.

* subversion/include/svn_wc.h

(svn_wc_revert5): Add and document argument.

(svn_wc_revert4): Document behavior of new argument.

* subversion/libsvn_client/deprecated.c

(svn_client_revert2): Update caller.

* subversion/libsvn_client/revert.c

(revert_with_write_lock_baton): Add flag.

(revert): Update caller. Pass error to notify.

(svn_client_revert3): Add argument. Properly use iterpool.

Update caller.

* subversion/libsvn_wc/deprecated.c

(svn_wc_revert4): Update caller.

* subversion/libsvn_wc/revert.c

(revert_wc_data): Add prototype.

(revert_restore): Add argument. Extract the non metadata work

code to revert_wc_data.

(revert_wc_data): New function. Placed below revert_restore to

minimize changes to this file in this patch.

* subversion/svn/revert-cmd.c

(svn_cl__revert): Update caller.

* subversion/tests/libsvn_wc/utils.c

(sbox_wc_revert): Update caller.

Ignore x509-related binaries.

* subversion/tests/libsvn_subr: Ignore x509-test.

* tools/dev: Ignore x509-parser.

On the pin-externals branch, merge outstanding changes from trunk.

    • ?
  1. … 52 more files in changeset.
Extend regression tests around svn_ra_get_file_revs2, and walking through

history with it. Add additional boolean to JavaHL api for this function.

* subversion/bindings/javahl/native/RemoteSession.cpp

(callback): Pass information on whether there is a delta.

(call): Pass boolean.

* subversion/bindings/javahl/src/org/apache/subversion/javahl/

(FileRevision.FileRevision): Add textDelta argument. Fill field.

(FileRevision.hasTextDelta): New function.

(FileRevision.textDelta): New field.

* subversion/bindings/javahl/tests/org/apache/subversion/javahl/

(testGetFileRevisions): Extend test.

* subversion/libsvn_repos/rev_hunt.c

(send_path_revision): Avoid doing work that is ignored.

* subversion/tests/libsvn_client/mtcc-test.c

(handle_rev_baton): New struct.


test_file_revs_both_ways): New function.

(test_funcs): Add test_file_revs_both_ways.

Fix svnsync r0 filtering to handle svn:mergeinfo where not all

lines contain r0.

* subversion/svnsync/sync.c

(remove_r0_mergeinfo): Build up new string when r0 not present.

[In subversion/tests/cmdline/svnsync_tests_data/]

* mergeinfo-contains-r0.dump: Extend with svn:mergeinfo that has

only some, or no, lines with r0.

* mergeinfo-contains-r0.expected.dump: Adjust.

* subversion/tests/svn_test_main.c

(svn_test_main): On WIN32 remove the .exe suffix from testnames.

* subversion/tests/libsvn_client/mtcc-test.c

(test_replace_tree): Remove invalid comment (copied from another test).

* subversion/tests/libsvn_ra/ra-test.c

(expect_error): Remove unused variable.

Make svn_ra_get_lock() consistent with svn_fs_get_lock() in not returning an

error when the specified path does not exist on trunk and document this


This function is within svn only used for 'svn info', and introducing the

error in the other ra layers would make this function fail in some cases.

* subversion/include/svn_fs.h

(svn_fs_get_lock): Extend documentation.

* subversion/include/svn_ra.h

(svn_ra_get_lock): Extend documentation.

* subversion/libsvn_ra_serf/get_lock.c

(svn_ra_serf__get_lock): Handle SVN_ERR_FS_NOT_FOUND.

* subversion/tests/libsvn_ra/ra-test.c

(expect_error): Update expected result.

Following up on r1656785, resolve the gcc/clang warning by just including

the header that I tried to avoid including.

* subversion/tests/libsvn_wc/utils.h

(includes): Add svn_client.h

(svn_client_ctx_t): Remove forward definition.

Found by: stsp

On the pin-externals branch, preserve the strings used to specify peg and

operative revisions of already pinned externals.

This keeps revisions such as "-r{2015-02-04}" intact instead of expanding

them to longer strings such as "-r{2015-02-03T23:00:00.000000Z}".

Suggested by: brane


* subversion/include/private/svn_wc_private.h

(svn_wc__externals_parser_info_t): New. Contains extended information

about lines parsed from svn:externals properties.

(svn_wc__parse_externals_description): New output parameter parser_infos_p.

* subversion/libsvn_client/copy.c

(pin_externals_prop): Use extended information returned by the parser to

keep pinned externals pinned as the user would expect.

* subversion/libsvn_wc/externals.c

(find_and_remove_externals_revision): Return the original revision string.

(svn_wc__parse_externals_description): Return additional information about

the parsed external, including the syntax format, operational revisions,

and peg revisions.

* subversion/tests/cmdline/

(copy_pin_externals): The above changes fix a bug where an operative

revision was added unnecessarily when pinning. Adjust expected output.

Following up on r1656778, tweak calculation of where to create the

authz file. This should fix the problem on buildbots that cleanup

their test environment better than my local scripts.

* build/

(_run_c_test): Add proper intermediate path to write authz file.

Switch a few 'ra' C tests to using the current ra layer. Add regression test

for r1656713. Fix some actual consistency issues found for lock handling

in ra_serf.

* subversion/libsvn_ra_serf/lock.c

(run_locks): Don't return locks without a token.

* subversion/tests/libsvn_ra/ra-test.c

(make_and_open_local_repos): Rename to ...

(make_and_open_repos): ... this. And open repos using ra layer.

(location_segments_test): Update caller.

(expect_error): Split assertion to show serf problem. Handle serf respons

on svn_ra_get_lock().

(lock_test): Update caller.

(get_dir_test): New function.

(max_threads): Allow using multiple threads.

(test_funcs): Add get_dir_test.

Make the MTCC tests use the current ra layer. Add a bit of plumbing

to make it easier to setup ra usage.

* subversion/tests/libsvn_client/mtcc-test.c









test_replace_tree): Create test ra agnostic.

* subversion/tests/libsvn_wc/utils.c


Extract some code to svn_cmdline_create_auth_baton.

* subversion/tests/svn_test.h

(includes): Add svn_auth.h.

(svn_test__init_auth_baton): New function.

* subversion/tests/svn_test_main.c

(svn_test__init_auth_baton): New function.

Remove SVN_DBG() that was accidentally committed in r1656779.

* subversion/tests/svn_test_fs.c

(svn_test__create_repos2): Remove SVN_DBG().

Following up on r1656778 and r1656779, start using the current ra layer

in the tests that use the standard C sbox infrastructure, like op-depth-test.

* subversion/tests/libsvn_wc/op-depth-test.c

(repo_wc_copies): Use helper function that sets up authz.

(repo_wc_copy): Use new information to avoid file:// assumption.

* subversion/tests/libsvn_wc/utils.c

(includes): Add svn_cmdline.h.

(svn_test__create_client_ctx): New function.

(create_repos_and_wc): Add argument and use new functions to work

with other ra layers.

(svn_test__sandbox_create): Update caller.







sbox_wc_relocate): Create ctx using helper.

* subversion/tests/libsvn_wc/utils.h

(svn_test__sandbox_t): Add repos_dir member.

(svn_client_ctx_t): Add prototype.

(svn_test__create_client_ctx): New function.

Following up on r1656778, update repository create helper to create

repositories accessible via the current ra layer.

* subversion/tests/svn_test_fs.c

(svn_test__create_repos): Rename to...

(svn_test__create_repos2): ... this and handle repository creation

for DAV and SVN.

(svn_test__create_repos): Reimplement as wrapper around


* subversion/tests/svn_test_fs.h

(svn_test__create_repos2): New function.

Optionally provide information about the ra layer we are testing to the C

tests. This will (after a few followup patches) allow running several

C tests against svn:// and http://.

* build/

(_run_c_test): Pass more information.

* subversion/tests/svn_test.h

(svn_test_opts_t): Add a few more fields.

* subversion/tests/svn_test_main.c

(test_options_e): Handle three arguments.

(cl_options): Document new arguments.

(svn_test_main): Store prog_name. Parse new arguments.

On the pin-externals branch, support the legacy svn:externals syntax.

This avoids confusing old clients in cases where the legacy syntax is

used on purpose and 'svn copy --pin-externals' is used.

Suggested by: brane


* subversion/include/private/svn_wc_private.h

(svn_wc__parse_externals_description): Declare.

* subversion/libsvn_client/copy.c

(pin_externals_prop): Preserve syntax format while pinning externals.

* subversion/libsvn_wc/externals.c

(svn_wc__parse_externals_description): Extended version of

svn_wc_parse_externals_description3() which returns information about

the syntax used to define each external.

(svn_wc_parse_externals_description3): Re-implement as a wrapper around


* subversion/tests/cmdline/

(copy_pin_externals): Adjust expected output. Two externals use legacy format.

    • ?
On the dump-load-cross-check branch: Make the DAV auto tests work with

dump/load cross-checking enabled.

* subversion/tests/cmdline/

Create an htpasswd entry for the __dumpster__ user.

* subversion/tests/cmdline/svntest/

(Sandbox.verify_repo): Use the special svnrdump authentication

for the load phase of the cross-check, too.

On the dump-load-cross-check branch: Sync with trunk up to r1656714.
    • ?
  1. … 69 more files in changeset.
* STATUS: Extend justification on r1656713.
* subversion/libsvn_subr/win32_xlate.c

(svn_subr__win32_xlate_t): Remove duplicate typdef.

* STATUS: Nominate r1656713.
Rename library private type to match our codestyle.

* subversion/libsvn_subr/win32_xlate.c

* subversion/libsvn_subr/win32_xlate.h

(svn_subr__win32_xlate_t): Rename from win32_xlate_t.

(svn_subr__win32_xlate_open, svn_subr__win32_xlate_to_stringbuf): Update


* subversion/libsvn_subr/utf.c

(xlate_handle_t): Typedef as svn_subr__win32_xlate_t on Windows.

Following up on r1296628, resolve a hang in svnserve<->libsvn_ra_svn

communication when calling svn_ra_get_dir2() on a non existing target without

obtaining its properties.

* subversion/svnserve/serve.c

(get_dir): Fetch entries before starting the response, to allow sending

errors that occured when fetching entries.

Found by: schabi

Reproducable by:


apr_hash_t *tmp;

SVN_ERR(svn_ra_get_dir2(ra_session, &tmp, NULL, NULL,

"non/existing/subdir", 1, SVN_DIRENT_KIND, pool));


which is not easy to integrate in our test suite.

Refactor code a bit to avoid pointer cast.

* subversion/libsvn_subr/utf.c

(xlate_handle_t): Define local type that holds xlate handle on

different platform: win32_xlate_t on Windows and apr_xlate_t on

other platforms.

(xlate_handle_node_t, xlate_alloc_handle, convert_to_stringbuf): Use

new platform depended xlate_handle_t type instead of apr_xlate_t.

* subversion/svn/svn.c

(svn_cl__cmd_table): Refer the reader to 'svn help propset' for details of

the svn:* special properties, from the help text of each other property


Rename svn_ra_dup_session() (public api) to svn_ra__dup_session (private api).

No functional changes.

* subversion/include/private/svn_ra_private.h

(svn_ra__dup_session): New function.

* subversion/include/svn_ra.h

(svn_ra_dup_session): Remove function

* subversion/libsvn_client/diff.c

(includes): Add svn_ra_private.h.

(diff_repos_repos): Update caller.

* subversion/libsvn_ra/ra_loader.c

(svn_ra_dup_session): Rename to...

(svn_ra__dup_session): ... this.

(svn_ra_stat): Update caller (in svnserve fallback code).

On the reuse-ra-session branch: Sync with trunk up to r1656689.