Checkout Tools
  • last updated 39 mins ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Add svn_string_t property values to svn_wc_conflict_description2_t.

For historical reasons these values are available in temporary files.

However, svn_string_t is the canonical representations for property values

and can be easier to work with when implementing conflict resolvers.

* subversion/include/svn_wc.h

(svn_wc_conflict_description2_t): Add prop_value_base, prop_value_working,

prop_value_incoming_old, prop_value_incoming_new.

* subversion/libsvn_wc/conflicts.c

(generate_propconflict, read_prop_conflict_descs): Set property values.

* subversion/libsvn_wc/util.c

(svn_wc_conflict_description2_dup): Copy property values if set.

  1. … 2 more files in changeset.
* subversion/libsvn_wc/util.c

(svn_wc_conflict_description2_dup): Copy the new prop_reject_abspath field.

Undo the introduction of svn_wc_conflict_description3_t.

Instead of revving svn_wc_conflict_description2_t ("desc2"), we can extend the

struct with new fields or a pointer to private data to be accessed via functions,

and keep the existing fields as they are now.

This approach avoids an unwieldy cascade of changes to callbacks and other API

elements which already use desc2. This commit does not add new fields or private

data for desc2 -- that is future work.

Discussed with philip, julianfoad, rhuijben, and breser.

* subversion/include/private/svn_wc_private.h

(svn_wc__get_tree_conflict, svn_wc__add_tree_conflict): Switch back to desc2.

(svn_wc__cd3_to_cd2, svn_wc__cd3_array_to_cd2_array ): Remove declaration.

* subversion/include/svn_wc.h

(svn_wc_conflict_description_private_t): New typedef.

(svn_wc_conflict_description3_t): Remove.

(svn_wc_conflict_description2_t): Enhance documentation based on improvements

made for desc3. Extend this structure with a pointer to private data.

(svn_wc_conflict_description_create_text3,

svn_wc_conflict_description_create_prop3,

svn_wc_conflict_description_create_tree3,

svn_wc__conflict_description3_dup,

svn_wc_conflict_resolver_func3_t): Un-declare.

(svn_wc_conflict_description_create_text2,

svn_wc_conflict_description_create_prop2,

svn_wc_conflict_description_create_tree2,

svn_wc_conflict_resolver_func2_t): Un-deprecate.

(svn_wc_info_t): Remove 'conflicts2' field.

* subversion/libsvn_client/merge.c

(merge_dir_baton_t): Document that 'new_tree_conflicts' array now has

desc2 elements again.

(record_tree_conflict, merge_file_opened, merge_dir_opened): Use desc2.

* subversion/libsvn_wc/conflicts.c

(local_change_map): Rename back to reason_map for consistency.

(incoming_change_map): Rename back to action_map for consistency.

(svn_wc__conflict_skel_add_tree_conflict,

svn_wc__conflict_read_prop_conflict,

svn_wc__conflict_read_tree_conflict): Rename local_change and

incoming_change parameters back to reason and action for consistency.

(generate_propconflict, resolve_text_conflict, read_text_conflict_desc,

svn_wc__conflict_invoke_resolver, read_prop_conflict_descs,

svn_wc__read_conflicts, conflict_status_walker): Use desc2.

(eval_text_conflict_func_result): Rename 'merged_abspath' parameter back to

'merged_file' for consistency. Use desc2.

* subversion/libsvn_wc/deprecated.c

(svn_wc__status2_from_3): Use desc2.

(svn_wc_conflict_description_create_text2,

svn_wc_conflict_description_create_prop2,

svn_wc_conflict_description_create_tree2): Moved back to libsvn_wc/util.c.

* subversion/libsvn_wc/entries.c

(read_one_entry, write_entry): Use desc2.

* subversion/libsvn_wc/info.c

(svn_wc_info_dup, build_info_for_node, svn_wc__get_info): Use desc2 and drop

support for removed 'conflicts2' member of svn_wc_info_t.

* subversion/libsvn_wc/tree_conflicts.c

