Checkout Tools
  • last updated 7 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
* subversion/include/svn_client.h (svn_client_revert4): Tweak doc string.

Suggested by: danielsh

Fix doc-strings of 'revert' API.

* subversion/include/svn_client.h

(svn_client_revert4): Document 'use commit times' behaviour.

* subversion/libsvn_client/revert.c

(revert): Refer to existing docs.

  1. … 1 more file in changeset.
Tweak API documentation, reviewing API changes since 1.11.

Fix missing 'deprecated' tags, Doxygen mark-up, etc.

  1. … 2 more files in changeset.
Reintegrate the 'shelving-v3' branch.
  1. … 4 more files in changeset.
Make the new shelf-replay-to-delta-editor API public (experimental).

* subversion/include/svn_client.h,

subversion/libsvn_client/shelf.c

(svn_client__shelf_apply): Rename from 'shelf_replay' and make public.

  1. … 1 more file in changeset.
Add two resolver options for 'dir move vs dir move upon merge' conflicts.

These new options work similar to their existing counterparts for files.

* subversion/include/svn_client.h

(svn_client_conflict_option_both_moved_dir_merge,

svn_client_conflict_option_both_moved_dir_move_merge): Declare.

* subversion/libsvn_client/conflicts.c

(resolve_both_moved_dir_merge,

resolve_both_moved_dir_move_merge): New resolution option handlers.

(svn_client_conflict_tree_get_resolution_options,

configure_option_both_moved_dir_merge): Enable new options on applicable

tree conflicts.

(svn_client_conflict_option_get_moved_to_repos_relpath_candidates2,

svn_client_conflict_option_set_moved_to_repos_relpath2,

svn_client_conflict_option_get_moved_to_abspath_candidates2,

svn_client_conflict_option_set_moved_to_abspath2): Handle new options.

* subversion/svn/conflict-callbacks.c

(builtin_resolver_options): Assign resolver menu keys to the new options.

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

(test_merge_dir_move_vs_dir_move,

test_merge_dir_move_vs_dir_move_accept_move, test_funcs): Add new tests.

(create_dir_move_vs_dir_move_merge_conflict): New helper for above tests.

  1. … 3 more files in changeset.
Follow up to r1851268: our coding guidelines say that output parameters

should come first in the function argument list.

* subversion/include/svn_client.h

(svn_client_blame6): Move start_revnum_p and end_revnum_p to the

beginning of the argument list and update the docstring to say that

either of these may be NULL.

* subversion/libsvn_client/blame.c

(svn_client_blame6): Update signature.

* subversion/svn/blame-cmd.c (svn_cl__blame),

subversion/libsvn_client/deprecated.c (svn_client_blame5),

subversion/bindings/javahl/native/SVNClient.cpp (SVNClient::blame):

Update all callers.

  1. … 4 more files in changeset.
* subversion/include/svn_client.h

(svn_client_blame_receiver4_t,

svn_client_blame_receiver3_t,

svn_client_blame6): Update doc strings, following r1851268.

Move misplaced parameters out of the blame callback.

Part 2 of a commit started in r1851265.

* subversion/include/svn_client.h,

subversion/libsvn_client/blame.c

(svn_client_blame6): Move the start/end parameters from

svn_client_blame_receiver4_t to svn_client_blame6().

* subversion/libsvn_client/deprecated.c

(blame_receiver_wrapper_baton3,

blame_wrapper_receiver3,

svn_client_blame5): Adjust the compatibility wrapper.

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

(svn_client_blame_receiver4_t): Improve doc string.

* subversion/include/svn_client.h

(svn_client_blame_receiver4_t): improve the doc string

subversion/include/svn_client.h: use uppercase CR/LF in the doc string.
Extend the blame callback with a string length parameter.

* subversion/incluce/svn_client.h

* subversion/libsvn_client/blame.c

(svn_client_blame_receiver4_t): typedef for new callback

(svn_client_blame6): new API using the svn_client_blame_receiver4_t callback

* subversion/libsvn_client/deprecated.c

(svn_client_blame5): moved API there, calling svn_client_blame6 using a

callback shim

(blame_wrapper_receiver3): callback shim for svn_client_blame5

  1. … 2 more files in changeset.
Add resolver support for incoming move vs local move of files during merges.

Add two new resolution options for move vs move conflicts with files

after a merge operation:

(m) - apply changes to 'file-target' and revert addition of 'file-source'

(M) - move 'file-target' to 'file-source' and merge

where 'file-branch' is the path the file has on the merge target branch,

and 'file-source' is the path the file has on the merge source branch.

The 'm' option applies textual changes only and leaves the tree structure

