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

Changeset 874237 is being indexed.

On branch tc-resolve:

Merge in changes from trunk up to r34162.

    • ?
    • ?
  1. … 48 more files in changeset.
Deprecate the RA->open_tmp_file callback. It was from a long time ago,

when we did have not temp file capabilities. Today, RA layers should just

use the available function for generating unique files (from svn_io.h)

* subversion/include/svn_ra.h:

(svn_ra_callbacks2_t.open_tmp_file): deprecated

* subversion/libsvn_client/ra.c:

(open_admin_tmp_file): removed

(open_tmp_file): use svn_io_open_unique_file3 to always generate a temp

file in the system temp area.

(svn_client__open_ra_session_internal): always use open_tmp_file,

ignoring the USE_ADMIN parameter.

* subversion/libsvn_ra_neon/commit.c:

(commit_apply_txdelta): ...

* subversion/libsvn_ra_neon/fetch.c:

(make_reporter): ...

* subversion/libsvn_ra_serf/commit.c:

(apply_textdelta): ... use svn_io_open_unique_file3 rather than the

open_tmp_file callback.

Consistently log an error when copy targets exist and

add some expected failure tests. This is a workaround

for mod_dav_svn issue number 3314.

* contrib/client-side/svnmucc/svnmucc.c

(build): If copy target path exists log an error

* contrib/client-side/svnmucc/

(xrun_svnmucc): Added expected failure test function

(main): Added cp failure tests

Patch by: me

Review by: philip

Followup to r34147 by rolling back the FSFS sqlite transaction on a failed


If at any point we decide that we have more places to use wrapped sqlite

transactions, this could probably be generalized in the sqlite APIs.

* subversion/libsvn_fs_fs/fs_fs.c

(commit_body): Remove transaction handling.

(commit_body_wrapper): New.

(svn_fs_fs__commit): Call the new wrapper.

When exporting, make sure the temp files go into the target directory,

rather than the system tempdir, since we plan to rename them into place.

Note: this was a regression that I introduced in r34155. On my system,

TMPDIR and the WC were on the same device, so it did not show up. I now

have a recipe for diff-device testing in order to watch out for this.

* subversion/libsvn_client/export.c:

(apply_textdelta, svn_client_export4): create the temp file in the same

directory as the target file since we plan to do renaming.

Fix update/switch to skip all tree conflict victims and their

descendants. Skip both newly-discovered and existing tree conflicts.

Create only one tree conflict at the root of each conflicted tree, not

a tree conflict in every directory.

Notify the user just once about any given tree conflict if the target

contains a tree conflict, is itself tree-conflicted, or is inside a

tree conflict.

Tweak test expectations to reflect these new features. Add tests that

run update/switch in trees that already contain tree conflict victims.

Add tests that chdir into conflicted trees and attempt to update/switch.

* subversion/libsvn_wc/update_editor.c

(edit_baton): Add field current_tree_conflict.

(make_editor): Initialize new field.

(dir_baton): Remove unused field tree_conflicted.

(make_dir_baton): Track field removal.

(open_root): TODO comment, for now.

(check_tree_conflict): Thin out the comments a bit. Remove useless

checks for entry validity. Remove the redundant (delete:obstructed)

and (delete:missing) conflicts.

(already_in_a_tree_conflict): New function.





open_file): Skip the operation if there is an existing or new tree

conflict. Notify the user once per tree conflict.

(close_directory): Unset current_tree_conflict when returning to

the victim dir. Don't notify about tree conflicts.

(complete_directory): Do nothing if inside a tree conflict.

* subversion/tests/cmdline/


another_hudson_problem): Don't treat a missing item as a tree







tree_conflicts_on_update_3): Tweak expected output and disk to

reflect the consistent skipping.

(tree_conflicts_on_update_2_3): New test function.

(test_list): Add the new test function, make it XFail().

* subversion/tests/cmdline/







tree_conflicts_on_switch_3): Tweak expected output and disk to

reflect the consistent skipping.

(test_list): XFail 3 tests due to problems with 'svn status':




* subversion/tests/cmdline/svntest/

(deep_trees_conflict_output): Tweak expected output.

(deep_trees_conflict_output_skipped, deep_trees_status_local_tree_del,

deep_trees_status_local_leaf_edit): New.

(deep_trees_run_tests_scheme_for_update): Allow status check to be


(deep_trees_skipping_on_update): New function.

* subversion/tests/cmdline/

(revert_tree_conflicts_in_updated_files): Tweak expected output and

disk to reflect the consistent skipping.

* subversion/tests/cmdline/

(status_with_tree_conflicts): Tweak expected output and disk to

reflect the consistent skipping.

* subversion/tests/cmdline/

(tree_conflicts_resolved): Tweak expected output and disk to

reflect the consistent skipping.

* subversion/tests/cmdline/