(svn_wc__deserialize_conflict, svn_wc__serialize_conflict,

svn_wc__add_tree_conflict, svn_wc__get_tree_conflict): Use desc2.

* subversion/libsvn_wc/tree_conflicts.h

(svn_wc__serialize_conflict,

svn_wc__deserialize_conflict): Tweak declarations for desc2.

* subversion/libsvn_wc/upgrade.c

(read_tree_conflicts, migrate_single_tree_conflict_data,

svn_wc__upgrade_conflict_skel_from_raw): Use desc2.

* subversion/libsvn_wc/util.c

(svn_wc_conflict_description_create_text3,

svn_wc_conflict_description_create_prop3,

svn_wc_conflict_description_create_tree3,

svn_wc__conflict_description3_dup,

svn_wc__cd3_array_to_cd2_array, svn_wc__cd3_to_cd2): Remove.

(svn_wc_conflict_description_create_text2,

svn_wc_conflict_description_create_prop2,

svn_wc_conflict_description_create_tree2): Move back here

from libsvn_wc/deprecated.c

* subversion/libsvn_wc/wc.h

(svn_wc__read_conflicts): Change mention in docstring back to desc2.

* subversion/svn/cl-conflicts.c

(svn_cl__get_human_readable_prop_conflict_description,

svn_cl__get_human_readable_tree_conflict_description,

append_tree_conflict_info_xml, svn_cl__append_conflict_info_xml): Use desc2.

* subversion/svn/cl-conflicts.h

(svn_cl__get_human_readable_prop_conflict_description,

svn_cl__get_human_readable_tree_conflict_description,

svn_cl__append_conflict_info_xml): Change declarations for desc2.

* subversion/svn/cl.h

(svn_cl__conflict_func_interactive): Change declaration back to desc2.

* subversion/svn/conflict-callbacks.c

(show_diff, show_conflicts, merge_prop_conflict, show_prop_conflict,

edit_prop_conflict, handle_text_conflict, handle_prop_conflict,

handle_tree_conflict, handle_obstructed_add,

conflict_func_interactive): Use desc2. In handle_prop_conflict, restore

workaround for wrongly filled in fields in desc2 for now.

* subversion/svn/info-cmd.c

(print_info_xml, print_info): Use desc2.

* subversion/svn/status.c

(print_status): Use desc2.

* subversion/tests/libsvn_wc/conflict-data-test.c

(compare_version, compare_file_content, compare_prop_conflict,

tree_conflict_create, test_deserialize_tree_conflict,

test_read_write_tree_conflicts, test_serialize_tree_conflict): Use desc2.

* tools/dev/svnraisetreeconflict/svnraisetreeconflict.c

(raise_tree_conflict): Use desc2.

  1. … 19 more files in changeset.
Eliminate a warning about svn_wc__conflict_description2_dup().

This function is a public function with a private name. Shortly,

svn_wc_conflict_description3_t will be removed. So I'm leaving

the svn_wc__conflict_description2_dup() as deprecated but replacing

it with a now appropriately named svn_wc_conflict_description2_dup().

* subversion/include/svn_wc.h

(svn_wc_conflict_description2_dup): New function.

(svn_wc__conflict_description2_dup): Adjust the comment appropriately.

(svn_wc_conflict_description2_t): Adjust the name of the dup function to

modify if you change this.

* subversion/libsvn_wc/util.c

(svn_wc_conflict_description2_dup): Moved from deprecated.c and renamed

from svn_wc__conflict_description2_dup().

* subversion/libsvn_wc/deprecated.c

(svn_wc__conflict_description2_dup): New implementation that just wraps

svn_wc_conflict_description2_dup().

* subversion/libsvn_wc/info.c

(svn_wc_info_dup): Adjust caller.

  1. … 3 more files in changeset.
Rename the 'node_kind' field in svn_wc_conflict_description3_t

to 'local_node_kind'.

No functional change.

* subversion/include/svn_wc.h

(svn_wc_conflict_description3_t): Rename 'node_kind' to 'local_node_kind'.

Resolve a question in a comment by explaining where kinds of other nodes

involved in the conflict can be found.

