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

Changeset 874268 is being indexed.

Revert r34149.

Suggested by: hwright

* subversion/libsvn_subr/deprecated.c: Include svn_path.h, to avoid an

"implicit declaration of function 'svn_path_split'" warning.

Move a deprecated function to the deprecated file (thus removing a warning).

* subversion/libsvn_subr/io.c

(svn_io_open_unique_file2, svn_io_open_unique_file): Move from here...

* subversion/libsvn_subr/deprecated.c

(svn_io_open_unique_file2, svn_io_open_unique_file): here.

* subversion/libsvn_wc/tree_conflicts.h

(svn_wc__read_tree_conflicts_from_entry): Un-Doxygen-ate the doc string.

(svn_wc__write_tree_conflicts_to_entry): Improve the doc string.

Fix some typos.

* subversion/bindings/ctypes-python/test/

(WCTestCase._info_receiver): Renamed from ...

(WCTestCase._info_reciever): ... this.

(WCTestCase.test_info, WCTestCase.test_copy, WCTestCase.test_move,

WCTestCase.test_delete, WCTestCase.test_mkdir, WCTestCase.test_add,

WCTestCase.test_revert, WCTestCase.test_lock, WCTestCase.test_unlock): Use

WCTestCase._info_receiver() instead of WCTestCase._info_reciever().

* subversion/bindings/swig/python/tests/

(SubversionClientTestCase.log_receiver): Fix a typo in doc string.

* subversion/libsvn_ra_neon/ra_neon.h

(UNEXPECTED_ELEMENT): Fix a typo in doc string.

* www/faq.html

(obstructed-add): Fix a typo.

* subversion/svn/tree-conflicts.c

(new_tree_conflict_phrases): Tweak tree conflict phrases so that

they do not have any parts in parentheses.

Hopefully this is easier to parse. (No, I did not consult a human

interface design expert prior to this change... If you know any,

please give me their number, I think we could use some external

help with the tree conflicts UI design.)

* subversion/libsvn_subr/auth.c

(svn_auth_get_platform_specific_provider): Following up on r34085, load

windows ssl server trust provider when asked for the ssl server trust


Convert remaining uses of svn_io_open_unique_file2 to other function

calls, as appropriate.

* subversion/libsvn_subr/subst.c:

(svn_subst_copy_and_translate3, svn_subst_create_translated): switch to


* subversion/libsvn_subr/io.c:

(svn_io_copy_file, svn_io_file_move): switch to svn_io_open_unique_file3.

(reown_file): switch param from PATH_APR to just PATH. all the calls

were to SVN functions, so we should not be using an APR path. switch

to svn_io_open_unique_file3.

(io_set_file_perms): pass svn-internal path to reown_file.

* subversion/mod_dav_svn/activity.c:

(dav_svn__store_activity): lose a bunch of code in favor of


* subversion/tests/libsvn_repos/repos-test.c:

(authz_get_handle): revamp to use svn_io_write_unique and other

svn-style IO functions.

* subversion/svn/util.c:

(svn_cl__edit_string_externally): change parameter to FILENAME rather

than PREFIX. switch to svn_io_open_uniquely_named.

* subversion/libsvn_wc/props.c:

(open_reject_tmp_file, svn_wc__merge_props): switch to


* subversion/libsvn_client/externals.c:

(relegate_dir_external): switch to svn_io_uniquely_named.

* subversion/libsvn_fs_fs/fs_fs.c:

(svn_fs_fs__set_revision_proplist): switch to svn_stream_open_unique

(svn_fs_fs__set_uuid): revamp to use svn_io_write_unique

Fix some behaviour around "resolved" and tree-conflicts.

Take stsp's patch[*] and fix it: do not try to read entries from the parent

directory of a working copy root that was supplied as a target.

[*] See this post:

Date: Fri, 14 Nov 2008 00:25:02 +0000

From: Stefan Sperling <>


Message-ID: <>

Subject: Re: Tree conflict bugs I've just been finding

Also fix missing resolving of deleted and committed files that became

tree-conflict victims during a merge.

* subversion/libsvn_client/resolved.c (svn_client_resolve),

* subversion/libsvn_wc/adm_ops.c (resolve_found_entry_callback):

Ensure we do not end up trying to find tree conflict info in the

parent directory of the working copy root.

* subversion/libsvn_wc/entries.c

(visit_tc_too_found_entry): Also visit tree-conflicts of deleted items.

* subversion/tests/cmdline/

(resolved_on_wc_root, resolved_on_deleted_item):

