You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by cm...@apache.org on 2010/09/17 18:00:12 UTC
svn commit: r998183 - in /subversion/trunk/subversion: libsvn_client/
tests/cmdline/ tests/cmdline/svntest/
Author: cmpilato
Date: Fri Sep 17 16:00:11 2010
New Revision: 998183
URL: http://svn.apache.org/viewvc?rev=998183&view=rev
Log:
First step in purging the copyfrom-args-over-update client-side code:
Stop asking the server to send that stuff. ("Stop it!") This also
includes the removal of tests which appear to be written specifically
to test this now-removed functionality.
(This task is tracked in issue #3711.)
* subversion/libsvn_client/client.h
(svn_client__update_internal): Lose 'send_copyfrom_args' parameter.
* subversion/libsvn_client/update.c
(update_internal): Lose 'send_copyfrom_args' parameter. Always pass
FALSE for that parameter to svn_ra_do_update2().
(svn_client__update_internal): Lose 'send_copyfrom_args' parameter.
Update call to update_internal().
(svn_client_update3): Update call to svn_client__update_internal().
* subversion/libsvn_client/checkout.c
(initialize_area, svn_client__checkout_internal): Update call to
svn_client__update_internal().
* subversion/libsvn_client/externals.c
(switch_dir_external): Update call to svn_client__update_internal().
* subversion/tests/cmdline/svntest/main.py
(server_sends_copyfrom_on_update): Delete as unused.
* subversion/tests/cmdline/update_tests.py
(): Don't import server_sends_copyfrom_on_update.
(update_handles_copyfrom, copyfrom_degrades_gracefully,
update_handles_copyfrom_with_txdeltas, add_moved_file_has_props,
update_moves_and_modifies_an_edited_file, add_moved_file_has_props2):
Remove as irrelevant (now that updates don't do copyfrom stuff).
(test_lists): Lose references to deleted tests.
* subversion/tests/cmdline/copy_tests.py
(): Don't import server_sends_copyfrom_on_update.
(locate_wrong_origin, replaced_local_source_for_incoming_copy):
(test_lists): Lose references to deleted tests.
* subversion/tests/cmdline/resolved_tests.py
(): Don't import server_sends_copyfrom_on_update.
Modified:
subversion/trunk/subversion/libsvn_client/checkout.c
subversion/trunk/subversion/libsvn_client/client.h
subversion/trunk/subversion/libsvn_client/externals.c
subversion/trunk/subversion/libsvn_client/update.c
subversion/trunk/subversion/tests/cmdline/copy_tests.py
subversion/trunk/subversion/tests/cmdline/resolved_tests.py
subversion/trunk/subversion/tests/cmdline/svntest/main.py
subversion/trunk/subversion/tests/cmdline/update_tests.py
Modified: subversion/trunk/subversion/libsvn_client/checkout.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/checkout.c?rev=998183&r1=998182&r2=998183&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/checkout.c (original)
+++ subversion/trunk/subversion/libsvn_client/checkout.c Fri Sep 17 16:00:11 2010
@@ -71,10 +71,11 @@ initialize_area(svn_revnum_t *result_rev
repos_root, uuid, revnum, depth, pool));
/* Have update fix the incompleteness. */
return svn_error_return(svn_client__update_internal(result_rev, local_abspath,
- revision, depth, TRUE, ignore_externals,
- allow_unver_obstructions,
- use_sleep, FALSE, innercheckout,
- ctx, pool));
+ revision, depth, TRUE,
+ ignore_externals,
+ allow_unver_obstructions,
+ use_sleep, innercheckout,
+ ctx, pool));
}
@@ -219,7 +220,7 @@ svn_client__checkout_internal(svn_revnum
revision, depth, TRUE,
ignore_externals,
allow_unver_obstructions,
- use_sleep, FALSE, innercheckout,
+ use_sleep, innercheckout,
ctx, pool);
}
else
Modified: subversion/trunk/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/client.h?rev=998183&r1=998182&r2=998183&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/client.h (original)
+++ subversion/trunk/subversion/libsvn_client/client.h Fri Sep 17 16:00:11 2010
@@ -490,12 +490,6 @@ svn_client__make_local_parents(const cha
that obstruct items added from the repos are tolerated; if FALSE,
these obstructions cause the update to fail.
- If SEND_COPYFROM_ARGS is true, then request that the server not
- send file contents when adding files that have been created by
- explicit copying; instead, just send copyfrom-args to add_file(),
- and possibly follow up with an apply_textdelta() against the copied
- file.
-
If INNERUPDATE is true, no anchor check is performed on the update target.
*/
svn_error_t *
@@ -507,7 +501,6 @@ svn_client__update_internal(svn_revnum_t
svn_boolean_t ignore_externals,
svn_boolean_t allow_unver_obstructions,
svn_boolean_t *timestamp_sleep,
- svn_boolean_t send_copyfrom_args,
svn_boolean_t innerupdate,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
Modified: subversion/trunk/subversion/libsvn_client/externals.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/externals.c?rev=998183&r1=998182&r2=998183&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/externals.c (original)
+++ subversion/trunk/subversion/libsvn_client/externals.c Fri Sep 17 16:00:11 2010
@@ -205,7 +205,7 @@ switch_dir_external(const char *path,
revision, svn_depth_unknown,
FALSE, FALSE, FALSE,
timestamp_sleep, TRUE,
- TRUE, ctx, subpool));
+ ctx, subpool));
svn_pool_destroy(subpool);
return SVN_NO_ERROR;
}
Modified: subversion/trunk/subversion/libsvn_client/update.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/update.c?rev=998183&r1=998182&r2=998183&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/update.c (original)
+++ subversion/trunk/subversion/libsvn_client/update.c Fri Sep 17 16:00:11 2010
@@ -98,7 +98,6 @@ update_internal(svn_revnum_t *result_rev
svn_boolean_t ignore_externals,
svn_boolean_t allow_unver_obstructions,
svn_boolean_t *timestamp_sleep,
- svn_boolean_t send_copyfrom_args,
svn_boolean_t innerupdate,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
@@ -244,12 +243,8 @@ update_internal(svn_revnum_t *result_rev
/* Tell RA to do an update of URL+TARGET to REVISION; if we pass an
invalid revnum, that means RA will use the latest revision. */
- SVN_ERR(svn_ra_do_update2(ra_session,
- &reporter, &report_baton,
- revnum,
- target,
- depth,
- send_copyfrom_args,
+ SVN_ERR(svn_ra_do_update2(ra_session, &reporter, &report_baton,
+ revnum, target, depth, FALSE,
update_editor, update_edit_baton, pool));
SVN_ERR(svn_ra_has_capability(ra_session, &server_supports_depth,
@@ -321,7 +316,6 @@ svn_client__update_internal(svn_revnum_t
svn_boolean_t ignore_externals,
svn_boolean_t allow_unver_obstructions,
svn_boolean_t *timestamp_sleep,
- svn_boolean_t send_copyfrom_args,
svn_boolean_t innerupdate,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
@@ -343,8 +337,7 @@ svn_client__update_internal(svn_revnum_t
err = update_internal(result_rev, local_abspath, anchor_abspath,
revision, depth, depth_is_sticky,
ignore_externals, allow_unver_obstructions,
- timestamp_sleep, send_copyfrom_args,
- innerupdate, ctx, pool);
+ timestamp_sleep, innerupdate, ctx, pool);
err = svn_error_compose_create(
err,
@@ -398,7 +391,7 @@ svn_client_update3(apr_array_header_t **
revision, depth, depth_is_sticky,
ignore_externals,
allow_unver_obstructions,
- &sleep, TRUE, FALSE, ctx, subpool);
+ &sleep, FALSE, ctx, subpool);
if (err && err->apr_err != SVN_ERR_WC_NOT_WORKING_COPY)
{
Modified: subversion/trunk/subversion/tests/cmdline/copy_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/copy_tests.py?rev=998183&r1=998182&r2=998183&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/copy_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/copy_tests.py Fri Sep 17 16:00:11 2010
@@ -3799,106 +3799,6 @@ def allow_unversioned_parent_for_copy_sr
wc2_dir,
copy_to_path)
-
-#----------------------------------------------------------------------
-# Issue #2986
-def replaced_local_source_for_incoming_copy(sbox):
- "update receives copy, but local source is replaced"
- sbox.build()
- wc_dir = sbox.wc_dir
- other_wc_dir = wc_dir + '-other'
-
- # These paths are for regular content testing.
- tau_path = os.path.join(wc_dir, 'A', 'D', 'G', 'tau')
- rho_url = sbox.repo_url + '/A/D/G/rho'
- pi_url = sbox.repo_url + '/A/D/G/pi'
- other_G_path = os.path.join(other_wc_dir, 'A', 'D', 'G')
- other_rho_path = os.path.join(other_G_path, 'rho')
-
- # These paths are for properties testing.
- H_path = os.path.join(wc_dir, 'A', 'D', 'H')
- chi_path = os.path.join(H_path, 'chi')
- psi_path = os.path.join(H_path, 'psi')
- omega_path = os.path.join(H_path, 'omega')
- psi_url = sbox.repo_url + '/A/D/H/psi'
- chi_url = sbox.repo_url + '/A/D/H/chi'
- other_H_path = os.path.join(other_wc_dir, 'A', 'D', 'H')
- other_psi_path = os.path.join(other_H_path, 'psi')
- other_omega_path = os.path.join(other_H_path, 'omega')
-
- # Prepare for properties testing. If the regular content bug
- # reappears, we still want to be able to test for the property bug
- # independently. That means making two files have the same content,
- # to avoid encountering the checksum error that might reappear in a
- # regression. So here we do that, as well as set the marker
- # property that we'll check for later. The reason to set the marker
- # property in this commit, rather than later, is so that we pass the
- # conditional in update_editor.c:locate_copyfrom() that compares the
- # revisions.
- svntest.main.file_write(chi_path, "Same contents for two files.\n")
- svntest.main.file_write(psi_path, "Same contents for two files.\n")
- svntest.actions.run_and_verify_svn(None, None, [], 'propset',
- 'chi-prop', 'chi-val', chi_path)
- svntest.actions.run_and_verify_svn(None, None, [], 'ci',
- '-m', 'identicalize contents', wc_dir);
- svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
-
- # Make the duplicate working copy.
- svntest.main.safe_rmtree(other_wc_dir)
- shutil.copytree(wc_dir, other_wc_dir)
-
- try:
- ## Test properties. ##
-
- # Commit a replacement from the first working copy.
- svntest.actions.run_and_verify_svn(None, None, [], 'rm',
- omega_path);
- svntest.actions.run_and_verify_svn(None, None, [], 'cp',
- psi_url, omega_path);
- svntest.actions.run_and_verify_svn(None, None, [], 'ci',
- '-m', 'a propset and a copy', wc_dir);
-
- # Now schedule a replacement in the second working copy, then update
- # to receive the replacement from the first working copy, with the
- # source being the now-scheduled-replace file.
- svntest.actions.run_and_verify_svn(None, None, [], 'rm',
- other_psi_path);
- svntest.actions.run_and_verify_svn(None, None, [], 'cp',
- chi_url, other_psi_path);
- svntest.actions.run_and_verify_svn(None, None, [], 'up',
- other_wc_dir)
- exit_code, output, errput = svntest.main.run_svn(None, 'proplist',
- '-v', other_omega_path)
- if len(errput):
- raise svntest.Failure("unexpected error output: %s" % errput)
- if len(output):
- raise svntest.Failure("unexpected properties found on '%s': %s"
- % (other_omega_path, output))
-
- ## Test regular content. ##
-
- # Commit a replacement from the first working copy.
- svntest.actions.run_and_verify_svn(None, None, [], 'rm',
- tau_path);
- svntest.actions.run_and_verify_svn(None, None, [], 'cp',
- rho_url, tau_path);
- svntest.actions.run_and_verify_svn(None, None, [], 'ci',
- '-m', 'copy rho to tau', wc_dir);
-
- # Now schedule a replacement in the second working copy, then update
- # to receive the replacement from the first working copy, with the
- # source being the now-scheduled-replace file.
- svntest.actions.run_and_verify_svn(None, None, [], 'rm',
- other_rho_path);
- svntest.actions.run_and_verify_svn(None, None, [], 'cp',
- pi_url, other_rho_path);
- svntest.actions.run_and_verify_svn(None, None, [], 'up',
- other_wc_dir)
-
- finally:
- svntest.main.safe_rmtree(other_wc_dir)
-
-
def unneeded_parents(sbox):
"svn cp --parents FILE_URL DIR_URL"
@@ -4771,60 +4671,6 @@ def move_added_nodes(sbox):
expected_status.add({'X/Z' : Item(status='A ', wc_rev='0')})
svntest.actions.run_and_verify_status(sbox.wc_dir, expected_status)
-def locate_wrong_origin(sbox):
- "update editor locates invalid file source"
-
- sbox.build()
-
- iota = os.path.join(sbox.wc_dir, 'iota')
- gamma = os.path.join(sbox.wc_dir, 'A/D/gamma')
-
- D1 = os.path.join(sbox.wc_dir, 'D1')
- D2 = os.path.join(sbox.wc_dir, 'D2')
-
- main.run_svn(None, 'mkdir', D1, D2)
- main.run_svn(None, 'cp', iota, os.path.join(D1, 'iota'))
- main.run_svn(None, 'cp', gamma, os.path.join(D2, 'iota'))
-
- main.run_svn(None, 'ci', sbox.wc_dir, '-m', 'Add 2*iotas in r2')
- main.run_svn(None, 'rm', D1)
-
- main.run_svn(None, 'ci', sbox.wc_dir, '-m', 'Why?')
-
- main.run_svn(None, 'cp', D2, D1)
- main.run_svn(None, 'ci', sbox.wc_dir, '-m', 'Replace one iota')
-
- # <= 1.6 needs a new checkout here to reproduce, but not since r961831.
- # so we just perform an update
- main.run_svn(None, 'up', sbox.wc_dir)
-
- main.run_svn(None, 'cp', sbox.repo_url + '/D1/iota@2',
- sbox.repo_url + '/iobeta', '-m', 'Copy iota')
-
-
- expected_status = svntest.actions.get_virginal_state(sbox.wc_dir, 4)
- expected_status.add({
- 'D1' : Item(status=' ', wc_rev='4'),
- 'D1/iota' : Item(status=' ', wc_rev='4'),
- 'D2' : Item(status=' ', wc_rev='4'),
- 'D2/iota' : Item(status=' ', wc_rev='4'),
- })
- svntest.actions.run_and_verify_status(sbox.wc_dir, expected_status)
-
- # The next update receives an add_file('/D1/iota', 2), which it then tries
- # to locate in the local working copy. It finds a '/D1/iota' in the expected
- # place, with a last-changed revision of 2 and a local revision of HEAD-1
- #
- # locate_copyfrom identifies this file as correct because
- # * last-mod <= 2 and
- # * 2 <= REV
- #
- # Luckily close_file() receives an expected_checksum which makes us fail, or
- # we would have a completely broken working copy
-
- # So this gives a Checksum mismatch error.
- main.run_svn(None, 'up', sbox.wc_dir)
-
# This test currently fails, but should work ok once we move to single DB
def copy_over_deleted_dir(sbox):
"copy a directory over a deleted directory"
@@ -4910,7 +4756,6 @@ test_list = [ None,
copy_make_parents_repo_repo,
URI_encoded_repos_to_wc,
allow_unversioned_parent_for_copy_src,
- replaced_local_source_for_incoming_copy,
unneeded_parents,
double_parents_with_url,
copy_into_absent_dir,
@@ -4929,9 +4774,6 @@ test_list = [ None,
changed_data_should_match_checkout,
XFail(changed_dir_data_should_match_checkout),
move_added_nodes,
- # Serf needs a different testcase for this issue
- XFail(Skip(locate_wrong_origin,
- svntest.main.is_ra_type_dav_serf)),
copy_over_deleted_dir,
]
Modified: subversion/trunk/subversion/tests/cmdline/resolved_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/resolved_tests.py?rev=998183&r1=998182&r2=998183&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/resolved_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/resolved_tests.py Fri Sep 17 16:00:11 2010
@@ -37,8 +37,7 @@ SkipUnless = svntest.testcase.SkipUnless
XFail = svntest.testcase.XFail
Item = svntest.wc.StateItem
-from svntest.main import SVN_PROP_MERGEINFO, server_sends_copyfrom_on_update, \
- server_has_mergeinfo
+from svntest.main import SVN_PROP_MERGEINFO, server_has_mergeinfo
######################################################################
# Tests
Modified: subversion/trunk/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svntest/main.py?rev=998183&r1=998182&r2=998183&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svntest/main.py Fri Sep 17 16:00:11 2010
@@ -1060,9 +1060,6 @@ def server_has_mergeinfo():
def server_has_revprop_commit():
return options.server_minor_version >= 5
-def server_sends_copyfrom_on_update():
- return options.server_minor_version >= 5
-
def server_authz_has_aliases():
return options.server_minor_version >= 5
Modified: subversion/trunk/subversion/tests/cmdline/update_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/update_tests.py?rev=998183&r1=998182&r2=998183&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/update_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/update_tests.py Fri Sep 17 16:00:11 2010
@@ -40,8 +40,7 @@ SkipUnless = svntest.testcase.SkipUnless
XFail = svntest.testcase.XFail
Item = svntest.wc.StateItem
-from svntest.main import SVN_PROP_MERGEINFO, server_sends_copyfrom_on_update, \
- server_has_mergeinfo
+from svntest.main import SVN_PROP_MERGEINFO, server_has_mergeinfo
######################################################################
# Tests
@@ -3503,248 +3502,6 @@ def mergeinfo_update_elision(sbox):
#----------------------------------------------------------------------
-# If the update editor receives add_file(foo, copyfrom='blah'), it
-# should attempt to locate 'blah' in the wc, and then copy it into place.
-
-def update_handles_copyfrom(sbox):
- "update should make use of copyfrom args"
-
- sbox.build()
- wc_dir = sbox.wc_dir
-
- # Make a backup copy of the working copy.
- wc_backup = sbox.add_wc_path('backup')
- svntest.actions.duplicate_dir(wc_dir, wc_backup)
-
- # Copy 'rho' to 'glub'
- rho_path = os.path.join(wc_dir, 'A', 'D', 'G', 'rho')
- glub_path = os.path.join(wc_dir, 'A', 'D', 'G', 'glub')
- svntest.actions.run_and_verify_svn(None, None, [],
- 'copy', rho_path, glub_path)
-
- # Commit that change, creating r2.
- expected_output = svntest.wc.State(wc_dir, {
- 'A/D/G/glub' : Item(verb='Adding'),
- })
-
- expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
- expected_status.add({
- 'A/D/G/glub' : Item(status=' ', wc_rev=2),
- })
-
- svntest.actions.run_and_verify_commit(wc_dir, expected_output,
- expected_status, None, wc_dir)
-
- # Make a local edits to rho in the backup working copy - both text and props
- rho2_path = os.path.join(wc_backup, 'A', 'D', 'G', 'rho')
- svntest.main.file_append(rho2_path, "Some new text.\n")
- svntest.main.run_svn(None, 'propset', 'Kubla', 'Khan', rho2_path)
-
- # Now try updating our backup working copy: it should receive glub,
- # but with copyfrom args of rho@1, and thus copy the existing
- # (edited) rho to glub. In other words, both rho and glub should be
- # identical and contain the same local edits.
-
- expected_output = svntest.wc.State(wc_backup, { })
- expected_output = wc.State(wc_backup, {
- 'A/D/G/glub' : Item(status='A '), ### perhaps update should show 'A +' ??
- })
-
- expected_disk = svntest.main.greek_state.copy()
- expected_disk.tweak('A/D/G/rho',
- contents="This is the file 'rho'.\nSome new text.\n",
- props={'Kubla' : 'Khan'})
- expected_disk.add({
- 'A/D/G/glub' : Item("This is the file 'rho'.\nSome new text.\n",
- props={'Kubla' : 'Khan'})
- })
-
- expected_status = svntest.actions.get_virginal_state(wc_backup, 2)
- expected_status.tweak('A/D/G/rho', wc_rev=2, status='MM')
- expected_status.add({
- 'A/D/G/glub' : Item(status='MM', wc_rev=2),
- })
-
- svntest.actions.run_and_verify_update(wc_backup,
- expected_output,
- expected_disk,
- expected_status,
- check_props = True)
-
-#----------------------------------------------------------------------
-# if the update_editor receives add_file(copyfrom=...), and the
-# copyfrom_path simply isn't available in the working copy, it should
-# fall back to doing an RA request to fetch the file.
-
-def copyfrom_degrades_gracefully(sbox):
- "update degrades well if copyfrom_path unavailable"
-
- sbox.build()
- wc_dir = sbox.wc_dir
-
- # Make a backup copy of the working copy.
- wc_backup = sbox.add_wc_path('backup')
- svntest.actions.duplicate_dir(wc_dir, wc_backup)
-
- # Move 'alpha' to 'glub'
- alpha_path = os.path.join(wc_dir, 'A', 'B', 'E', 'alpha')
- glub_path = os.path.join(wc_dir, 'A', 'D', 'G', 'glub')
- svntest.actions.run_and_verify_svn(None, None, [],
- 'mv', alpha_path, glub_path)
-
- # Commit that change, creating r2.
- expected_output = svntest.wc.State(wc_dir, {
- 'A/B/E/alpha' : Item(verb='Deleting'),
- 'A/D/G/glub' : Item(verb='Adding'),
- })
-
- expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
- expected_status.add({
- 'A/D/G/glub' : Item(status=' ', wc_rev=2),
- })
- expected_status.remove('A/B/E/alpha')
-
- svntest.actions.run_and_verify_commit(wc_dir, expected_output,
- expected_status, None, wc_dir)
-
- # In the 2nd working copy, update just one side of the move -- so that
- # alpha gets deleted, but glub not yet added.
- E_path = os.path.join(wc_backup, 'A', 'B', 'E')
-
- expected_output = svntest.wc.State(E_path, {
- 'alpha' : Item(status='D '),
- })
-
- expected_disk = wc.State('', {
- 'beta' : wc.StateItem("This is the file 'beta'.\n"),
- })
-
- expected_status = svntest.wc.State(E_path, {
- '' : Item(status=' '),
- 'beta' : Item(status=' '),
- })
- expected_status.tweak(wc_rev=2)
-
- svntest.actions.run_and_verify_update(E_path,
- expected_output,
- expected_disk,
- expected_status)
-
- # Now update the entire working copy, which should cause an
- # add_file(glub, copyfrom_path=alpha)... except alpha is already gone.
- # Update editor should gracefully fetch it via RA request.
- expected_output = svntest.wc.State(wc_backup, { })
- expected_output = wc.State(wc_backup, {
- 'A/D/G/glub' : Item(status='A '),
- })
-
- expected_disk = svntest.main.greek_state.copy()
- expected_disk.remove('A/B/E/alpha')
- expected_disk.add({
- 'A/D/G/glub' : Item("This is the file 'alpha'.\n"),
- })
-
- expected_status = svntest.actions.get_virginal_state(wc_backup, 2)
- expected_status.remove('A/B/E/alpha')
- expected_status.add({
- 'A/D/G/glub' : Item(status=' ', wc_rev=2),
- })
-
- svntest.actions.run_and_verify_update(wc_backup,
- expected_output,
- expected_disk,
- expected_status)
-
-#----------------------------------------------------------------------
-# If the update editor receives add_file(foo, copyfrom='blah'), it
-# should attempt to locate 'blah' in the wc, and then copy it into
-# place. Furthermore, the new file should be able to receive
-# subsequent txdeltas coming from the server.
-
-def update_handles_copyfrom_with_txdeltas(sbox):
- "update uses copyfrom & accepts further txdeltas"
-
- sbox.build()
- wc_dir = sbox.wc_dir
-
- # Make a backup copy of the working copy.
- wc_backup = sbox.add_wc_path('backup')
- svntest.actions.duplicate_dir(wc_dir, wc_backup)
-
- # Copy 'rho' to 'glub'
- rho_path = os.path.join(wc_dir, 'A', 'D', 'G', 'rho')
- glub_path = os.path.join(wc_dir, 'A', 'D', 'G', 'glub')
- svntest.actions.run_and_verify_svn(None, None, [],
- 'copy', rho_path, glub_path)
-
- # Commit that change, creating r2.
- expected_output = svntest.wc.State(wc_dir, {
- 'A/D/G/glub' : Item(verb='Adding'),
- })
-
- expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
- expected_status.add({
- 'A/D/G/glub' : Item(status=' ', wc_rev=2),
- })
-
- svntest.actions.run_and_verify_commit(wc_dir, expected_output,
- expected_status, None, wc_dir)
-
- # Make additional edits to glub...
- svntest.main.file_append_binary(glub_path, "Some new text.\n")
- svntest.main.run_svn(None, 'propset', 'Kubla', 'Khan', glub_path)
-
- # Commit the changes, creating r3.
- expected_output = svntest.wc.State(wc_dir, {
- 'A/D/G/glub' : Item(verb='Sending'),
- })
-
- expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
- expected_status.add({
- 'A/D/G/glub' : Item(status=' ', wc_rev=3),
- })
-
- svntest.actions.run_and_verify_commit(wc_dir, expected_output,
- expected_status, None, wc_dir)
-
- # Make a local edit to rho in the backup working copy.
- rho2_path = os.path.join(wc_backup, 'A', 'D', 'G', 'rho')
- svntest.main.file_write(rho2_path,
- "New first line.\nThis is the file 'rho'.\n",
- "wb")
-
- # Now try updating our backup working copy: it should receive glub,
- # but with copyfrom args of rho@1, and thus copy the existing rho to
- # glub. Furthermore, it should then apply the extra r3 edits to the
- # copied file.
-
- expected_output = svntest.wc.State(wc_backup, { })
- expected_output = wc.State(wc_backup, {
- 'A/D/G/glub' : Item(status='A '), ### perhaps update should show 'A +' ??
- })
-
- expected_disk = svntest.main.greek_state.copy()
- expected_disk.tweak('A/D/G/rho',
- contents="New first line.\nThis is the file 'rho'.\n")
- expected_disk.add({
- 'A/D/G/glub' : Item("New first line.\nThis is the file 'rho'.\n"
- + "Some new text.\n",
- props={'Kubla' : 'Khan'})
- })
-
- expected_status = svntest.actions.get_virginal_state(wc_backup, 3)
- expected_status.tweak('A/D/G/rho', wc_rev=3, status='M ')
- expected_status.add({
- 'A/D/G/glub' : Item(status='M ', wc_rev=3),
- })
-
- svntest.actions.run_and_verify_update(wc_backup,
- expected_output,
- expected_disk,
- expected_status,
- check_props = True)
-
-#----------------------------------------------------------------------
# Very obscure bug: Issue #2977.
# Let's say there's a revision with
# $ svn mv b c
@@ -4951,105 +4708,6 @@ def tree_conflicts_on_update_3(sbox):
expected_status,
expected_info = expected_info) ] )
-#----------------------------------------------------------------------
-# Test for issue #3354 'update fails when file with local mods is moved
-# and modified'
-def update_moves_and_modifies_an_edited_file(sbox):
- "update moves and modifies a file with edits"
-
- # r1: Create our standard greek test tree.
- sbox.build()
- wc_dir = sbox.wc_dir
-
- # Make a second working copy
- other_wc = sbox.add_wc_path('other')
- svntest.actions.duplicate_dir(wc_dir, other_wc)
- expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
-
- # Some paths we'll care about
- E_path = os.path.join(wc_dir, "A", "B", "E")
- alpha_path = os.path.join(wc_dir, "A", "B", "E", "alpha")
- alpha_moved_path = os.path.join(wc_dir, "A", "B", "E", "alpha.moved")
- other_alpha_path = os.path.join(other_wc, "A", "B", "E", "alpha")
- other_E_path = os.path.join(other_wc, "A", "B", "E")
-
- # r2: Move A/B/E/alpha to A/B/E/alpha.moved in the first WC.
- svntest.actions.run_and_verify_svn(None, None, [], 'move',
- alpha_path, alpha_moved_path)
-
- expected_output = wc.State(wc_dir, {
- 'A/B/E/alpha' : Item(verb='Deleting'),
- 'A/B/E/alpha.moved' : Item(verb='Adding')
- })
-
- expected_status.add({'A/B/E/alpha.moved' : Item(status=' ', wc_rev=2)})
- expected_status.remove('A/B/E/alpha')
-
- svntest.actions.run_and_verify_commit(wc_dir, expected_output,
- expected_status, None, wc_dir)
-
- # r3: Make a text mod to A/B/E/alpha.moved in the first WC.
- new_content_for_alpha = 'alpha, modified after move\n'
- svntest.main.file_write(alpha_moved_path, new_content_for_alpha)
-
- expected_output = svntest.wc.State(wc_dir, {
- 'A/B/E/alpha.moved' : Item(verb='Sending'),
- })
-
- expected_status.tweak('A/B/E/alpha.moved', wc_rev=3)
-
- svntest.actions.run_and_verify_commit(wc_dir, expected_output,
- expected_status, None,
- wc_dir)
-
- # Make a text mod to A/B/E/alpha in the second WC then
- # update the second WC.
- new_content_for_other_alpha = 'alpha, modified\n'
- svntest.main.file_write(other_alpha_path, new_content_for_other_alpha)
-
- expected_output = wc.State(other_E_path, {
- 'alpha' : Item(status=' ', treeconflict='C'),
- 'alpha.moved' : Item(status='C '),
- })
-
- expected_status = wc.State(other_E_path, {
- '' : Item(status=' ', wc_rev=3),
- 'alpha' : Item(status='A ', wc_rev='-', copied='+', treeconflict='C'),
- 'alpha.moved' : Item(status='C ', wc_rev=3),
- 'beta' : Item(status=' ', wc_rev=3),
- })
-
- expected_disk = wc.State('', {
- 'alpha' : Item(new_content_for_other_alpha),
- 'alpha.moved' : Item("<<<<<<< .mine\n" +
- new_content_for_other_alpha +
- "=======\n" +
- new_content_for_alpha +
- ">>>>>>> .r3\n"),
- 'alpha.moved.copied' : Item("This is the file 'alpha'.\n"),
- 'alpha.moved.r3' : Item(new_content_for_alpha),
- 'alpha.moved.mine' : Item(new_content_for_other_alpha),
- 'beta' : Item("This is the file 'beta'.\n"),
- })
-
- # This update should succeed and leave A/B/E/alpha as scheduled for
- # addition with the local edit made prior to the update (i.e. this is
- # a tree conflict with the incoming delete half of the move in r2).
- # A/B/E/alpha.moved should also be present and have a text conflict
- # as a result of the incoming text edit in r3.
- #
- # Prior to the fix for issue #3354 this update failed and left the
- # WC locked.
- expected_skip = wc.State(other_E_path, { })
-
- svntest.actions.run_and_verify_update(other_E_path,
- expected_output,
- expected_disk,
- expected_status,
- None, None, None, None, None,
- True, other_E_path,
- '--accept', 'postpone')
-
# Issue #3334: a modify-on-deleted tree conflict should leave the node
# updated to the target revision but still scheduled for deletion.
def tree_conflict_uc1_update_deleted_tree(sbox):
@@ -5596,94 +5254,6 @@ def mergeinfo_updates_merge_with_local_m
A_COPY_path)
#----------------------------------------------------------------------
-# Test for receiving modified properties on added files that were originally
-# moved from somewhere else. (Triggers locate_copyfrom behavior)
-def add_moved_file_has_props(sbox):
- """update adding moved file receives modified props"""
- sbox.build()
-
- wc_dir = sbox.wc_dir
-
- G = os.path.join(os.path.join(wc_dir, 'A', 'D', 'G'))
- pi = os.path.join(G, 'pi')
- G_new = os.path.join(wc_dir, 'G_new')
-
- # Give pi some property
- svntest.main.run_svn(None, 'ps', 'svn:eol-style', 'native', pi)
- svntest.main.run_svn(None, 'ci', wc_dir, '-m', 'added eol-style')
-
- svntest.actions.run_and_verify_svn(None, 'At revision 2.', [], 'up', wc_dir)
-
- # Now move pi to a different place
- svntest.main.run_svn(None, 'mkdir', G_new)
- svntest.main.run_svn(None, 'mv', pi, G_new)
- svntest.main.run_svn(None, 'ci', wc_dir, '-m', 'Moved pi to G_new')
-
- svntest.actions.run_and_verify_svn(None, 'At revision 3.', [], 'up', wc_dir)
-
-
- expected_status = svntest.actions.get_virginal_state(wc_dir, 3)
- expected_status.remove('A/D/G/pi')
- expected_status.add({
- 'G_new' : Item (status=' ', wc_rev=3),
- 'G_new/pi' : Item (status=' ', wc_rev=3),
- })
-
- svntest.actions.run_and_verify_status(wc_dir, expected_status)
-
- svntest.main.run_svn(None, 'up', '-r', '0', G_new)
- svntest.main.run_svn(None, 'up', wc_dir)
-
- # This shouldn't show property modifications, but at r982550 it did.
- svntest.actions.run_and_verify_status(wc_dir, expected_status)
-
-#----------------------------------------------------------------------
-# Test for receiving modified properties on added files that were originally
-# moved from somewhere else. (Triggers locate_copyfrom behavior). This is
-# an extended variant that has another property change on the new path
-def add_moved_file_has_props2(sbox):
- """update adding moved node receives 2* props"""
- sbox.build()
-
- wc_dir = sbox.wc_dir
-
- G = os.path.join(os.path.join(wc_dir, 'A', 'D', 'G'))
- pi = os.path.join(G, 'pi')
- G_new = os.path.join(wc_dir, 'G_new')
-
- # Give pi some property
- svntest.main.run_svn(None, 'ps', 'svn:eol-style', 'native', pi)
- svntest.main.run_svn(None, 'ci', wc_dir, '-m', 'added eol-style')
-
- svntest.actions.run_and_verify_svn(None, 'At revision 2.', [], 'up', wc_dir)
-
- # Now move pi to a different place
- svntest.main.run_svn(None, 'mkdir', G_new)
- svntest.main.run_svn(None, 'mv', pi, G_new)
- svntest.main.run_svn(None, 'ps', 'svn:eol-style', 'CR', os.path.join(G_new, 'pi'))
-
- svntest.main.run_svn(None, 'ci', wc_dir, '-m', 'Moved pi to G_new')
-
- svntest.actions.run_and_verify_svn(None, 'At revision 3.', [], 'up', wc_dir)
-
-
- expected_status = svntest.actions.get_virginal_state(wc_dir, 3)
- expected_status.remove('A/D/G/pi')
- expected_status.add({
- 'G_new' : Item (status=' ', wc_rev=3),
- 'G_new/pi' : Item (status=' ', wc_rev=3),
- })
-
- svntest.actions.run_and_verify_status(wc_dir, expected_status)
-
- svntest.main.run_svn(None, 'up', '-r', '0', G_new)
- svntest.main.run_svn(None, 'up', wc_dir)
-
- # This shouldn't show local modifications, but currently it
- # shows a property conflict on G_new/pi.
- svntest.actions.run_and_verify_status(wc_dir, expected_status)
-
-
# A regression test for a 1.7-dev crash upon updating a WC to a different
# revision when it contained an excluded dir.
def update_with_excluded_subdir(sbox):
@@ -5792,11 +5362,6 @@ test_list = [ None,
update_conflicted,
SkipUnless(mergeinfo_update_elision,
server_has_mergeinfo),
- SkipUnless(update_handles_copyfrom,
- server_sends_copyfrom_on_update),
- copyfrom_degrades_gracefully,
- SkipUnless(update_handles_copyfrom_with_txdeltas,
- server_sends_copyfrom_on_update),
update_copied_from_replaced_and_changed,
update_copied_and_deleted_prop,
update_accept_conflicts,
@@ -5809,7 +5374,6 @@ test_list = [ None,
tree_conflicts_on_update_2_2,
XFail(tree_conflicts_on_update_2_3),
tree_conflicts_on_update_3,
- update_moves_and_modifies_an_edited_file,
tree_conflict_uc1_update_deleted_tree,
XFail(tree_conflict_uc2_schedule_re_add),
set_deep_depth_on_target_with_shallow_children,
@@ -5817,8 +5381,6 @@ test_list = [ None,
XFail(update_deleted_locked_files),
XFail(update_empty_hides_entries),
mergeinfo_updates_merge_with_local_mods,
- add_moved_file_has_props,
- XFail(add_moved_file_has_props2),
update_with_excluded_subdir,
XFail(update_with_file_lock_and_keywords_property_set)
]