(svn_wc_conflict_description_create_tree3): Rename 'node_kind' parameter

to 'local_node_kind'.

* subversion/libsvn_wc/info.c

(svn_wc__get_info): Track rename.

* subversion/libsvn_wc/tree_conflicts.c

(svn_wc__serialize_conflict): Track rename.

* subversion/libsvn_wc/util.c

(svn_wc_conflict_description_create_text3,

svn_wc_conflict_description_create_prop3,

svn_wc__cd3_to_cd2): Track rename.

(svn_wc_conflict_description_create_tree3): Rename 'node_kind' parameter

to 'local_node_kind'.

* subversion/tests/libsvn_wc/conflict-data-test.c

(compare_conflict, test_deserialize_tree_conflict): Track rename.

  1. … 4 more files in changeset.
Rename 'action' and 'reason' fields in svn_wc_conflict_description3_t

to 'incoming_change' and 'local_change', respectively. The new names

make it more apparent whether a given change was made in the source

or the target of an operation, especially with tree conflicts.

No functional change.

* subversion/include/svn_wc.h

(svn_wc_conflict_description3_t): Rename 'action' to 'incoming_change'

and 'reason' to 'local_change'. Enhance related documentation.

* subversion/libsvn_client/merge.c

(record_tree_conflict, merge_file_opened, merge_dir_opened): Track renames.

* subversion/libsvn_wc/conflicts.c

(generate_propconflict, read_tree_conflict_desc,

read_prop_conflict_descs): Track renames.

* subversion/libsvn_wc/entries.c

(write_entry): Track rename.

* subversion/libsvn_wc/tree_conflicts.c

(svn_wc__deserialize_conflict, svn_wc__serialize_conflict,

svn_wc__add_tree_conflict): Track renames.

* subversion/libsvn_wc/upgrade.c

(svn_wc__upgrade_conflict_skel_from_raw): Track renames.

* subversion/libsvn_wc/util.c

(svn_wc_conflict_description_create_text3, svn_wc__cd3_to_cd2): Track renames.

* subversion/tests/libsvn_wc/conflict-data-test.c

(compare_conflict, tree_conflict_create, test_deserialize_tree_conflict,

test_serialize_tree_conflict_data): Track renames.

* tools/dev/svnraisetreeconflict/svnraisetreeconflict.c

(raise_tree_conflict): Track renames.

  1. … 8 more files in changeset.
Revert r1617909 since a better solution to the problem has been found.

  1. … 4 more files in changeset.
[

Note from the future:

Reverted in r1617930; see r1617932 for a better fix

]

Record the update/switch target revision for missing tree conflicts

victims in the tree conflict description so the revision can always

be retrieved during conflict resolution.

For instance, 'svn info' might show:

Tree conflict: local file edit, incoming file delete or move upon update

Source left: (file) ^/trunk/alpha@2

Source right: (none)

