Checkout Tools
  • last updated 1 hour ago
Constraints: committers
Constraints: files
Constraints: dates
* subversion/include/svn_wc.h

(svn_wc_revert5): Correct the documentation.

Add an option to the 'revert' APIs to choose whether to delete or keep a

schedule-add file or directory.

Previously reverting a copied (add-with-history) file or directory would

delete it, while reverting a plain add would keep it on disk.

* subversion/include/svn_client.h,



(svn_client_revert4): New, revved with a new option 'added_keep_local'.

(svn_client_revert3): Deprecated.


revert): Pass the new option along.

* subversion/include/svn_wc.h,



(svn_wc_revert6): New, revved with a new option 'added_keep_local'.

(svn_wc_revert5): Deprecated.


(revert_wc_data): Allow deleting an on-disk item even in cases (such as a

plain add) where its new metadata status is 'not present'.



revert_partial): Pass the new option along.

  1. … 5 more files in changeset.
* subversion/include/svn_wc.h

(svn_wc_delete4): Fix typo in docstring.

Improve C90 compatibility by removing trailing commas in enum lists as well as

converting a variadic macro stub with an empty function.

* subversion/include/svn_client.h

* subversion/include/svn_wc.h

* subversion/libsvn_subr/cache-membuffer.c

* subversion/svn/svn.c

* subversion/svnmucc/svnmucc.c

(svn_client_config_option_id_t, svn_wc_notify_action_t,

prefix_pool_create, svn_cl__longopt_t, sub_main): Remove trailing commas

in enum lists.

* tools/dev/svnmover/linenoise/linenouse.c

(lndebug): Replace variadic macro stub with an empty variadic function.

Patch by: Patrick Steinhardt <ps{_AT_}>

(Log message tweaked by me.)

  1. … 5 more files in changeset.
Show progress output while searching the repository for tree conflict details.

We do this only for RA operations which potentially access multiple revisions.

No progress is shown when getting information from a single revision.

Scanning the log can take a while and happens before we show the conflict

description. So show a "spinning wheel" (or rather, a self-updating display

of revision numbers) to keep the audience entertained.

* subversion/include/svn_wc.h



svn_wc_notify_end_search_tree_conflict_details): New notification types.

* subversion/libsvn_client/conflicts.c

(find_deleted_rev_baton): Add victim_abspath for notifications.

(find_deleted_rev): Send progress notifications.

(find_revision_for_suspected_deletion): Send begin/end notifications.

(find_added_rev_baton): Add victim_abspath and 'ctx'.

(find_added_rev): Send progress notifications.

(get_incoming_delete_details_for_reverse_addition): Add 'victim_abspath'

parameter. Send begin/end notifications.

(conflict_tree_get_details_incoming_delete): Update caller.

(conflict_tree_get_details_incoming_add): Send begin/end notifications.

(find_modified_rev_baton): Add victim_abspath and 'ctx'.

(find_modified_rev): Send progress notifications.

(conflict_tree_get_details_incoming_edit): Send begin/end notifications.

(merge_incoming_added_dir_replace): Send begin/end notifications.

* subversion/svn/notify.c

(notify_body): Display new notification types.

  1. … 2 more files in changeset.
Add new notification actions for resolution of text, prop, and tree conflicts.

The action 'svn_wc_notify_resolved' is a bit generic. We can generate more

informative output with separate notification actions for the different

kinds of conflicts we support.

Note that nothing generates these new notifications yet.

This will be done in separate commits.

* subversion/include/svn_wc.h

(svn_wc_notify_action_t): Add svn_wc_notify_resolved_text,

svn_wc_notify_resolved_prop, svn_wc_notify_resolved_tree.

* subversion/svn/notify.c

(notify_body): Add support for new notification actions.

  1. … 1 more file in changeset.
* subversion/include/svn_wc.h

(svn_wc_resolved_conflict5): Deprecate this function.

Incorporate svn_wc 1.9 API review feedback. No functional change.

* subversion/include/svn_wc.h

(svn_wc_conflict_description2_dup): Correct @since.


svn_wc_cleanup4): Document notification mechanism.

* subversion/include/svn_wc.h

(svn_wc_conflict_description_t): Tweak node_kind documentation.

(svn_wc_conflict_description_create_tree2): Update references to field and

argument name to match implementation.

(svn_wc_conflict_choice_t): Tweak comment.

Fix two minor api issues on the now deprecated svn_wc_add_from_disk2.

* subversion/include/svn_wc.h

(svn_wc_add_from_disk2): Fix documentation reference.

* subversion/libsvn_wc/deprecated.c

(svn_wc_add_from_disk2): Pass props to svn_wc_add_from_disk3() instead

of ignoring them.

  1. … 1 more file in changeset.
Fix docstring issues in svn_wc.h found during 1.9 API review.

No functional change.

* subversion/include/svn_wc.h

(svn_wc_conflict_description2_t): Make Doxygen recognize element


(svn_wc_status3_t): Use Doxygen links for xrefs.

Fix tree conflict detection in the update editor on unversioned nodes that

exist where there used to be a deleted node.

* subversion/include/svn_wc.h

(svn_wc_status3_t): Provide kind of what is actually in the working copy,