of the merge target as it is. The 'M' option changes the file's location in

the merge target to match that of the merge source before merging changes.

I have not written related tests yet, but some manual testing was done.

Proper tests will follow as soon.

* subversion/include/svn_client.h

(svn_client_conflict_option_both_moved_file_merge,

svn_client_conflict_option_both_moved_file_move_merge): Declare new options.

* subversion/libsvn_client/conflicts.c

(follow_move_chains): Check for local candidates along all moves in the

chain, not just for the final move in the chain.

(resolve_incoming_move_file_text_merge): Implement support for the

svn_client_conflict_option_both_moved_file_move_merge option. This case

is similar enough to make sharing code written for other cases possible.

(resolve_both_moved_file_text_merge): New resolution handler for the

svn_client_conflict_option_both_moved_file_merge option.

(configure_option_incoming_delete_ignore): Don't match move-vs-move cases.

This causes the 'ignore deletion' option to show up in actual delete vs.

delete conflict cases as a side-effect.

(configure_option_incoming_delete_accept): Don't match move-vs-move cases.

(describe_incoming_move_merge_conflict_option): Change 'details' parameter

to a move target path, so this function can also be used for the new

svn_client_conflict_option_both_moved_file_move_merge option.

(configure_option_incoming_move_file_merge,

configure_option_incoming_dir_merge): Update callers.

(configure_option_both_moved_file_merge): Configure new options.

(svn_client_conflict_option_get_moved_to_repos_relpaths,

svn_client_conflict_option_set_moved_to_repos_relpaths

svn_client_conflict_option_get_moved_to_abspath_candidates,

svn_client_conflict_option_set_moved_to_abspath2): Accept new options and

update calls to describe_incoming_move_merge_conflict_option().

(svn_client_conflict_tree_get_resolution_options): Enable new options.

* subversion/libsvn_wc/conflicts.c

(svn_wc__guess_incoming_move_target_nodes): Handle the case where the

conflict victim is a 'local missing' victim. Needed for new options.

* subversion/svn/conflict-callbacks.c

(builtin_resolver_options): Set menu key bindings for new options.

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

(svn_client_list): Fix error in docstring.

Suggested by: Yasuhito FUTATSUKI

Remove bogus '@since 1.X' annotations from experimental APIs.

* subversion/include/svn_client.h,

subversion/include/private/svn_client_private.h

(svn_client__shelf_*): Remove '@since' annotations.

* subversion/include/private/svn_wc_private.h

(svn_wc__get_shelves_dir): Add a missing '@warning EXPERIMENTAL' for

consistency with all other shelving functions, although as this is a

private header it's not really necessary.

  1. … 2 more files in changeset.
Move all experimental APIs to the private namespace.

Part of issue SVN-4775 "Add x- prefix to experimental APIs".

* subversion/include/svn_client.h

(svn_client__layout_func_t): Renamed from 'svn_client_layout_func_t'.

(svn_client__layout_list): Renamed from 'svn_client_layout_list'.

(svn_client_shelf_*): Rename to 'svn_client__shelf_*'.

* subversion/include/private/svn_client_private.h

(svn_client__shelf_diff): Track the renames.

* subversion/libsvn_client/diff.c

(diff_shelf): Track the renames.

* subversion/libsvn_client/layout.c

(client_layout_baton_t,

svn_client__layout_list): Track the renames.

* subversion/libsvn_client/shelf.c

Track the renames.

* subversion/libsvn_client/status.c

(shelf_status): Track the renames.

* subversion/svn/info-cmd.c

Track the renames.

* subversion/svn/shelf-cmd.c

Track the renames.

  1. … 7 more files in changeset.
Shelving: document that the version number starting from 1.

Suggested by: Stefan Kueng <tortoisesvn{_AT_}gmail.com>

* subversion/include/svn_client.h

(svn_client_shelf_version_open): Note the version number is starting from 1.

Shelving: Fix Doxygen mark-up.

Suggested by: Stefan Kueng <tortoisesvn{_AT_}gmail.com>

* subversion/include/svn_client.h

(svn_client_shelf_t,

svn_client_shelf_version_t,

svn_client_shelf_version_status_walk): Fix Doxygen mark-up.

Shelving: remove deprecated experimental APIs.

* subversion/include/svn_client.h,

subversion/libbsvn_client/shelf.c

(svn_client_shelf_save_new_version2,

svn_client_shelf_save_new_version,

svn_client_shelf_set_current_version,

svn_client_shelf_export_patch): Remove.

  1. … 1 more file in changeset.
Improve the semantics of four public API resolver functions.

In all cases, the old APIs would raise an assertion failure if an unexpected

option was passed. This is bad API design since it forces clients to maintain

