Author: svn-role Date: Fri Aug 1 18:58:54 2014 New Revision: 1615196 URL: http://svn.apache.org/r1615196 Log: Merge the r1589460 group from trunk:
* r1589460, r1589486 Fix copying parents of locally deleted nodes between working copies. Justification: Resolves a case of creating invalid working copy state. Votes: +1: rhuijben, philip, breser Modified: subversion/branches/1.8.x/ (props changed) subversion/branches/1.8.x/STATUS subversion/branches/1.8.x/subversion/libsvn_wc/wc_db.c subversion/branches/1.8.x/subversion/tests/cmdline/copy_tests.py Propchange: subversion/branches/1.8.x/ ------------------------------------------------------------------------------ Merged /subversion/trunk:r1589460,1589486 Modified: subversion/branches/1.8.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/STATUS?rev=1615196&r1=1615195&r2=1615196&view=diff ============================================================================== --- subversion/branches/1.8.x/STATUS (original) +++ subversion/branches/1.8.x/STATUS Fri Aug 1 18:58:54 2014 @@ -189,13 +189,6 @@ Veto-blocked changes: Approved changes: ================= - * r1589460, r1589486 - Fix copying parents of locally deleted nodes between working copies. - Justification: - Resolves a case of creating invalid working copy state. - Votes: - +1: rhuijben, philip, breser - * r1595431 Use a proper intermediate directory when building with VS 2003-2008. Justification: Modified: subversion/branches/1.8.x/subversion/libsvn_wc/wc_db.c URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/subversion/libsvn_wc/wc_db.c?rev=1615196&r1=1615195&r2=1615196&view=diff ============================================================================== --- subversion/branches/1.8.x/subversion/libsvn_wc/wc_db.c (original) +++ subversion/branches/1.8.x/subversion/libsvn_wc/wc_db.c Fri Aug 1 18:58:54 2014 @@ -5138,6 +5138,17 @@ db_op_copy_shadowed_layer(svn_wc__db_wcr scratch_pool)); } + if (dst_presence == svn_wc__db_status_not_present) + { + /* Don't create descendants of a not present node! */ + + /* This code is currently still triggered by copying deleted nodes + between separate working copies. See ### comment above. */ + + svn_pool_destroy(iterpool); + return SVN_NO_ERROR; + } + SVN_ERR(gather_repo_children(&children, src_wcroot, src_relpath, src_op_depth, scratch_pool, iterpool)); Modified: subversion/branches/1.8.x/subversion/tests/cmdline/copy_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/subversion/tests/cmdline/copy_tests.py?rev=1615196&r1=1615195&r2=1615196&view=diff ============================================================================== --- subversion/branches/1.8.x/subversion/tests/cmdline/copy_tests.py (original) +++ subversion/branches/1.8.x/subversion/tests/cmdline/copy_tests.py Fri Aug 1 18:58:54 2014 @@ -5844,6 +5844,39 @@ def ext_wc_copy_deleted(sbox): expected_output, None, None, wc2_dir) +def copy_subtree_deleted(sbox): + "copy to-be-deleted subtree" + + sbox.build() + wc_dir = sbox.wc_dir + wc2_dir = sbox.add_wc_path('2') + svntest.actions.duplicate_dir(wc_dir, wc2_dir) + + sbox.simple_rm('A/B') + + # Commit copy within a working copy + sbox.simple_copy('A', 'AA') + expected_output = expected_output = svntest.wc.State(wc_dir, { + 'AA' : Item(verb='Adding'), + 'AA/B' : Item(verb='Deleting'), + }) + svntest.actions.run_and_verify_commit(wc_dir, + expected_output, None, None, + sbox.ospath('AA')) + + # Commit copy between working copies + svntest.actions.run_and_verify_svn(None, None, [], + 'cp', sbox.path('A'), + os.path.join(wc2_dir,'AA2')) + expected_output = expected_output = svntest.wc.State(wc2_dir, { + 'AA2' : Item(verb='Adding'), + 'AA2/B' : Item(verb='Deleting'), + }) + svntest.actions.run_and_verify_commit(wc2_dir, + expected_output, None, None, + wc2_dir) + + ######################################################################## # Run the tests @@ -5963,6 +5996,7 @@ test_list = [ None, copy_over_excluded, copy_relocate, ext_wc_copy_deleted, + copy_subtree_deleted, ] if __name__ == '__main__':