With this change, 'svn info' shows the target revision ("source right')

of the update/switch which recorded the conflict, even if the node

was missing:

Tree conflict: local file edit, incoming file delete or move upon update

Source left: (file) ^/trunk/alpha@2

Source right: (none) @4

There is a slight API change involved which shouldn't affect compatibility.

The semantics of svn_wc_conflict_version_create2() change such that the

conflict victim's repos relpath is allowed to be NULL if the node kind

is 'none'. Previously the API required a canonical path in all cases

and would ASSERT otherwise, a contract which made it impossible to create

conflict versions for nodes which don't exist. The provided revision

number must still be valid in all cases, of course.

* subversion/include/svn_wc.h

(svn_wc_conflict_version_create2): Update docstring.

A NULL 'repos_relpath' is now valid if 'kind' is svn_node_none.

* subversion/libsvn_wc/conflicts.c

(conflict__prepend_location, conflict__read_location): Handle NULL

repos-relpath fields in conflict description.

* subversion/libsvn_wc/update_editor.c

(complete_conflict): Create conflict versions for paths which don't exist

so revision number information will be recorded.

* subversion/libsvn_wc/util.c

(svn_wc_conflict_version_create2): Accept a NULL repos_relpath if the

node kind is svn_node_none.

* subversion/svn/util.c

(svn_cl__node_description): Print an empty path if the victim's kind

is svn_node_none, instead of printing the ^/... placeholder path.

  1. … 4 more files in changeset.
Resolve an open question in svn_wc.h by renaming a variable and verifying

all setters.

* subversion/include/svn_wc.h

(svn_wc_conflict_description3_t): Tweak comment to remove the notion

that line endings are always LF (that would only apply to eol-style

native). Answer abspath vs path by renaming the variable.

* subversion/libsvn_wc/conflicts.c

(generate_propconflict): Update user.

(resolve_text_conflict): Update user.

* subversion/libsvn_wc/util.c

(svn_wc__conflict_description3_dup,

svn_wc__cd3_to_cd2): Update user.

* subversion/tests/libsvn_wc/conflict-data-test.c

(compare_conflict): Update user.

  1. … 3 more files in changeset.
Fix some property conflict inconsistencies in svn_wc_conflict_description3_t.

The property reject file path used to be stored in the 'their_abspath' field.

Use a new 'prop_reject_abspath' field instead. And instead of storing

"their abspath" in the 'merged_file' field, use the 'their_abspath' field.

For now, expose these changes only to callers of svn_wc__read_conflicts().

Show converted svn_wc_conflict_description2_t structures to everyone else.

* subversion/include/svn_wc.h

(svn_wc_conflict_description3_t): Add prop_reject_abspath.

* subversion/libsvn_wc/conflicts.c

(resolve_text_conflict,

svn_wc__conflict_invoke_resolver): Use svn_wc_conflict_description3_t,

but hide it from the conflict callback for now.

(read_text_conflict_desc, read_tree_conflict_desc,

read_prop_conflict_desc): Return svn_wc_conflict_description3_t.

For prop conflicts, use 'prop_reject_abspath' and 'their_abspath' as above.

(svn_wc__read_conflicts): Return an array of svn_wc_conflict_description3_t.

(conflict_status_walker): Adjust this caller of svn_wc__read_conflicts().

Hide svn_wc_conflict_description3_t from the conflict callback for now.

* subversion/libsvn_wc/entries.c

(read_one_entry): Adjust this caller of svn_wc__read_conflicts().

Hide svn_wc_conflict_description3_t from callers.

* subversion/libsvn_wc/info.c

(build_info_for_node, svn_wc__get_info): Adjust these callers of

svn_wc__read_conflicts(). Hide svn_wc_conflict_description3_t from callers.

* subversion/libsvn_wc/tree_conflicts.c

(svn_wc__get_tree_conflict): Adjust this caller of svn_wc__read_conflicts().

Hide svn_wc_conflict_description3_t from callers.

* subversion/libsvn_wc/util.c

(svn_wc__cd3_to_cd2): Convert cd3 property conflicts to the cd2 type:

Map cd3->prop_reject_abspath to cd2->their_abspath,

and map cd3->their_abspath to cd2->merged_file.

* subversion/libsvn_wc/wc.h

(svn_wc__read_conflicts): Adjust docstring, this function now returns an

array with elements of type svn_wc_conflict_description3_t *.

  1. … 6 more files in changeset.
Add a new function to convert an array of 'svn_wc_conflict_description3_t *'

elements to an array of 'svn_wc_conflict_description2_t *' elements.

This will be needed to gradually move existing code over to the new

conflict description type.

* subversion/include/private/svn_wc_private.h

(svn_wc__cd3_array_to_cd2_array): Declare.

* subversion/libsvn_wc/util.c

(svn_wc__cd3_array_to_cd2_array): New.

  1. … 1 more file in changeset.
Add a new function to convert from svn_wc_conflict_description3_t back

to svn_wc_conflict_description2_t. This will be needed to gradually

move existing code over to the new conflict description type.

* subversion/include/private/svn_wc_private.h

(svn_wc__cd3_to_cd2): Declare.

* subversion/libsvn_wc/util.c

(svn_wc__cd3_to_cd2): New. Currently performs a straight copy of all fields,

since the conflict description types are still identical as of yet.

  1. … 1 more file in changeset.
Create a new revision of the conflict description structure,

svn_wc_conflict_description3_t. Deprecate svn_wc_conflict_description2_t.

There is some erroneous or improperly defined usage of fields in version 2

of this structure. To clean this up without harming existing API users we

must create a new revision of the structure.

This commit performs mechanical changes only, adding new structs, functions,

and typedef definitions. The new and old structures are still equivalent,

and no caller has been updated to use the new structure. Until further

changes are made, some new deprecation warnings will pop up during builds.

* subversion/include/svn_wc.h

(svn_wc_conflict_description3_t,

svn_wc_conflict_description_create_text3,

svn_wc_conflict_description_create_prop3,

svn_wc_conflict_description_create_tree3,

svn_wc__conflict_description3_dup,

svn_wc_conflict_resolver_func3_t): New.

(svn_wc_conflict_description2_t,

svn_wc_conflict_description_create_text2,

svn_wc_conflict_description_create_prop2,

svn_wc_conflict_description_create_tree2,

svn_wc__conflict_description2_dup,

svn_wc_conflict_resolver_func2_t): New.

* subversion/libsvn_wc/deprecated.c

(svn_wc_conflict_description_create_text2,

svn_wc_conflict_description_create_prop2,

svn_wc_conflict_description_create_tree2,

svn_wc__conflict_description2_dup): Moved here from libsvn_wc/util.c.

* subversion/libsvn_wc/util.c

(svn_wc_conflict_description_create_text3,

svn_wc_conflict_description_create_prop3,

svn_wc_conflict_description_create_tree3,

svn_wc__conflict_description3_dup): New, based on version 2 implementations.

  1. … 2 more files in changeset.
* subversion/include/private/svn_wc_private.h

(svn_wc__status2_from_3): Mark as deprecated.

* subversion/libsvn_wc/util.c

(svn_wc__status2_from_3): Move from here...

* subversion/libsvn_wc/deprecated.c

(svn_wc__status2_from_3): ...to here.

  1. … 2 more files in changeset.
Merge svn_kind_t into svn_node_kind_t, leaving only one public enumeration

that describes node kinds.

* subversion/include/svn_types.h (svn_kind_t): Removed.

All uses of svn_kind_t were replaced with svn_node_kind_t.

(svn_node_kind_t): New enumeration constant, svn_node_symlink.

Replaces all previous uses of svn_kind_symlink.

(svn__node_kind_from_kind): Removed. All call sites updated.

(svn__kind_from_node_kind): Removed. All call sites updated.

* subversion/libsvn_wc/tree_conflicts.c (node_kind_map):

Added comment about incompatible representation of svn_node_unknown.

* subversion/libsvn_wc/node.c (convert_db_kind_to_node_kind):

May be redundant, and comment is out of date. Added a note about that.

There are also a zillion changes in dependent files, and they all result

from the following renames:

svn_kind_t to svn_node_kind_t

svn_kind_none to svn_node_none

svn_kind_file to svn_node_file

svn_kind_dir to svn_node_dir

svn_kind_unknown to svn_node_unknown

svn_kind_symlink to svn_node_symlink

  1. … 65 more files in changeset.
Deprecate svn_wc_read_kind() to add an additional argument, which makes this

function directly usable to answer the questions 'is there an in-wc node here?'

and 'can I add a new node here?' for libsvn_client.

Currently almost every caller of this function in libsvn_client needs to call

another node function before it can do its actual work, because it misses

essential information.

* subversion/include/svn_wc.h

(svn_wc_read_kind2): New function.

(svn_wc_read_kind): Deprecate function.

* subversion/libsvn_wc/adm_crawler.c

(svn_wc__internal_transmit_prop_deltas): Update caller. Provide proper error

when used on invalid nodes.

* subversion/libsvn_wc/conflicts.c

(generate_propconflict): Update caller. Provide proper error

when used on invalid nodes.

* subversion/libsvn_wc/deprecated.c

(svn_wc_add3): Update caller.

(svn_wc_read_kind): New function.

* subversion/libsvn_wc/diff_local.c

(svn_wc_diff6): Update caller.

* subversion/libsvn_wc/lock.c

(svn_wc_adm_retrieve,

svn_wc_adm_probe_retrieve): Update caller.

* subversion/libsvn_wc/node.c

(svn_wc_read_kind): Rename to ...

(svn_wc_read_kind2): ... this. Add argument and change return type.

* subversion/libsvn_wc/revert.c

(revert_partial): Update caller.

* subversion/libsvn_wc/util.c

(svn_wc__fetch_kind_func): Update caller.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_read_kind): Handle show_deleted.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_read_kind): Add show_deleted argument and update