(test_list): Remove XFail from info_with_tree_conflicts.

* subversion/tests/cmdline/

(test_list): Remove XFail from up_sw_file_add_onto_add.

* subversion/tests/cmdline/svntest/

(build_tree_from_checkout): Correct a comment.

* TODO-1.6: Update.
Update the 600 line svn_wc__merge_internal. SIX HUNDRED LINES. It used

the old svn_io_open_unique_file2 seven times; these have been replaced by

calls to the new svn_io_open_uniquely_named(). We want the merge (unique)

files to have particular names.

* subversion/libsvn_wc/merge.c:

(svn_wc__merge_internal): switch to uniquely_named

Switch some uses of svn_io_open_unique_file2 over to open_unique_file3.

One case of switching to svn_stream_open_unique.

* subversion/libsvn_wc/adm_files.c:

(svn_wc_create_tmp_file2): ...

* subversion/libsvn_wc/translate.c:

(svn_wc_translated_file2): ...

* subversion/libsvn_wc/diff.c:

(get_empty_file): ...

* subversion/libsvn_client/repos_diff.c:

(create_empty_file): ...

* subversion/libsvn_client/blame.c:

(file_rev_handler): ...

* subversion/libsvn_client/commit.c:

(send_file_contents): ...

* subversion/libsvn_ra_neon/util.c:

(parsed_request): ...

* subversion/libsvn_repos/reporter.c:

(svn_repos_begin_report2): ...

* subversion/libsvn_repos/dump.c:

(store_delta): ...

* subversion/libsvn_repos/hooks.c:

(create_temp_file): ... switch to use svn_io_open_unique_file3() and

simplify surrounding code, as appropriate.

* subversion/libsvn_client/export.c:

(struct file_baton): store a stream rather than a file

(window_handler): switch to svn_io_remove_file() since our path is in

the internal style, and not appropriate for passing to APR.

(apply_textdelta): open a unique stream rather than a file, and make

sure to disown it before passing it along to svn_txdelta_apply().

(close_file): close the stream, rather than the file.

(svn_client_export4): open a unique stream instead of a file.

Update the implementation of svn_io_open_uniquely_named(), document it,

and also document the new svn_io_open_unique_file3().

svn_io_open_unique_file2() is deprecated by svn_io_open_uniquely_named().

* subversion/include/svn_io.h:

(svn_io_open_uniquely_named): new function. docstring is derived from

the old svn_io_open_unique_file2() docco.

(svn_io_open_unique_file3): new function

(svn_io_open_unique_file2): deprecated

* subversion/libsvn_subr/io.c:

(svn_io_open_uniquely_named): update param names. do the right thing

when dirpath, filename, and/or suffix are NULL. allocate stuff in the

correct pool.

(svn_io_open_unique_file3): special handling for NULL dirpath is no

longer needed since uniquely_named does it now.


(svn_stream_open_unique): simplify with svn_io_open_unique_file3.

On branch tc-resolve:

Fix the behaviour of "resolved" that descends into unversioned

tree-conflicts even if the depth doesn't allow that.

* subversion/libsvn_wc/entries.c

(visit_tc_too_baton_t): Add TARGET and DEPTH fields.


Use new TARGET and DEPTH fields in the baton to determine whether to

descend into unversioned tree-conflicted children of a directory.

(svn_wc__walk_entries_and_tc): Supply TARGET and DEPTH to the baton.

* subversion/tests/cmdline/


Make a "resolved" test also try run "resolved" on the victim's

parent first, to make sure it doesn't resolve its children.

Remove comment about not supporting "resolved" per victim.

* subversion/tests/cmdline/

(tree_conflicts_resolved_depth_empty, tree_conflicts_resolved_depth_files,


tree_conflicts_resolved_depth_infinity, make_depth_tree_conflicts):

Four new tests and a helper. The tests are XFAIL because the helper

make_depth_tree_conflicts() exposes an error in update code that

is not related to "resolved". Separate trials suggest that these

tests will pass as soon as the update issue is resolved. See

inline comment in make_depth_tree_conflicts() marked "##".

(test_list): Add the new tests.

Fix the invocations of svn_io_write_unique(). The docstring states that a

directory path should be passed, but all callers were passing a file

pathname. This happened to work because of the internal implementation,

but broke after some refactoring.

Note: for now, the callers just use svn_path_dirname() to get the

directory name of whatever filepath they were about to pass. I assume

optimizations could be made later to have the dirpath handy.

Some internal changes were made to io.c as part of an upcoming change

around the (soon to be) deprecated svn_io_open_unique_file2() API. These

are documented here (insofar as they changed), but not in the API docs at

this time. It is these changes which discovered the bad call pattern to


* subversion/libsvn_subr/io.c:

(svn_io_open_unique_file2): the implementation was renamed to ...

