subversion

Checkout Tools
  • last updated 5 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset 1836972 is being indexed.

Revert r1783879. Again recommend the "move + merge" option during merges.

The "apply edits to old location" resolver option mentioned in the log

message of r1783879 has now been implemented. It is in fact handled in

a different code path (for "local missing" conflicts, rather than "local

deletion"). Which means we can now simply revert r1783879 to see less

resolver questions during merges.

* STATUS: Propose issue #4766 fix.

* STATUS: Nominate r1836963.

Merge r1833895, r1833897, r1833899, and r1833901 from trunk:

* r1833895, r1833897, r1833899, r1833901

Fix issue #4744 "during merge: assertion failed (start_rev > end_rev)"

Justification:

Fixes undesirable conflict resolver behaviour.

Notes:

r1833895 adds a regression test

r1833897 prevents offer of a non-working resolution option

r1833899 fixes accidental test breakage introduced by r1833897

r1833901 prevents the assertion failure and adjusts the test

Issue #4739 fix should be merged before this to avoid merge conflicts.

Votes:

+1: stsp, jcorvel, philip

Fix issue #4766, "resolver adds unrelated moves to move target list"

* subversion/libsvn_client/conflicts.c

(find_operative_moves): Fix the logic which detects operative nested moves

to keep a couple of unrelated conflict resolver tests passing; some tests

were only passing because this code added *every* move found in the deleted

revision. Add only operative moves to the list to fix issue #4766.

Note to reviewers: See notes/resolve-moves for definition of "nested move".

(reparent_session_and_fetch_node_kind): Remove, now unused.

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

(test_funcs): Issue #4766 test is now passing.

* STATUS: Vote/approve issue 4744 fix.
Fix a potential NULL dereference in the conflict resolver.

* subversion/libsvn_client/conflicts.c

(map_deleted_path_to_move): Check the result of svn_relpath_skip_ancestor().

add an XFAIL test for issue #4766 (resolver adds unrelated moves)

* subversion/libsvn_client/conflicts-test.c

(new_file2_name): New constant.

(create_wc_with_incoming_delete_file_merge_conflict): Optionally create

an unrelated move within the same commit of the existing move.

This triggers issue #4766.

(test_merge_incoming_delete_file_ignore,

test_merge_incoming_delete_file_accept

test_merge_incoming_move_file_text_merge

test_switch_incoming_move_file_text_merge): Update callers.

(test_merge_incoming_delete_file_unrelated_move, test_funcs): New test.

Merge the r1830083 group from trunk:

* r1830083, r1833864, r1833866

Fix issue #4739, "Accept incoming deletion" option doing nothing

for a locally deleted file

Justification:

Fixes undesirable conflict resolver behaviour.

Notes:

r1830083 adds a regression test

r1833864 fixes the issue

r1833866 is a small follow-up fix

Issue #4744 fix should be merged after this to avoid merge conflicts.

Votes:

+1: stsp, jcorvel, philip

* STATUS: Vote/approve issue 4739 fix.
Add a test for a bug where git-diff errors out on a copy.

* subversion/tests/cmdline/diff_tests.py

(diff_git_format_copy): New test, XFail.

(test_list): Run it.

Fix a potential crash in JavaHL.

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

(JNIUtil::wrappedCreateClientException): Don't store an invalid pointer to

out-of-scope std::streambuf contents.

Found by: David Binderman

Fixes #4764

* STATUS: Extend client cert password proposal.
Followup to r1836762, now that we store client cert passwords it

turns out that the libsecret gnome keyring doesn't accept NULL

usernames. Pass a dummy username as a workaround.

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c

(DUMMY_USERNAME): New.

(svn_auth__ssl_client_cert_pw_cache_get,

svn_auth__ssl_client_cert_pw_cache_set): Pass dummy username.

* STATUS: Propose client cert password saving fix.
Allow the client cert password to be saved. The ra_neon library

used to do this but the fuction was lost when we switched to serf.

* subversion/libsvn_ra_serf/util.c

(handle_client_cert_pw): Add comment.

(handle_response): Invoke svn_auth_save_credentials for the client

cert creds.

Make diff code a tiny bit easier to follow. No functional change.

* subversion/libsvn_client/diff.c

(adjust_paths_for_diff_labels): Use separate inputs and outputs. Document better.

(print_diff_index_header): New, extracted from five callers.

Elsewhere: adjust callers.

Fix double diff headers.

Diff printed the 'Index:' header twice in some cases. One case was if an

external diff showed nothing (e.g. whitespace-only changes with a

suppress-whitespace-diffs option) and a property diff was shown.

* subversion/libsvn_client/diff.c

(diff_content_changed): Always tell the caller if we printed a header.

* subversion/libsvn_diff/diff_tree.c

(tree_processor_t,

svn_diff__tree_processor_create): Remove 'wrapper' struct as it was just

confusing.

* STATUS: Propose pipe/fifo fix (danielsh via email).
* subversion/tests/cmdline/lock_tests.py

(delete_locked_file_with_percent): Enable for all RA layers, not just HTTP

where the problem originally showed up.

Follow-up to r1836409: Fix test fallout.

* subversion/tests/libsvn_wc/wc-queries-test.c

(slow_statements): Add the new query added in r1836409.

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.

* subversion/libsvn_client/conflicts.c

(configure_option_local_move_file_merge): Ensure that this resolution

option, which only applies to files, is not applied to directories.

Fix wrong expectations of an XFAIL conflict resolver test.

* subversion/tests/libsvn_client/conflict-tests.c

(test_cherry_pick_post_move_edit): The cherry-pick merge as run by this

test results in a text conflict. Update test expectations accordingly.

Code simplification.

* subversion/libsvn_client/repos_diff.c

(remove_non_prop_changes): Use an existing function to delete elements.

Fix libsvn_client 'repos-diff' which was incompletely filtering out no-op

property changes since r1097039.

Tested by temporarily inserting postcondition assertions.

* subversion/libsvn_client/repos_diff.c

(remove_non_prop_changes): Remove all redundant prop changes, not just some of them.

* publish/roadmap.html

(upcoming-releases): Note actual dates and version numbers of 1.9.9,1.10.2.

Teach 'release.py write-news' to insert the output into a file.

With the new option '--edit-html-file=FILE', it inserts the news item

before the first existing news item in FILE instead of printing it.

(It does not take care of remove old news items from 'index.html'.)

* /home/julianfoad/src/subversion-g/tools/dist/release.py

(write_news): Insert the news before a '<div class="h3" id="news-' line.

(main): Accept '--edit-html-file=' option.

In 'release.py write-news', allow specifying the announcement email URL.

The new option is 'release.py write-news --announcement-url=...'.

Previously it wrote out a blank field where we needed to insert the URL

manually.

* /home/julianfoad/src/subversion-g/tools/dist/release.py

(write_news): Pass the new argument to the templates.

(main): Add the '--announcement-url=' option.

* /home/julianfoad/src/subversion-g/tools/dist/templates/rc-news.ezt,

/home/julianfoad/src/subversion-g/tools/dist/templates/stable-news.ezt

Insert a replaceable '[announcement_url]' parameter in the templates.