documentation.

  1. … 10 more files in changeset.
Add a 'properties' output parameter to most of the WC DB functions that read

node info from a layer:

svn_wc__db_base_get_info_internal()

svn_wc__db_base_get_info()

svn_wc__db_depth_get_info()

svn_wc__db_read_pristine_info()

svn_wc__db_read_info() -- NOT YET

The aim is to regularize the APIs by getting the props along with other info

about a node. This should allow the documentation and the implementation to

become more consistent than the separate APIs we currently have for reading

the props alone -- for example, there is currently no API to read the props

for a node at a given depth.

The new 'props' output does not replace the 'had_props' boolean output which

remains available for callers that just need to test for the presence of

properties, since that is quicker.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_base_get_info,

svn_wc__db_read_pristine_info): Add a 'props' output parameter.

* subversion/libsvn_wc/wc_db_private.h

(svn_wc__db_base_get_info_internal,

svn_wc__db_depth_get_info): Add a 'props' output parameter.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_base_get_info_internal,

svn_wc__db_base_get_info,

svn_wc__db_depth_get_info): Add a 'props' output parameter.

(...everywhere...): Track the change: pass NULL.

* subversion/libsvn_wc/adm_crawler.c,

subversion/libsvn_wc/adm_files.c,

subversion/libsvn_wc/ambient_depth_filter_editor.c,