to allow status callbacks to see that there is really something else,

where we just deleted something.

* subversion/libsvn_wc/status.c


assemble_unversioned): Set actual_kind.

* subversion/libsvn_wc/update_editor.c

(modcheck_callback): Handle unversioned nodes as a change, even when they

are in the same place as a delete.

* subversion/tests/cmdline/

(update_obstructing_symlink): Update expected results: tree conflict!

  1. … 3 more files in changeset.
Allow resolving property conflicts by just passing the new value, instead

of always requiring a tempfile operation.

* subversion/include/svn_wc.h

(svn_wc_conflict_result_t): Add merged_value member.

(svn_wc_create_conflict_result): Make it more explicit that

argument may be null.

* subversion/libsvn_wc/conflicts.c

(generate_propconflict): Handle merged_value.

(resolve_prop_conflict_on_node): Add argument. Handle merged value.

(svn_wc__mark_resolved_prop_conflicts): Update caller.

(conflict_status_walker): Update caller.

(svn_wc_create_conflict_result): Really document the merged_file

(as documented since 1.5)

  1. … 1 more file in changeset.
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.

  1. … 12 more files in changeset.
Rename and document a parameter of svn_wc_parse_externals_description3().

The docstring did not explain the meaning of the 'parent_directory' parameter,

it merely stated how it is used internally.

The name 'parent_directory' is misleading since the parameter is supposed

to be the path or URL to the directory on which the svn:externals property

corresponding to the externals description is set. This property is not

necessarily set on the direct parent directory of the external, it can be

set on any parent. Usually the term 'defining directory' is used in this

context, so rename the parametr to 'defining_directory'.

* subversion/include/svn_wc.h

(svn_wc_parse_externals_description3): Rename 'parent_directory' to


* subversion/libsvn_wc/externals.c

(svn_wc_parse_externals_description3): Rename 'parent_directory' to

'defining_directory' and 'parent_directory_display' to

'defining_directory_display'. No functional change.

  1. … 1 more file in changeset.
* subversion/include/svn_wc.h

(svn_wc_merge_prop_diffs): Fix typo in docstring. No functional change.

* subversion/include/svn_wc.h

(svn_wc_queue_committed4): Following up on r1630337, extend documentation.

Following up on r1603617 and r1603619, move the logic of the post commit

handling of nodes that shouldn't be bumped in the commit queue. This moves

the logic into the working copy and allows further improvements by reducing

the number of db transactions.

* subversion/include/svn_wc.h

(svn_wc_queue_committed4): New function.

(svn_wc_queue_committed3): Deprecate function.

* subversion/libsvn_client/commit.c

(post_process_commit_item): Update caller.

(post_process_no_commit_item): Remove function.

(svn_client_commit6): Remove no-commit filter and no-commit handling.

* subversion/libsvn_wc/adm_ops.c

(committed_queue_item_t): Add committed boolean.

(svn_wc_queue_committed3): Rename to ...

(svn_wc_queue_committed4): ... this and allow setting committed boolean.

(svn_wc_process_committed_queue2): Handle not bumping specific items.

* subversion/libsvn_wc/deprecated.c

(svn_wc_queue_committed3): New function.

  1. … 3 more files in changeset.
* subversion/include/svn_wc.h

(svn_wc_get_changelists): Add a doc string, modeled on the doc string of

the wrapper function svn_client_get_changelists().

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.
In svn_wc_conflict_description2_t, provide a copy of the property reject file

path in new prop_reject_abspath field.

* subversion/include/svn_wc.h

(svn_wc_conflict_description2_t): Add prop_reject_abspath. This path was

accidentally stored in their_abspath, which is wrong but cannot be

changed without rev'ing the struct.

* subversion/libsvn_wc/conflicts.c

(generate_propconflict, read_prop_conflict_descs): Set prop_reject_abspath

in addition to their_abspath. Both fields point to the same value.

  1. … 1 more file in changeset.
Remove a typedef which I added in r1618906 but which isn't going to be

used very soon after all.

* subversion/include/svn_wc.h

(svn_wc_conflict_description_private_t): Remove.

(svn_wc_conflict_description2_t): Remove 'priv' field, and document

how to extend this structure.

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_resolver_func3_t): Un-declare.




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_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_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__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__cd3_array_to_cd2_array, svn_wc__cd3_to_cd2): Remove.



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



append_tree_conflict_info_xml, svn_cl__append_conflict_info_xml): Use desc2.

* subversion/svn/cl-conflicts.h



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


* subversion/libsvn_wc/info.c

(svn_wc_info_dup): Adjust caller.

  1. … 3 more files in changeset.
* subversion/include/svn_wc.h

(svn_wc_info_t): Add @since marker for 'conflicts2'.

Extend svn_wc_info_t with an array of svn_wc_conflict_description3_t items.

This will allow the svn client to use conflict descriptions of this type.

* subversion/include/svn_wc.h

(svn_wc_info_t): Add 'conflicts2'.

* subversion/libsvn_wc/info.c

(svn_wc_info_dup): Duplicate the new svn_wc_conflict_description3_t array.

(build_info_for_node): Populate the svn_wc_conflict_description3_t array.

  1. … 1 more file 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__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.