a static copy of the list of valid options. Furthermore, because we're

adding support for new options in future releases, we require API users

to keep this list updated when they update to a newer version of SVN.

The new versions of these APIs return NULL instead of asserting valid input.

This allows clients to simply pass in any option and check if that gives

a valid result.

Do not bother emulating the old behaviour; code written against the

guarantees of the old API will just keep working.

Make use of the new API versions in 'svn', which also serves as an

example of new API semantics are more friendly to API users.

Improve the API docstrings a little while here.

I am declaring the APIs added here as "New in 1.11" in hope that this

change will be backported to the recently created 1.11.x branch.

* subversion/include/svn_client.h

(svn_client_conflict_option_get_moved_to_repos_relpath_candidates2,

svn_client_conflict_option_set_moved_to_repos_relpath2): New.

(svn_client_conflict_option_get_moved_to_repos_relpath_candidates,

svn_client_conflict_option_set_moved_to_repos_relpath): Deprecate.

(svn_client_conflict_option_get_moved_to_abspath_candidates2,

svn_client_conflict_option_set_moved_to_abspath2): New.

(svn_client_conflict_option_get_moved_to_abspath_candidates,

svn_client_conflict_option_set_moved_to_abspath): Deprecate.

* subversion/libsvn_client/conflicts.c

(svn_client_conflict_option_get_moved_to_repos_relpath_candidates2,

svn_client_conflict_option_set_moved_to_repos_relpath2): New.

(svn_client_conflict_option_get_moved_to_repos_relpath_candidates,

svn_client_conflict_option_set_moved_to_repos_relpath): Implement

as a wrapper around the new API.

(svn_client_conflict_option_get_moved_to_abspath_candidates2,

svn_client_conflict_option_set_moved_to_abspath2): New.

(svn_client_conflict_option_get_moved_to_abspath_candidates,

svn_client_conflict_option_set_moved_to_abspath): Implement as a

wrapper around the new API.

* subversion/svn/conflict-callbacks.c

(build_tree_conflict_options): Remove a large list of options which are

acceptable to old APIs. Call the new API and check its result instead.

(find_conflict_option_with_repos_move_targets,

find_conflict_option_with_working_copy_move_targets): New helper functions.

(handle_tree_conflict): Simplify support of ambiguous moves by using new APIs.

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

(svn_client_conflict_option_id_t): Annotate enumerators that are new in 1.11.

* subversion/include/svn_client.h

(svn_client_revert3): Correct the documentation.

* subversion/include/svn_client.h

(svn_client_layout_list): Uncomment the 'SVN_EXPERIMENTAL' annotation.

Introduce separate conflict option IDs for sibling move cases.

New option IDs had been avoided to make backporting to 1.10 easier.

Since the outstanding backport proposal was retracted in r1839283

it is time to use proper designations to make things less confusing.

* subversion/include/svn_client.h

(svn_client_conflict_option_sibling_move_file_text_merge,

svn_client_conflict_option_sibling_move_dir_merge): Declare.

* subversion/libsvn_client/conflicts.c

(conflict_tree_get_details_local_missing,

configure_option_sibling_move_merge): Use new options for

sibling move cases instead of overloading the 'local move' IDs.

A 'local move' is a different case.

(init_wc_move_targets): Add sibling move options.

(resolve_local_move_file_merge): Update docstring.

(svn_client_conflict_option_get_moved_to_abspath_candidates,

svn_client_conflict_option_set_moved_to_abspath): Add sibling move options.

* subversion/svn/conflict-callbacks.c

(builtin_resolver_options): Assign menu key "m" to sibling move options.

(build_tree_conflict_options, handle_tree_conflict); Support sibling

move options.

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

(test_cherry_pick_post_move_edit, test_cherry_pick_post_move_edit_dir):

Update test expectations.

  1. … 3 more files in changeset.
Add an XFAIL resolver test for cherry-picking directory edits.

Add an XFAIL test which attempts to cherry-pick across a moved directory.

Incidentally, this test also covers the assertion failure fixed in r1836976.

* subversion/include/svn_client.h

(svn_client_conflict_option_local_move_dir_merge): New option ID.

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

(test_cherry_pick_post_move_edit_dir, test_list): New XFAIL test.

  1. … 1 more file in changeset.
Fix issue #4694 "cherry-pick edit after file was moved on source branch"

Add conflict resolver support for cherry-picking changes from files which

have been moved on the merge source branch. Support multiple merge target

candidates, and run a file merge by default if only one candidate exists.

This implementation extends the existing "local move file text merge"

resolution option with support for 'move siblings' as merge targets.

I am still considering whether this case conceptually deserves a dedicated