subversion/libsvn_wc/conflicts.c,

subversion/libsvn_wc/diff_editor.c,

subversion/libsvn_wc/diff_local.c,

subversion/libsvn_wc/entries.c,

subversion/libsvn_wc/externals.c,

subversion/libsvn_wc/info.c,

subversion/libsvn_wc/node.c,

subversion/libsvn_wc/status.c,

subversion/libsvn_wc/update_editor.c,

subversion/libsvn_wc/util.c,

subversion/libsvn_wc/wc_db_update_move.c,

subversion/libsvn_wc/workqueue.c

(...everywhere...): Track the change: pass NULL.

* subversion/tests/libsvn_wc/db-test.c

(test_getting_info): Test the new parameter (just a tiny bit).

(...everywhere...): Track the change: pass NULL.

  1. … 18 more files in changeset.
Fix incorrect status returned by the 1.6 API.

Found by: Sean Farrell <sfarrell{_AT_}wv.mentorg.com>

* subversion/libsvn_wc/util.c

(svn_wc__status2_from_3): Set correct text status.

Remove the tree conflict data read functions from the svn_wc__db_ api.

* subversion/include/private/svn_wc_private.h

(svn_wc__get_all_tree_conflicts): Remove function.

* subversion/libsvn_wc/tree_conflicts.c

(svn_wc__add_tree_conflict): Check existence of tree conflict instead

of reading.

(svn_wc__get_tree_conflict): Read all conflicts and filter.

* subversion/libsvn_wc/update_editor.c

(already_in_a_tree_conflict): Check tree conflict boolean instead of data.

* subversion/libsvn_wc/util.c

(svn_wc__status2_from_3): Use svn_wc__get_tree_conflict() for obtaining tree

conflict data.

* subversion/libsvn_wc/wc_db.c

(read_all_tree_conflicts,

svn_wc__db_op_read_all_tree_conflicts): Remove functions.

(read_tree_conflict): Move documentation from wc_db.h here.

