You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ja...@apache.org on 2018/09/18 01:50:51 UTC
svn commit: r1841179 [2/2] - in /subversion/branches/java10-compat: ./
subversion/bindings/javahl/src/org/apache/subversion/javahl/
subversion/include/ subversion/libsvn_client/ subversion/libsvn_wc/
subversion/svn/ subversion/tests/cmdline/ subversion...
Modified: subversion/branches/java10-compat/subversion/svn/conflict-callbacks.c
URL: http://svn.apache.org/viewvc/subversion/branches/java10-compat/subversion/svn/conflict-callbacks.c?rev=1841179&r1=1841178&r2=1841179&view=diff
==============================================================================
--- subversion/branches/java10-compat/subversion/svn/conflict-callbacks.c (original)
+++ subversion/branches/java10-compat/subversion/svn/conflict-callbacks.c Tue Sep 18 01:50:50 2018
@@ -1534,22 +1534,14 @@ build_tree_conflict_options(
id != svn_client_conflict_option_accept_current_wc_state)
*all_options_are_dumb = FALSE;
- if (id == svn_client_conflict_option_incoming_move_file_text_merge ||
- id == svn_client_conflict_option_incoming_move_dir_merge)
- {
+ if (*possible_moved_to_repos_relpaths == NULL)
SVN_ERR(
- svn_client_conflict_option_get_moved_to_repos_relpath_candidates(
+ svn_client_conflict_option_get_moved_to_repos_relpath_candidates2(
possible_moved_to_repos_relpaths, builtin_option,
result_pool, iterpool));
- SVN_ERR(svn_client_conflict_option_get_moved_to_abspath_candidates(
- possible_moved_to_abspaths, builtin_option,
- result_pool, iterpool));
- }
- else if (id == svn_client_conflict_option_local_move_file_text_merge ||
- id == svn_client_conflict_option_local_move_dir_merge ||
- id == svn_client_conflict_option_sibling_move_file_text_merge ||
- id == svn_client_conflict_option_sibling_move_dir_merge)
- SVN_ERR(svn_client_conflict_option_get_moved_to_abspath_candidates(
+
+ if (*possible_moved_to_abspaths == NULL)
+ SVN_ERR(svn_client_conflict_option_get_moved_to_abspath_candidates2(
possible_moved_to_abspaths, builtin_option,
result_pool, iterpool));
}
@@ -1682,6 +1674,69 @@ prompt_move_target_path(int *preferred_m
return SVN_NO_ERROR;
}
+static svn_error_t *
+find_conflict_option_with_repos_move_targets(
+ svn_client_conflict_option_t **option_with_move_targets,
+ apr_array_header_t *options,
+ apr_pool_t *scratch_pool)
+{
+ apr_pool_t *iterpool = svn_pool_create(scratch_pool);
+ int i;
+ apr_array_header_t *possible_moved_to_repos_relpaths = NULL;
+
+ *option_with_move_targets = NULL;
+
+ for (i = 0; i < options->nelts; i++)
+ {
+ svn_client_conflict_option_t *option;
+
+ svn_pool_clear(iterpool);
+ option = APR_ARRAY_IDX(options, i, svn_client_conflict_option_t *);
+ SVN_ERR(svn_client_conflict_option_get_moved_to_repos_relpath_candidates2(
+ &possible_moved_to_repos_relpaths, option, iterpool, iterpool));
+ if (possible_moved_to_repos_relpaths)
+ {
+ *option_with_move_targets = option;
+ break;
+ }
+ }
+ svn_pool_destroy(iterpool);
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+find_conflict_option_with_working_copy_move_targets(
+ svn_client_conflict_option_t **option_with_move_targets,
+ apr_array_header_t *options,
+ apr_pool_t *scratch_pool)
+{
+ apr_pool_t *iterpool = svn_pool_create(scratch_pool);
+ int i;
+ apr_array_header_t *possible_moved_to_abspaths = NULL;
+
+ *option_with_move_targets = NULL;
+
+ for (i = 0; i < options->nelts; i++)
+ {
+ svn_client_conflict_option_t *option;
+
+ svn_pool_clear(iterpool);
+ option = APR_ARRAY_IDX(options, i, svn_client_conflict_option_t *);
+ SVN_ERR(svn_client_conflict_option_get_moved_to_abspath_candidates2(
+ &possible_moved_to_abspaths, option, scratch_pool,
+ iterpool));
+ if (possible_moved_to_abspaths)
+ {
+ *option_with_move_targets = option;
+ break;
+ }
+ }
+ svn_pool_destroy(iterpool);
+
+ return SVN_NO_ERROR;
+}
+
/* Ask the user what to do about the tree conflict described by CONFLICT
* and either resolve the conflict accordingly or postpone resolution.
* SCRATCH_POOL is used for temporary allocations. */
@@ -1809,7 +1864,7 @@ handle_tree_conflict(svn_boolean_t *reso
{
int preferred_move_target_idx;
apr_array_header_t *options;
- svn_client_conflict_option_t *conflict_option;
+ svn_client_conflict_option_t *option;
SVN_ERR(prompt_move_target_path(&preferred_move_target_idx,
possible_moved_to_repos_relpaths,
@@ -1822,22 +1877,12 @@ handle_tree_conflict(svn_boolean_t *reso
ctx,
iterpool,
iterpool));
- conflict_option =
- svn_client_conflict_option_find_by_id(
- options,
- svn_client_conflict_option_incoming_move_file_text_merge);
- if (conflict_option == NULL)
+ SVN_ERR(find_conflict_option_with_repos_move_targets(
+ &option, options, iterpool));
+ if (option)
{
- conflict_option =
- svn_client_conflict_option_find_by_id(
- options, svn_client_conflict_option_incoming_move_dir_merge);
- }
-
- if (conflict_option)
- {
- SVN_ERR(svn_client_conflict_option_set_moved_to_repos_relpath(
- conflict_option, preferred_move_target_idx,
- ctx, iterpool));
+ SVN_ERR(svn_client_conflict_option_set_moved_to_repos_relpath2(
+ option, preferred_move_target_idx, ctx, iterpool));
repos_move_target_chosen = TRUE;
wc_move_target_chosen = FALSE;
@@ -1863,7 +1908,7 @@ handle_tree_conflict(svn_boolean_t *reso
{
int preferred_move_target_idx;
apr_array_header_t *options;
- svn_client_conflict_option_t *conflict_option;
+ svn_client_conflict_option_t *option;
SVN_ERR(prompt_move_target_path(&preferred_move_target_idx,
possible_moved_to_abspaths, TRUE,
@@ -1875,50 +1920,12 @@ handle_tree_conflict(svn_boolean_t *reso
ctx,
iterpool,
iterpool));
- conflict_option =
- svn_client_conflict_option_find_by_id(
- options,
- svn_client_conflict_option_incoming_move_file_text_merge);
- if (conflict_option == NULL)
- {
- conflict_option =
- svn_client_conflict_option_find_by_id(
- options,
- svn_client_conflict_option_local_move_file_text_merge);
- }
- if (conflict_option == NULL)
- {
- conflict_option =
- svn_client_conflict_option_find_by_id(
- options,
- svn_client_conflict_option_local_move_dir_merge);
- }
- if (conflict_option == NULL)
- {
- conflict_option =
- svn_client_conflict_option_find_by_id(
- options,
- svn_client_conflict_option_sibling_move_file_text_merge);
- }
- if (conflict_option == NULL)
- {
- conflict_option =
- svn_client_conflict_option_find_by_id(
- options,
- svn_client_conflict_option_sibling_move_dir_merge);
- }
- if (conflict_option == NULL)
- {
- conflict_option =
- svn_client_conflict_option_find_by_id(
- options, svn_client_conflict_option_incoming_move_dir_merge);
- }
-
- if (conflict_option)
+ SVN_ERR(find_conflict_option_with_working_copy_move_targets(
+ &option, options, iterpool));
+ if (option)
{
- SVN_ERR(svn_client_conflict_option_set_moved_to_abspath(
- conflict_option, preferred_move_target_idx, ctx,
- iterpool));
+ SVN_ERR(svn_client_conflict_option_set_moved_to_abspath2(
+ option, preferred_move_target_idx, ctx, iterpool));
wc_move_target_chosen = TRUE;
/* Update option description. */
Modified: subversion/branches/java10-compat/subversion/svn/info-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/java10-compat/subversion/svn/info-cmd.c?rev=1841179&r1=1841178&r2=1841179&view=diff
==============================================================================
--- subversion/branches/java10-compat/subversion/svn/info-cmd.c (original)
+++ subversion/branches/java10-compat/subversion/svn/info-cmd.c Tue Sep 18 01:50:50 2018
@@ -21,6 +21,10 @@
* ====================================================================
*/
+/* We define this here to remove any further warnings about the usage of
+ experimental functions in this file. */
+#define SVN_EXPERIMENTAL
+
/* ==================================================================== */
Modified: subversion/branches/java10-compat/subversion/svn/svn.c
URL: http://svn.apache.org/viewvc/subversion/branches/java10-compat/subversion/svn/svn.c?rev=1841179&r1=1841178&r2=1841179&view=diff
==============================================================================
--- subversion/branches/java10-compat/subversion/svn/svn.c (original)
+++ subversion/branches/java10-compat/subversion/svn/svn.c Tue Sep 18 01:50:50 2018
@@ -480,7 +480,7 @@ const apr_getopt_option_t svn_cl__option
{"drop", opt_drop, 0,
N_("drop shelf after successful unshelve")},
- {"viewspec", opt_viewspec, 0,
+ {"x-viewspec", opt_viewspec, 0,
N_("print the working copy layout")},
/* Long-opt Aliases
@@ -823,7 +823,7 @@ const svn_opt_subcommand_desc3_t svn_cl_
" about TARGET.\n"
"\n"), N_(
" EXPERIMENTAL:\n"
- " With --viewspec, print the working copy layout.\n"
+ " With --x-viewspec, print the working copy layout.\n"
)},
{'r', 'R', opt_depth, opt_targets, opt_incremental, opt_xml,
opt_changelist, opt_include_externals, opt_show_item, opt_no_newline,
@@ -1953,7 +1953,7 @@ const svn_opt_subcommand_desc3_t svn_cl_
)},
{ 'q' } },
- { "x-shelf-diff", svn_cl__shelf_diff, {"shelf-diff"}, {N_(
+ { "x-shelf-diff", svn_cl__shelf_diff, {0}, {N_(
"Show shelved changes as a diff.\n"
"usage: x-shelf-diff SHELF [VERSION]\n"
"\n"), N_(
@@ -1968,7 +1968,7 @@ const svn_opt_subcommand_desc3_t svn_cl_
{opt_summarize},
},
- { "x-shelf-drop", svn_cl__shelf_drop, {"shelf-drop"}, {N_(
+ { "x-shelf-drop", svn_cl__shelf_drop, {0}, {N_(
"Delete a shelf.\n"
"usage: x-shelf-drop SHELF [PATH ...]\n"
"\n"), N_(
@@ -1980,7 +1980,7 @@ const svn_opt_subcommand_desc3_t svn_cl_
)},
},
- { "x-shelf-list", svn_cl__shelf_list, {"shelf-list", "shelves"}, {N_(
+ { "x-shelf-list", svn_cl__shelf_list, {"x-shelves"}, {N_(
"List shelves.\n"
"usage: x-shelf-list [PATH ...]\n"
"\n"), N_(
@@ -1994,7 +1994,7 @@ const svn_opt_subcommand_desc3_t svn_cl_
{'q', 'v'}
},
- { "x-shelf-list-by-paths", svn_cl__shelf_list_by_paths, {"shelf-list-by-paths"}, {N_(
+ { "x-shelf-list-by-paths", svn_cl__shelf_list_by_paths, {0}, {N_(
"List which shelf affects each path.\n"
"usage: x-shelf-list-by-paths [PATH...]\n"
"\n"), N_(
@@ -2005,7 +2005,7 @@ const svn_opt_subcommand_desc3_t svn_cl_
)},
},
- { "x-shelf-log", svn_cl__shelf_log, {"shelf-log"}, {N_(
+ { "x-shelf-log", svn_cl__shelf_log, {0}, {N_(
"Show the versions of a shelf.\n"
"usage: x-shelf-log SHELF [PATH...]\n"
"\n"), N_(
@@ -2018,7 +2018,7 @@ const svn_opt_subcommand_desc3_t svn_cl_
{'q', 'v'}
},
- { "x-shelf-save", svn_cl__shelf_save, {"shelf-save"}, {N_(
+ { "x-shelf-save", svn_cl__shelf_save, {0}, {N_(
"Copy local changes onto a new version of a shelf.\n"
"usage: x-shelf-save SHELF [PATH...]\n"
"\n"), N_(
@@ -2036,7 +2036,7 @@ const svn_opt_subcommand_desc3_t svn_cl_
}
},
- { "x-shelve", svn_cl__shelf_shelve, {"shelve"}, {N_(
+ { "x-shelve", svn_cl__shelf_shelve, {0}, {N_(
"Move local changes onto a shelf.\n"
"usage: x-shelve [--keep-local] SHELF [PATH...]\n"
"\n"), N_(
@@ -2065,7 +2065,7 @@ const svn_opt_subcommand_desc3_t svn_cl_
SVN_CL__LOG_MSG_OPTIONS,
} },
- { "x-unshelve", svn_cl__shelf_unshelve, {"unshelve"}, {N_(
+ { "x-unshelve", svn_cl__shelf_unshelve, {0}, {N_(
"Copy shelved changes back into the WC.\n"
"usage: x-unshelve [--drop] [SHELF [VERSION]]\n"
"\n"), N_(
Modified: subversion/branches/java10-compat/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout
URL: http://svn.apache.org/viewvc/subversion/branches/java10-compat/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout?rev=1841179&r1=1841178&r2=1841179&view=diff
==============================================================================
--- subversion/branches/java10-compat/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout (original)
+++ subversion/branches/java10-compat/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout Tue Sep 18 01:50:50 2018
@@ -47,14 +47,14 @@ Available subcommands:
unlock
update (up)
upgrade
- x-shelf-diff (shelf-diff)
- x-shelf-drop (shelf-drop)
- x-shelf-list (shelf-list, shelves)
- x-shelf-list-by-paths (shelf-list-by-paths)
- x-shelf-log (shelf-log)
- x-shelf-save (shelf-save)
- x-shelve (shelve)
- x-unshelve (unshelve)
+ x-shelf-diff
+ x-shelf-drop
+ x-shelf-list (x-shelves)
+ x-shelf-list-by-paths
+ x-shelf-log
+ x-shelf-save
+ x-shelve
+ x-unshelve
Subversion is a tool for version control.
For additional information, see http://subversion.apache.org/
Modified: subversion/branches/java10-compat/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout
URL: http://svn.apache.org/viewvc/subversion/branches/java10-compat/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout?rev=1841179&r1=1841178&r2=1841179&view=diff
==============================================================================
--- subversion/branches/java10-compat/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout (original)
+++ subversion/branches/java10-compat/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout Tue Sep 18 01:50:50 2018
@@ -47,14 +47,14 @@ Available subcommands:
unlock
update (up)
upgrade
- x-shelf-diff (shelf-diff)
- x-shelf-drop (shelf-drop)
- x-shelf-list (shelf-list, shelves)
- x-shelf-list-by-paths (shelf-list-by-paths)
- x-shelf-log (shelf-log)
- x-shelf-save (shelf-save)
- x-shelve (shelve)
- x-unshelve (unshelve)
+ x-shelf-diff
+ x-shelf-drop
+ x-shelf-list (x-shelves)
+ x-shelf-list-by-paths
+ x-shelf-log
+ x-shelf-save
+ x-shelve
+ x-unshelve
Subversion is a tool for version control.
For additional information, see http://subversion.apache.org/
Modified: subversion/branches/java10-compat/subversion/tests/cmdline/shelf_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/java10-compat/subversion/tests/cmdline/shelf_tests.py?rev=1841179&r1=1841178&r2=1841179&view=diff
==============================================================================
--- subversion/branches/java10-compat/subversion/tests/cmdline/shelf_tests.py (original)
+++ subversion/branches/java10-compat/subversion/tests/cmdline/shelf_tests.py Tue Sep 18 01:50:50 2018
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# shelve_tests.py: testing shelving
+# shelf_tests.py: testing shelving
#
# Subversion is a tool for revision control.
# See http://subversion.apache.org for more information.
@@ -111,12 +111,12 @@ def shelve_unshelve_verify(sbox, modifie
if cannot_shelve:
svntest.actions.run_and_verify_svn(None, '.* could not be shelved.*',
- 'shelve', 'foo')
+ 'x-shelve', 'foo')
return
# Shelve; check there are no longer any modifications
svntest.actions.run_and_verify_svn(None, [],
- 'shelve', 'foo')
+ 'x-shelve', 'foo')
check_wc_state(wc_dir, virginal_state)
# List; ensure the shelf is listed
@@ -124,11 +124,11 @@ def shelve_unshelve_verify(sbox, modifie
[r'foo\s*version \d+.*',
r' ',
])
- svntest.actions.run_and_verify_svn(expected_output, [], 'shelves')
+ svntest.actions.run_and_verify_svn(expected_output, [], 'x-shelves')
# Unshelve; check the original modifications are here again
svntest.actions.run_and_verify_svn(None, [],
- 'unshelve', 'foo')
+ 'x-unshelve', 'foo')
check_wc_state(wc_dir, modified_state)
#----------------------------------------------------------------------
@@ -273,14 +273,14 @@ def save_revert_restore(sbox, modifier1,
# Save a checkpoint; check nothing changed
svntest.actions.run_and_verify_svn(None, [],
- 'shelf-save', 'foo')
+ 'x-shelf-save', 'foo')
check_wc_state(wc_dir, modified_state1)
# Modify again; remember the state; save a checkpoint
modifier2(sbox)
modified_state2 = get_wc_state(wc_dir)
svntest.actions.run_and_verify_svn(None, [],
- 'shelf-save', 'foo')
+ 'x-shelf-save', 'foo')
check_wc_state(wc_dir, modified_state2)
# Revert
@@ -290,7 +290,7 @@ def save_revert_restore(sbox, modifier1,
# Restore; check the original modifications are here again
svntest.actions.run_and_verify_svn(None, [],
- 'unshelve', 'foo', '1')
+ 'x-unshelve', 'foo', '1')
check_wc_state(wc_dir, modified_state1)
os.chdir(was_cwd)
@@ -351,7 +351,7 @@ def unshelve_refuses_if_conflicts(sbox):
# Shelve; check there are no longer any local mods
svntest.actions.run_and_verify_svn(None, [],
- 'shelve', 'foo')
+ 'x-shelve', 'foo')
check_wc_state(wc_dir, initial_state)
# Make a different local mod that will conflict with the shelf
@@ -360,7 +360,7 @@ def unshelve_refuses_if_conflicts(sbox):
# Try to unshelve; check it fails with an error about a conflict
svntest.actions.run_and_verify_svn(None, '.*[Cc]onflict.*',
- 'unshelve', 'foo')
+ 'x-unshelve', 'foo')
# Check nothing changed in the attempt
check_wc_state(wc_dir, modified_state2)
@@ -462,13 +462,13 @@ def shelve_with_log_message(sbox):
sbox.simple_add_text('New file', 'f')
log_message = 'Log message for foo'
svntest.actions.run_and_verify_svn(None, [],
- 'shelve', 'foo', '-m', log_message)
+ 'x-shelve', 'foo', '-m', log_message)
expected_output = svntest.verify.RegexListOutput(
['foo .*',
' ' + log_message
])
svntest.actions.run_and_verify_svn(expected_output, [],
- 'shelf-list')
+ 'x-shelf-list')
os.chdir(was_cwd)
@@ -518,7 +518,7 @@ def shelf_status(sbox):
run_and_verify_status(sbox.wc_dir, expected_status)
svntest.actions.run_and_verify_svn(None, [],
- 'shelve', 'foo')
+ 'x-shelve', 'foo')
run_and_verify_shelf_status(sbox.wc_dir, expected_status, shelf='foo')
os.chdir(was_cwd)
@@ -603,17 +603,17 @@ def list_shelves(sbox):
# an empty list
svntest.actions.run_and_verify_svn([], [],
- 'shelf-list', '-q')
+ 'x-shelf-list', '-q')
# make two shelves
sbox.simple_append('A/mu', 'appended mu text')
svntest.actions.run_and_verify_svn(None, [],
- 'shelf-save', 'foo')
+ 'x-shelf-save', 'foo')
sbox.simple_append('A/mu', 'appended more text')
svntest.actions.run_and_verify_svn(None, [],
- 'shelf-save', 'foo', '-m', 'log msg')
+ 'x-shelf-save', 'foo', '-m', 'log msg')
svntest.actions.run_and_verify_svn(None, [],
- 'shelf-save', 'bar', '-m', 'log msg')
+ 'x-shelf-save', 'bar', '-m', 'log msg')
# We don't check for time-ordering of the shelves. If we want to do so, we
# would need to sleep for timestamps to differ, between creating them.
@@ -621,7 +621,7 @@ def list_shelves(sbox):
# a quiet list
expected_out = svntest.verify.UnorderedRegexListOutput(['foo', 'bar'])
svntest.actions.run_and_verify_svn(expected_out, [],
- 'shelf-list', '-q')
+ 'x-shelf-list', '-q')
# a detailed list
expected_out = svntest.verify.UnorderedRegexListOutput(['foo .* 1 path.*',
@@ -629,7 +629,7 @@ def list_shelves(sbox):
'bar .* 1 path.*',
' log msg'])
svntest.actions.run_and_verify_svn(expected_out, [],
- 'shelf-list')
+ 'x-shelf-list')
os.chdir(was_cwd)
@@ -668,7 +668,7 @@ def refuse_to_shelve_conflict(sbox):
r' > not shelved'])
svntest.actions.run_and_verify_svn(expected_out,
'.* 1 path could not be shelved',
- 'shelf-save', 'foo')
+ 'x-shelf-save', 'foo')
os.chdir(was_cwd)
@@ -695,7 +695,7 @@ def unshelve_with_merge(sbox, setup, mod
# Shelve; check there are no longer any modifications
svntest.actions.run_and_verify_svn(None, [],
- 'shelve', 'foo')
+ 'x-shelve', 'foo')
check_wc_state(wc_dir, initial_state)
# Make a different change, with which we shall merge
@@ -705,7 +705,7 @@ def unshelve_with_merge(sbox, setup, mod
# Unshelve; check the expected result of the merge
svntest.actions.run_and_verify_svn(None, [],
- 'unshelve', 'foo')
+ 'x-unshelve', 'foo')
tweak_expected_state(modified_state)
check_wc_state(wc_dir, modified_state)
@@ -892,7 +892,7 @@ def run_and_verify_shelf_diff_summarize(
exit_code, output, errput = svntest.actions.run_and_verify_svn(
None, [],
- 'shelf-diff', '--summarize', shelf, *args)
+ 'x-shelf-diff', '--summarize', shelf, *args)
actual = svntest.tree.build_tree_from_diff_summarize(output)
@@ -930,7 +930,7 @@ def shelf_diff_simple(sbox):
modified_state = get_wc_state(wc_dir)
svntest.actions.run_and_verify_svn(None, [],
- 'shelf-save', 'foo')
+ 'x-shelf-save', 'foo')
# basic svn-style diff
expected_output = make_diff_header('A/mu', 'revision 2', 'working copy') + [
@@ -940,7 +940,7 @@ def shelf_diff_simple(sbox):
] + make_diff_prop_header('A/mu') \
+ make_diff_prop_modified('p1', 'v', 'changed')
svntest.actions.run_and_verify_svn(expected_output, [],
- 'shelf-diff', 'foo')
+ 'x-shelf-diff', 'foo')
# basic summary diff
expected_diff = svntest.wc.State(wc_dir, {
Modified: subversion/branches/java10-compat/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/branches/java10-compat/subversion/tests/cmdline/svntest/main.py?rev=1841179&r1=1841178&r2=1841179&view=diff
==============================================================================
--- subversion/branches/java10-compat/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/branches/java10-compat/subversion/tests/cmdline/svntest/main.py Tue Sep 18 01:50:50 2018
@@ -56,7 +56,7 @@ import svntest
from svntest import Failure
from svntest import Skip
-SVN_VER_MINOR = 11
+SVN_VER_MINOR = 12
######################################################################
#
Modified: subversion/branches/java10-compat/subversion/tests/libsvn_client/conflicts-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/java10-compat/subversion/tests/libsvn_client/conflicts-test.c?rev=1841179&r1=1841178&r2=1841179&view=diff
==============================================================================
--- subversion/branches/java10-compat/subversion/tests/libsvn_client/conflicts-test.c (original)
+++ subversion/branches/java10-compat/subversion/tests/libsvn_client/conflicts-test.c Tue Sep 18 01:50:50 2018
@@ -5700,6 +5700,185 @@ test_cherry_pick_post_move_edit_dir(cons
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_local_missing_abiguous_moves(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ svn_test__sandbox_t *b = apr_palloc(pool, sizeof(*b));
+ svn_opt_revision_t opt_rev;
+ svn_client_ctx_t *ctx;
+ svn_client_conflict_t *conflict;
+ apr_array_header_t *options;
+ svn_client_conflict_option_t *option;
+ apr_array_header_t *possible_moved_to_repos_relpaths;
+ apr_array_header_t *possible_moved_to_abspaths;
+ struct status_baton sb;
+ struct svn_client_status_t *status;
+ svn_stringbuf_t *buf;
+
+ SVN_ERR(svn_test__sandbox_create(b, "local_missing_ambiguous_moves", opts,
+ pool));
+
+ SVN_ERR(sbox_add_and_commit_greek_tree(b)); /* r1 */
+
+ /* Create a copy of node "A" (the "trunk") to "A1" (the "branch"). */
+ SVN_ERR(sbox_wc_copy(b, "A", "A1"));
+ SVN_ERR(sbox_wc_commit(b, "")); /* r2 */
+
+ SVN_ERR(sbox_wc_update(b, "", SVN_INVALID_REVNUM));
+ /* Copy a file across branch boundaries (gives ambiguous WC targets later). */
+ SVN_ERR(sbox_wc_copy(b, "A/mu", "A1/mu-copied-from-A"));
+ /* Create an ambiguous move with the "trunk". */
+ SVN_ERR(sbox_wc_copy(b, "A/mu", "A/mu-copied"));
+ SVN_ERR(sbox_wc_move(b, "A/mu", "A/mu-moved"));
+ SVN_ERR(sbox_wc_commit(b, "")); /* r3 */
+
+ /* Modify the moved file on the "branch". */
+ SVN_ERR(sbox_file_write(b, "A1/mu", "Modified content." APR_EOL_STR));
+ SVN_ERR(sbox_wc_commit(b, "")); /* r4 */
+ SVN_ERR(sbox_wc_update(b, "", SVN_INVALID_REVNUM));
+
+ /* Merge "A1" ("branch") into "A" ("trunk"). */
+ opt_rev.kind = svn_opt_revision_head;
+ opt_rev.value.number = SVN_INVALID_REVNUM;
+ SVN_ERR(svn_test__create_client_ctx(&ctx, b, pool));
+ SVN_ERR(svn_client_merge_peg5(svn_path_url_add_component2(b->repos_url, "A1",
+ pool),
+ NULL, &opt_rev, sbox_wc_path(b, "A"),
+ svn_depth_infinity,
+ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
+ NULL, ctx, pool));
+
+ SVN_ERR(svn_client_conflict_get(&conflict, sbox_wc_path(b, "A/mu"),
+ ctx, b->pool, b->pool));
+ {
+ svn_client_conflict_option_id_t expected_opts[] = {
+ svn_client_conflict_option_postpone,
+ svn_client_conflict_option_accept_current_wc_state,
+ -1 /* end of list */
+ };
+ SVN_ERR(assert_tree_conflict_options(conflict, ctx, expected_opts,
+ b->pool));
+ }
+ SVN_ERR(svn_client_conflict_tree_get_details(conflict, ctx, b->pool));
+ {
+ svn_client_conflict_option_id_t expected_opts[] = {
+ svn_client_conflict_option_postpone,
+ svn_client_conflict_option_accept_current_wc_state,
+ svn_client_conflict_option_local_move_file_text_merge,
+ -1 /* end of list */
+ };
+ SVN_ERR(assert_tree_conflict_options(conflict, ctx, expected_opts,
+ b->pool));
+ }
+
+ SVN_ERR(svn_client_conflict_tree_get_resolution_options(&options, conflict,
+ ctx, b->pool,
+ b->pool));
+ option = svn_client_conflict_option_find_by_id(
+ options, svn_client_conflict_option_local_move_file_text_merge);
+ SVN_TEST_ASSERT(option != NULL);
+
+ /*
+ * Possible repository destinations for moved-away 'A/mu' are:
+ * (1): '^/A/mu-copied'
+ * (2): '^/A/mu-moved'
+ * (3): '^/A1/mu-copied-from-A'
+ */
+ SVN_ERR(svn_client_conflict_option_get_moved_to_repos_relpath_candidates(
+ &possible_moved_to_repos_relpaths, option, b->pool, b->pool));
+ SVN_TEST_INT_ASSERT(possible_moved_to_repos_relpaths->nelts, 3);
+ SVN_TEST_STRING_ASSERT(
+ APR_ARRAY_IDX(possible_moved_to_repos_relpaths, 0, const char *),
+ "A/mu-copied");
+ SVN_TEST_STRING_ASSERT(
+ APR_ARRAY_IDX(possible_moved_to_repos_relpaths, 1, const char *),
+ "A/mu-moved");
+ SVN_TEST_STRING_ASSERT(
+ APR_ARRAY_IDX(possible_moved_to_repos_relpaths, 2, const char *),
+ "A1/mu-copied-from-A");
+
+ /* Move target for "A/mu-copied" (selected by default) is not ambiguous. */
+ SVN_ERR(svn_client_conflict_option_get_moved_to_abspath_candidates(
+ &possible_moved_to_abspaths, option, b->pool, b->pool));
+ SVN_TEST_INT_ASSERT(possible_moved_to_abspaths->nelts, 1);
+ SVN_TEST_STRING_ASSERT(
+ APR_ARRAY_IDX(possible_moved_to_abspaths, 0, const char *),
+ sbox_wc_path(b, "A/mu-copied"));
+
+ /* Move target for "A/mu-moved" is not ambiguous. */
+ SVN_ERR(svn_client_conflict_option_set_moved_to_repos_relpath(option, 1,
+ ctx, b->pool));
+ SVN_ERR(svn_client_conflict_option_get_moved_to_abspath_candidates(
+ &possible_moved_to_abspaths, option, b->pool, b->pool));
+ SVN_TEST_INT_ASSERT(possible_moved_to_abspaths->nelts, 1);
+ SVN_TEST_STRING_ASSERT(
+ APR_ARRAY_IDX(possible_moved_to_abspaths, 0, const char *),
+ sbox_wc_path(b, "A/mu-moved"));
+
+ /* Select move target "A1/mu-copied-from-A". */
+ SVN_ERR(svn_client_conflict_option_set_moved_to_repos_relpath(option, 2,
+ ctx, b->pool));
+
+ /*
+ * Possible working copy destinations for moved-away 'A/mu' are:
+ * (1): 'A/mu-copied-from-A'
+ * (2): 'A1/mu-copied-from-A'
+ */
+ SVN_ERR(svn_client_conflict_option_get_moved_to_abspath_candidates(
+ &possible_moved_to_abspaths, option, b->pool, b->pool));
+ SVN_TEST_INT_ASSERT(possible_moved_to_abspaths->nelts, 2);
+ SVN_TEST_STRING_ASSERT(
+ APR_ARRAY_IDX(possible_moved_to_abspaths, 0, const char *),
+ sbox_wc_path(b, "A/mu-copied-from-A"));
+ SVN_TEST_STRING_ASSERT(
+ APR_ARRAY_IDX(possible_moved_to_abspaths, 1, const char *),
+ sbox_wc_path(b, "A1/mu-copied-from-A"));
+
+ /* Select move target "A/mu-moved". */
+ SVN_ERR(svn_client_conflict_option_set_moved_to_repos_relpath(option, 1,
+ ctx, b->pool));
+
+ /* Resolve the tree conflict. */
+ SVN_ERR(svn_client_conflict_tree_resolve_by_id(
+ conflict,
+ svn_client_conflict_option_local_move_file_text_merge, ctx,
+ b->pool));
+
+ /* The node "A/mu" should no longer exist. */
+ SVN_TEST_ASSERT_ERROR(svn_client_conflict_get(&conflict,
+ sbox_wc_path(b, "A/mu"),
+ ctx, pool, pool),
+ SVN_ERR_WC_PATH_NOT_FOUND);
+
+ /* Ensure that the merged file has the expected status. */
+ opt_rev.kind = svn_opt_revision_working;
+ sb.result_pool = b->pool;
+ SVN_ERR(svn_client_status6(NULL, ctx, sbox_wc_path(b, "A/mu-moved"),
+ &opt_rev, svn_depth_unknown, TRUE, TRUE,
+ TRUE, TRUE, FALSE, TRUE, NULL,
+ status_func, &sb, b->pool));
+ status = sb.status;
+ SVN_TEST_ASSERT(status->kind == svn_node_file);
+ SVN_TEST_ASSERT(status->versioned);
+ SVN_TEST_ASSERT(!status->conflicted);
+ SVN_TEST_ASSERT(status->node_status == svn_wc_status_modified);
+ SVN_TEST_ASSERT(status->text_status == svn_wc_status_modified);
+ SVN_TEST_ASSERT(status->prop_status == svn_wc_status_none);
+ SVN_TEST_ASSERT(!status->copied);
+ SVN_TEST_ASSERT(!status->switched);
+ SVN_TEST_ASSERT(!status->file_external);
+ SVN_TEST_ASSERT(status->moved_from_abspath == NULL);
+ SVN_TEST_ASSERT(status->moved_to_abspath == NULL);
+
+ /* And it should have expected contents. */
+ SVN_ERR(svn_stringbuf_from_file2(&buf, sbox_wc_path(b, "A/mu-moved"),
+ pool));
+ SVN_TEST_STRING_ASSERT(buf->data, "Modified content." APR_EOL_STR);
+
+ return SVN_NO_ERROR;
+}
+
/* ========================================================================== */
@@ -5798,6 +5977,8 @@ static struct svn_test_descriptor_t test
"do not suggest unrelated move targets (#4766)"),
SVN_TEST_OPTS_PASS(test_cherry_pick_post_move_edit_dir,
"cherry-pick edit from moved directory"),
+ SVN_TEST_OPTS_PASS(test_local_missing_abiguous_moves,
+ "local missing conflict with ambiguous moves"),
SVN_TEST_NULL
};
Modified: subversion/branches/java10-compat/tools/client-side/bash_completion
URL: http://svn.apache.org/viewvc/subversion/branches/java10-compat/tools/client-side/bash_completion?rev=1841179&r1=1841178&r2=1841179&view=diff
==============================================================================
--- subversion/branches/java10-compat/tools/client-side/bash_completion (original)
+++ subversion/branches/java10-compat/tools/client-side/bash_completion Tue Sep 18 01:50:50 2018
@@ -248,8 +248,8 @@ _svn()
cmds="$cmds patch propdel pdel propedit pedit propget pget proplist"
cmds="$cmds plist propset pset relocate resolve resolved revert status"
cmds="$cmds switch unlock update upgrade"
- cmds="$cmds shelf-list-by-paths shelf-diff shelf-drop shelf-list shelf-log shelf-save"
- cmds="$cmds shelve shelves unshelve"
+ cmds="$cmds x-shelf-diff x-shelf-drop x-shelf-list x-shelf-list-by-paths"
+ cmds="$cmds x-shelf-log x-shelf-save x-shelve x-shelves x-unshelve"
# help options have a strange command status...
local helpOpts='--help -h'
@@ -1024,34 +1024,34 @@ _svn()
upgrade)
cmdOpts="$qOpts $pOpts"
;;
- shelf-list-by-paths)
+ x-shelf-list-by-paths)
cmdOpts="$pOpts"
;;
- shelf-diff)
+ x-shelf-diff)
cmdOpts="$pOpts --summarize"
;;
- shelf-drop)
+ x-shelf-drop)
cmdOpts="$pOpts"
;;
- shelf-list|shelves)
+ x-shelf-list|x-shelves)
cmdOpts="$qOpts $pOpts"
;;
- shelf-log)
+ x-shelf-log)
cmdOpts="$qOpts $pOpts"
;;
- shelf-save)
+ x-shelf-save)
cmdOpts="--dry-run \
--depth --targets $cOpts \
$mOpts \
$qOpts $pOpts"
;;
- shelve)
+ x-shelve)
cmdOpts="--keep-local --dry-run \
--depth --targets $cOpts \
$mOpts \
$qOpts $pOpts"
;;
- unshelve)
+ x-unshelve)
cmdOpts="--drop --dry-run \
$qOpts $pOpts"
;;
Modified: subversion/branches/java10-compat/tools/dist/release.py
URL: http://svn.apache.org/viewvc/subversion/branches/java10-compat/tools/dist/release.py?rev=1841179&r1=1841178&r2=1841179&view=diff
==============================================================================
--- subversion/branches/java10-compat/tools/dist/release.py (original)
+++ subversion/branches/java10-compat/tools/dist/release.py Tue Sep 18 01:50:50 2018
@@ -75,6 +75,14 @@ tool_versions = {
'swig' : ['3.0.12',
'7cf9f447ae7ed1c51722efc45e7f14418d15d7a1e143ac9f09a668999f4fc94d'],
},
+ '1.11' : {
+ 'autoconf' : ['2.69',
+ '954bd69b391edc12d6a4a51a2dd1476543da5c6bbf05a95b59dc0dd6fd4c2969'],
+ 'libtool' : ['2.4.6',
+ 'e3bd4d5d3d025a36c21dd6af7ea818a2afcd4dfc1ea5a17b39d7854bcd0c06e3'],
+ 'swig' : ['3.0.12',
+ '7cf9f447ae7ed1c51722efc45e7f14418d15d7a1e143ac9f09a668999f4fc94d'],
+ },
'1.10' : {
'autoconf' : ['2.69',
'954bd69b391edc12d6a4a51a2dd1476543da5c6bbf05a95b59dc0dd6fd4c2969'],
@@ -103,7 +111,9 @@ tool_versions = {
# The version that is our current recommended release
# ### TODO: derive this from svn_version.h; see ../../build/getversion.py
-recommended_release = '1.10'
+recommended_release = '1.11'
+# For clean-dist, a whitelist of artifacts to keep, by version.
+supported_release_lines = frozenset({"1.9", "1.10", "1.11", "1.12"})
# Some constants
repos = 'https://svn.apache.org/repos/asf/subversion'
@@ -906,15 +916,15 @@ def clean_dist(args):
filenames = stdout.split('\n')
filenames = filter(lambda x: x.startswith('subversion-'), filenames)
versions = set(map(Version, filenames))
- minor_lines = set(map(minor, versions))
to_keep = set()
- # Keep 3 minor lines: 1.10.0-alpha3, 1.9.7, 1.8.19.
# TODO: When we release 1.A.0 GA we'll have to manually remove 1.(A-2).* artifacts.
- for recent_line in sorted(minor_lines, reverse=True)[:3]:
- to_keep.add(max(
+ for line_to_keep in [minor(Version(x + ".0")) for x in supported_release_lines]:
+ candidates = list(
x for x in versions
- if minor(x) == recent_line
- ))
+ if minor(x) == line_to_keep
+ )
+ if candidates:
+ to_keep.add(max(candidates))
for i in sorted(to_keep):
logging.info("Saving release '%s'", i)