New tests file with two new tests for the issues fixed by this commit.

    • ?
* TODO-1.6: Remove a done todo.
One small step towards mergeinfo sanity; no more explicit mergeinfo

on a WC-to-WC move/copy destination unless the source had some.

Discussed here:

* subversion/libsvn_client/copy.c

(propagate_mergeinfo_within_wc): Remove.

(do_wc_to_wc_copies, do_wc_to_wc_moves): Don't set explicit mergeinfo on

a cp/mv destination beyond what the source had.

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

Update test expectations to no longer expect WC-to-WC copy/move

destinations to always have explicit (usually empty) mergeinfo. In a

few cases where this mergeinfo was essential to the purpose of the test,

the WC-to-WC cp/mv was replaced with a REPOS-to-REPOS cp/mv or empty

mergeinfo was manually set on the destination.

Sigh. Switching to del_on_pool_cleanup. As Garrett notes, another thread

might fork a process at *just* the wrong time, and delete the file.

Found by: rooneg

* subversion/libsvn_subr/io.c:

(get_default_file_perms): use del_on_pool_cleanup after all.

ra_serf: Don't assume that the specified proxy is always an IPv4 address.

* subversion/libsvn_ra_serf/serf.c

(load_config): Switch to APR_UNSPEC for processing proxy addresses.

Yay. Fixed throughout svn.

Leave this one del_on_close with a comment.

* subversion/libsvn_subr/io.c:

(get_default_file_perms): switch to svn_io_open_unique_file3() and leave

a comment about why del_on_close is acceptable.

ra_serf: Do not overwrite/munge the cert storage when OpenSSL/Serf asks to

validate the entire certificate chain.

* subversion/libsvn_ra_serf/util.c

(ssl_server_cert): If present, use the certificate name as the key to the

storage rather than the realm string.

Remove uses of svn_io_file_del_on_close, since it is problematic with

(unpatched) versions of APR.

* subversion/svnsync/main.c:

(open_tmp_file): simplify using svn_io_open_unique_file3 and switch to


* subversion/libsvn_repos/reporter.c:

(svn_repos_begin_report2): switch to svn_io_file_del_on_pool_cleanup

* subversion/libsvn_repos/dump.c:

(store_delta): switch to svn_io_file_del_on_pool_cleanup

(dump_node): when wrapping a stream around the delta file, make sure the

stream owns the file and will close it.

* subversion/libsvn_repos/repos.h:

(svn_repos__hooks_start_commit, svn_repos__hooks_post_revprop_change,

svn_repos__hooks_post_lock, svn_repos__hooks_post_unlock): add const

to parameters, as appropriate

* subversion/libsvn_repos/hooks.c:

(create_temp_file): switch to svn_io_file_del_on_pool_cleanup

(svn_repos__hooks_start_commit, svn_repos__hooks_post_revprop_change,

svn_repos__hooks_post_lock, svn_repos__hooks_post_unlock): add const

to parameters, as appropriate

* TODO-1.6: Add some tree conflict todo items.
Make the tree-conflict WC APIs private to Subversion (but shared across

libraries). Previously, two were public and the third was private to

libsvn_wc. This is issue #3321.

* subversion/include/private/svn_wc_private.h

(svn_wc__get_tree_conflict, svn_wc__add_tree_conflict): New, moved from

svn_wc_get_tree_conflict and svn_wc_add_tree_conflict respectively in


(svn_wc__del_tree_conflict): Moved from tree_conflicts.h.

* subversion/include/svn_wc.h

(svn_wc_get_tree_conflict, svn_wc_add_tree_conflict): Rename and move

to svn_wc_private.h.

* subversion/libsvn_client/info.c

(info_found_entry_callback, info_error_handler): Adjust calls.

* subversion/libsvn_client/merge.c

(tree_conflict): Adjust calls.

* subversion/libsvn_wc/adm_ops.c

(revert_internal, resolve_found_entry_callback): Adjust calls.

* subversion/libsvn_wc/entries.c

(visit_tc_too_error_handler, svn_wc__walk_entries_and_tc): Adjust calls.

* subversion/libsvn_wc/questions.c

(svn_wc_conflicted_p2): Adjust calls.

* subversion/libsvn_wc/status.c

(get_dir_status): Adjust calls.

* subversion/libsvn_wc/tree_conflicts.c

(svn_wc_add_tree_conflict, svn_wc_get_tree_conflict): Rename to

svn_wc__add_tree_conflict and svn_wc__get_tree_conflict respectively.