(svn_wc__db_op_read_tree_conflict): Remove function.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_op_read_all_tree_conflicts,

svn_wc__db_op_read_tree_conflict): Remove functions.

* subversion/tests/libsvn_wc/conflict-data-test.c

(test_read_write_tree_conflicts): Read via common api. Load list of conflict

victims instead of tree conflict victims.

  1. … 6 more files in changeset.
Extend svn_wc_conflict_version_t with a repos_uuid.

I would have liked to extend the tree conflict skel, but we explicitly disable

the extensibility of skels in the current tree conflict skel code. Force it to

NULL for now.

* subversion/include/svn_wc.h

(svn_wc_conflict_version_t): Store uuid and remove todo.

(svn_wc_conflict_version_create2): New function.

(svn_wc_conflict_version_create): Deprecate function.

* subversion/libsvn_wc/deprecated.c

(svn_wc_conflict_version_create): New function.

* subversion/libsvn_wc/update_editor.c

(create_tree_conflict): Provide uuid.

* subversion/libsvn_wc/util.c

(svn_wc_conflict_version_create): Rename to...

(svn_wc_conflict_version_create2): ... this and set uuid.

  1. … 3 more files in changeset.
Make svn_wc__db_read_kind() handle processing 'hidden', just like

svn_wc_read_kind(). This allows making the lock processing to disallow

locking hidden directories, which in turn fixes the

update_with_parents_and_exclude() test.

* subversion/libsvn_wc/adm_crawler.c

(svn_wc__internal_transmit_prop_deltas): Update caller.

* subversion/libsvn_wc/adm_ops.c

(svn_wc__process_committed_internal): Update caller.

* subversion/libsvn_wc/deprecated.c

(svn_wc_add3): Update caller.

* subversion/libsvn_wc/diff_local.c

(svn_wc_diff6): Update caller.

* subversion/libsvn_wc/lock.c

(svn_wc_adm_retrieve,

svn_wc_adm_probe_retrieve): Update caller.

(svn_wc__acquire_write_lock): Update caller. This fixes the update test.

* subversion/libsvn_wc/util.c

(svn_wc__fetch_kind_func): Update caller.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_read_kind): Add argument and retrieve and process status if hidden

nodes shouldn't show up as files or directories.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_read_kind): Update prototype and argument documentation.

  1. … 7 more files in changeset.
Purge trailing whitespace, in the spirit of r1138109.

  1. … 97 more files in changeset.
Ev2 shims: When fetching the base file in the working copy, just use the

pristine, rather than creating a separate copy of it.

* subversion/libsvn_wc/util.c

(svn_wc__fetch_base_func): Use the pristine filename, if we have one.

Ev2 shims: Fetch the correct node kind when performing a copy.

Current number of Ev2 test failures: 56

* subversion/include/svn_delta.h

(svn_delta_fetch_kind_func_t): Add a base revision param.

* subversion/libsvn_wc/util.c

(svn_wc__fetch_kind_func): Same.

* subversion/libsvn_wc/wc.h

(svn_wc__fetch_kind_func): Same.

* subversion/libsvn_client/repos_diff.c

(fetch_kind_func): Same.

* subversion/libsvn_client/export.c

(fetch_kind_func): Same.

* subversion/libsvn_repos/commit.c

(kind_fetch_func): Use the base revision to find the correct kind.

* subversion/libsvn_repos/dump.c

(edit_baton): Add an FS member.

(fetch_kind_func): Find the correct kind.

(fetch_base_func): Look at the right base, given the base_revision.

(get_dump_editor): Populate FS baton member.

* subversion/libsvn_delta/compat.c

(build): Provide the base revision, and in the case of copy, use the

copyfrom url to fetch the kind.

  1. … 7 more files in changeset.
Ev2 shims: provide the base revision to the fetch props and fetch base

callback functions. We don't actually use it for anything in this patch,

but will shortly.

* subversion/include/svn_delta.h

(svn_delta_fetch_props_func_t, svn_delta_fetch_base_func_t): Add a base

revision argument.

* subversion/svnrdump/dump_editor.c