resolution option. However, it would be nice to backport this feature to

SVN 1.10. The only API change required by this implementation is allowing

another 'option' parameter value for the existing API functions

svn_client_conflict_option_get_moved_to_abspath_candidates()

and svn_client_conflict_option_set_moved_to_abspath(). This change is

ABI compatible, with the only caveat that a new 'svn' binary running

on top of an older libsvn_client could trigger an input assertion.

Because we require 'svn' to be kept in sync with the libraries this

should not be a problem in practice.

We can still improve the API for >= 1.11 later.

* subversion/include/private/svn_wc_private.h

(svn_wc__find_working_nodes_with_basename): Declare.

* subversion/include/svn_client.h

(svn_client_conflict_option_get_moved_to_abspath_candidates,

svn_client_conflict_option_set_moved_to_abspath): Document that

svn_client_conflict_option_local_move_file_text_merge is now

a valid option parameter for these functions.

* subversion/libsvn_client/conflicts.c

(conflict_tree_local_missing_details): Add and document wc_siblings

and preferred_sibling_idx fields.

(collect_sibling_move_candidates): New helper function.

(conflict_tree_get_details_local_missing): Try to find the 'local missing'

node which corresponds to the conflict victim in the working copy.

Technically, this would require scanning the log for every item in the WC.

However, assuming a cherry-pick from a moved file to a non-moved file, we

can use a short-cut: The basename of the non-moved file is already known

because it must match one of the locations which the moved file was moved

from. So we can restrict tracing of log history to nodes with a basename

which occurs in the chain of file moves on the merge source branch.

(resolve_local_move_file_merge, configure_option_local_move_file_merge):

Add support for merging to WC siblings of conflict victims which are

'locally missing'.

(svn_client_conflict_option_get_moved_to_abspath_candidates,

svn_client_conflict_option_set_moved_to_abspath): Add support for the

svn_client_conflict_option_local_move_file_text_merge resolution option.

* subversion/libsvn_wc/node.c

(svn_wc__find_working_nodes_with_basename): New private API function which

simply forwards to wc_db.

* subversion/libsvn_wc/wc-queries.sql

(STMT_SELECT_PRESENT_HIGHEST_WORKING_NODES_BY_BASENAME_AND_KIND): New query.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_find_working_nodes_with_basename): New wc_db API function which

finds present working nodes with a given basename.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_find_working_nodes_with_basename): Declare.

* subversion/svn/conflict-callbacks.c

(build_tree_conflict_options, handle_tree_conflict): Support multiple merge target

candidates with the svn_client_conflict_option_local_move_file_text_merge option.

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

(test_funcs): Mark test_cherry_pick_post_move_edit as PASS.

  1. … 8 more files in changeset.
Shelving: Implement 'svn shelf-diff', issue SVN-4745.

This is a first pass. It drives only the file methods in the diff processor

API, not the open- and close-directory methods, and not reporting changes on

directories.

* subversion/include/svn_client.h

(svn_client_shelf_export_patch): Deprecate.

* subversion/include/private/svn_client_private.h

(svn_client__get_diff_writer_unidiff): New.

(svn_client__shelf_diff): New.

* subversion/libsvn_client/diff.c

(svn_client__get_diff_writer_unidiff): New.

* subversion/libsvn_client/shelf.c

(file_changed, file_deleted, file_added): New.

(diff_baton_t, diff_visitor): Drive a diff-processor from shelved changes.

(svn_client__shelf_diff): New.

(svn_client_shelf_export_patch): Delete the body; it is deprecated and did

nothing before.

* subversion/svn/shelf-cmd.c

(shelf_diff): First obtain a diff writer. Then call the shelf-diff API,

driving that writer.

* subversion/tests/cmdline/shelf_tests.py

(shelf_diff_simple): New test.

(test_list): Run it.

  1. … 5 more files in changeset.
Shelving: better reporting of shelved and not-shelved changes.

* subversion/include/svn_client.h,

subversion/libsvn_client/shelf.c

(svn_client_shelf_save_new_version3): New.

(svn_client_shelf_save_new_version2): Deprecate.

* subversion/svn/shelf-cmd.c

Use callbacks to report shelved and not-shelved paths.

  1. … 2 more files in changeset.
Shelving: Add SVN_EXPERIMENTAL and suppress warnings related to it.

A follow-up to r1831908.

* subversion/include/svn_client.h

(svn_client_shelf_version_status_walk): Add 'experimental' mark-up.

* subversion/libsvn_client/status.c

Suppress 'experimental function used' warnings, because on some platforms

it maps to a 'deprecated' warning and we don't like those.

  1. … 1 more file in changeset.