(svn_io_open_uniquely_named): ... this. the PATH parameter was broken up

into a directory path and the filename in that directory. the single

pool parameter was split into result and scratch pools. as a temp

measure, the old parameter names are now local variables,

reconstituted from the new params, in order to minimize change.

(svn_io_open_unique_file3): new function similar to

svn_stream_open_unique, but returns a plain file.

(svn_io_open_unique_file2): new implementation for the original

function, which simply calls svn_io_open_uniquely_named() with the

appropriate set of parameters.

(svn_io_open_unique_file): just param name changes. no functional change.

(svn_io_write_unique): simplify, in terms of svn_io_open_unique_file3.

(svn_io_file_move): add period to suffix in call to the

svn_io_open_unique_file2() function.

(svn_io_write_version_file): pass dirpath to svn_io_write_unique

* subversion/libsvn_subr/subst.c:

(create_special_file_from_stringbuf): ...

* subversion/libsvn_wc/props.c:

(maybe_generate_propconflict): ...

* subversion/libsvn_fs_fs/fs_fs.c:

(write_format, get_and_increment_txn_key_body, write_current): pass

dirpath to svn_io_write_unique

Follow-up to r34145:



* subversion/svn_private_config.hw

(Q_): Add additional parenthesis.

Suggested by: julianfoad

* subversion/libsvn_auth_kwallet/kwallet.cpp

(kwallet_disconnect): Delete this evil, unpredictable function.

Don't use deprecated functions in JavaHL.

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

(SVNClient::getContext): Use svn_auth_get_simple_provider2() instead of

svn_auth_get_simple_provider(). Use

svn_auth_get_ssl_client_cert_pw_file_provider2() instead of


* TODO-1.6: Remove a todone item.

For FSFS rep-sharing: use SQLite transactions to ensure we don't commit bogus

representations to the rep cache.

* subversion/libsvn_fs_fs/fs_fs.c

(commit_body): Wrap with sqlite transaction handling.

* subversion/libsvn_fs_fs/fs_fs.c

(write_config): Fix typo in the fsfs.conf file.

Follow-up to r34141:

* www/hacking.html

(l10n): Document Q_().



* subversion/svn_private_config.hw

(Q_): Add parenthesis around definition for consistency with definitions

of other macros.

Followup to r34088: enable rep-sharing by default on FSFS. For disscussion on

this topic, see:

* subversion/libsvn_fs_fs/fs_fs.c

(write_config): Change the default for enabling rep-sharing to "true".

Add sqlite helper functions for transaction handling.

* subversion/include/private/svn_sqlite.h,


(svn_sqlite__transaction_begin, svn_sqlite__transaction_commit,

svn_sqlite__transaction_rollback): New.

Polish translation update.

* subversion/po/pl.po: Polish translation update.

Use dngettext() for messages which require special handling of plural forms.



(Q_): Define.

* subversion/svn_private_config.hw

(Q_): Define.

* subversion/svn/info-cmd.c


* subversion/svn/log-cmd.c


* subversion/svnadmin/main.c


* subversion/svndumpfilter/main.c


* subversion/svnlook/main.c

(subcommand_lock): Use Q_().

* tools/po/

(make_pot): Update call to xgettext.

On the tc-resolve branch: Merge changes from trunk up to r34139.

    • ?
    • ?
  1. … 15 more files in changeset.
Fix a compile error introduced in r34131.

* subversion/include/private/svn_fs_util.h

(SVN_FS__ALREADY_EXISTS): Remove a duplicated argument.

Make the tree-conflict-enabled WC walker cope with an unversioned target.

This fixes the single test that was failing, 60.

* subversion/libsvn_wc/entries.c,


(svn_wc__walk_entries_and_tc): Allow the target to be unversioned, and

allow adm_access to be null.

    • ?
* subversion/tests/cmdline/

(mergeinfo_and_skipped_paths): Tweak tree conflict expectations so it passes.

Improve some messages.

* subversion/libsvn_client/switch.c

(svn_client__switch_internal): 's/Can not/Cannot/'.

* subversion/libsvn_wc/crop.c

(svn_wc_crop_tree): Don't end error messages with '.'.

* subversion/libsvn_subr/io.c


* subversion/svn/main.c

(main): 's/UTF8/UTF-8/'.

On the 'tc-resolve' branch:

Continue with resolving per victim.

* subversion/libsvn_client/resolved.c

Include a required header file.

(svn_client_resolve): Correct the levels-to-lock calculation.

* subversion/libsvn_wc/adm_ops.c

(resolve_found_entry_callback): Remove an unused variable.

* subversion/tests/cmdline/

(tree_conflicts_resolved): Adjust for resolving per victim.

* contrib/hook-scripts/

(toplevel): test '$stdout', not 'defined $stdout';

the latter is always true here.

Patch by: Michiel Holtkamp <>