* subversion/libsvn_wc/tree_conflicts.h

(svn_wc__del_tree_conflict): Rename and move to svn_wc_private.h.

* TODO-1.6: Add an item re WC-to-WC copy/moves.

Fix a test failure.

* subversion/tests/cmdline/

(failed_anchor_is_target): Adjust now that "svn resolved" acts on a tree

conflict victim not the parent.

A few followup improvements to r34160.

Suggested by: glasser


* subversion/libsvn_fs_fs/fs_fs.c

(commit_body_rep_cache): Renamed from commit_body_wrapper(), and don't

allow sqlite rollback errors to override any commit errors. Also, always

use the sqlite transaction mechanism.

(svn_fs_fs__commit): Conditionalize the retry function based upon rep caching.

* TODO-1.6: Revert my removal of an item in r34170 as I didn't

check that Greg has finished it, although I checked that the original

problem is fixed.

Fix the character encoding of the default diff header that is currently used

by the "diff-full (df)" option of interactive resolving (but not by "svn

diff"). This previously errored out in locales such as zh_CN.GBK.

Patch by: Rock Sun <>

* subversion/libsvn_diff/diff_file.c

(output_unified_default_hdr): UTF-8-encode the date string from APR before

using it as UTF-8.

* TODO-1.6: Remove a done item.
* TODO-1.6: Remove a done item.
* subversion/libsvn_wc/update_editor.c

(check_tree_conflict): Tweak a comment for clarity.

Suggested by: stsp

(but written in my own words)

Remove the tc-resolve branch, as it was merged to trunk in r34166.
Merge the "tc-resolve" branch to trunk. This makes "resolved" handle tree

conflicts per victim rather than per parent.

Below are all the pertinent parts of log messages on the branch, partially

edited for grouping and to remove some irrelevant details of intermediate



* subversion/libsvn_wc/adm_ops.c

(resolve_conflict_on_entry): Do not clear tree conflicts that are recorded

in this entry. Do not send a notification, but instead report (through a

new boolean output parameter) whether something was resolved.

(resolve_found_entry_callback): Resolve any tree conflict for this victim.

Send a notification if any conflict was resolved.

(svn_wc_resolved_conflict4): Use an entries-walker function that visits

unversioned tree conflict victims as well as ordinary entries.


Allow sched-deleted nodes to be resolved (fixes 15).

* subversion/libsvn_wc/adm_ops.c


Allow sched-deleted nodes to be resolved.

* subversion/libsvn_wc/entries.c


Only try to retrieve the ADM_ACCESS in presence of tree-conflicts.


Get the ADM_ACCESS on the parent instead of on the node itself, thus

avoid an error upon an unversioned tree-conflict victim.

### TODO: check for greater subdir depths.

Fix a crash in del_tree_conflict().

* subversion/libsvn_wc/tree_conflicts.c


Only write and run the log if LOG_ACCUM is not NULL.


Fix per-victim "resolved" on directory tree-conflict victims.

* subversion/libsvn_client/resolved.c


Get the ADM_ACCESS on the target's parent directory to be able to resolve

tree-conflicted directories. Extend the ADM_LOCK_LEVEL to still be able

to lock the target node for text/prop conflicts.

* subversion/include/svn_client.h

(svn_client_resolve): Comment.

* subversion/libsvn_wc/adm_ops.c


Completely split tree-conflict resolution from text and prop conflicts,

because tree-conflicts need a different ADM_ACCESS when handling

directories. Change use of RESOLVED to already reflect the sanity-check,

and sanity-check separately for tree-conflicts. Clarify some conditions.

Also remove the debugging conditions that exited prematurely.

* subversion/libsvn_wc/tree_conflicts.c


Extend an assertion by a NULL check. Add another assertion to make sure

the VICTIM_PATH is a child node of the ADM_ACCESS' path.

* subversion/libsvn_wc/tree_conflicts.h






Comments, add "@since New in 1.6.".


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

* subversion/libsvn_wc/entries.c,


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

allow adm_access to be null.


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/

(tree_conflicts_resolved): Adjust for resolving 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.

* subversion/tests/cmdline/

(merge_history_repos): Resolve the victim, not the parent.

* subversion/tests/cmdline/

(ensure_tree_conflict): Resolve the victim, not the parent.

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/

(another_hudson_problem): Resolve the victim, not the parent.

  1. … 13 more files in changeset.

* subversion/libsvn_wc/update_editor.c

(check_tree_conflict): Add an assertion with comment.