(fetch_base_func): Update implementor.

* subversion/libsvn_wc/util.c

(svn_wc__fetch_props_func, svn_wc__fetch_base_func): Same.

* subversion/libsvn_wc/wc.h

(svn_wc__fetch_props_func, svn_wc__fetch_base_func): Same.

* subversion/libsvn_client/repos_diff.c

(fetch_props_func, fetch_base_func): Same.

* subversion/libsvn_client/export.c

(fetch_props_func, fetch_base_func): Same.

* subversion/libsvn_repos/commit.c

(prop_fetch_func, fetch_base_func): Same.

* subversion/libsvn_repos/dump.c

(fetch_props_func, fetch_base_func): Same.

* subversion/libsvn_delta/compat.c

(process_actions, ev2_add_file, ev2_open_file, build): Provide a base revision

to the callback invocations.

  1. … 8 more files in changeset.
Ev2 shims: When fetching a pristine from the working copy, if the node doesn't

have a checksum, it won't have a pristine, so just return the empty stream.

Current number of Ev2 test failures: 259

* subversion/libsvn_wc/util.c

(svn_wc__fetch_base_func): Use an empty stream if no checksum exists.

Ev2 shims: Move the wc delta base fetching function to be library-scoped, and

use it for the remote status update editor.

Current number of test failures: 597

* subversion/libsvn_wc/util.c

(svn_wc__fetch_base_func): New, copied from update_editor.c.

* subversion/libsvn_wc/wc.h

(svn_wc__fetch_base_func): New.

* subversion/libsvn_wc/update_editor.c

(fetch_base_func): Remove.

(make_editor): Update references.

* subversion/libsvn_wc/status.c

(svn_wc_get_status_editor5): Populate the fetch base func / baton callbacks.

  1. … 3 more files in changeset.
In libsvn_wc, when fetching props for the Ev2 shims, add a flag to the baton

so we can fetch the proper kind of props, either actual or base, depending on

the application.

Suggested by: rhuijben

* subversion/libsvn_wc/util.c

(svn_wc__fetch_props_func): Fetch the appropriate kind of props.

* subversion/libsvn_wc/wc.h

(svn_wc__shim_fetch_baton_t): Add flag.

* subversion/libsvn_wc/update_editor.c

(make_editor): Fetch the base props.

* subversion/libsvn_wc/status.c

(svn_wc_get_status_editor5): Fetch the actual props.

  1. … 3 more files in changeset.
Generalize the prop fetching shim handler in libsvn_wc, and use it with the

status editor.

This doesn't fix any tests, but does handle a few segfaults.

* subversion/libsvn_wc/util.c

(svn_wc__fetch_kind_func, svn_wc__fetch_props_func): New.

* subversion/libsvn_wc/wc.h

(svn_wc__shim_fetch_baton_t, svn_wc__fetch_kind_func,

svn_wc__fetch_props_func): New.

* subversion/libsvn_wc/update_editor.c

(fetch_baton, fetch_props_func, fetch_kind_func): Remove.

(make_editor): Update references.

* subversion/libsvn_wc/status.c

(svn_wc_get_status_editor5): Create a baton, and use the proper handlers for

the shims.

  1. … 3 more files in changeset.
Rev the svn_wc_external_item_create() API to not return a 'const' pointer,

since the caller needs to initialize the newly created item.

* subversion/include/svn_wc.h

(svn_wc_external_item2_create): New.

(svn_wc_external_item_create): Deprecate.

* subversion/libsvn_wc/externals.c

(svn_wc_parse_externals_description3): Use the new function and remove

'const' casts.

* subversion/libsvn_wc/util.c

(svn_wc_external_item2_create): New.

(svn_wc_external_item_create): Move from here ...

* subversion/libsvn_wc/deprecated.c

(svn_wc_external_item_create): ... to here.

* subversion/bindings/swig/svn_wc.i

(svn_wc_external_item2_create): Ignore it, like we ignore its predecessor.

(svn_wc_external_item2_t): Use the new function and remove 'const' casts.

  1. … 4 more files in changeset.