On Thu, May 16, 2013 at 05:07:08PM +0200, Bert Huijben wrote: > I think we still do, but how can we determine if an incoming 'delete > <this-exact-tree>' should apply to a node that is not there?
It sounds like you are still talking about a merge into a sparse WC? But that is not the problem, as Paul pointed out. The node to be deleted is there during the merge into an infinite depth WC. Anyway, I believe the shallow merge is a red herring. During the merge at infinite depth, the tree to be deleted no the branch does not match the tree deleted on the trunk: $ svn diff ^/A/B/E@6 A_COPY/B/E Index: A_COPY/B/E/beta =================================================================== --- A_COPY/B/E/beta (file:///home/stsp/svn/svn-trunk/subversion/tests/cmdline/svn-test-work/repositories/merge_tests-139/A/B/E) (revision 6) +++ A_COPY/B/E/beta (.../A_COPY/B/E) (working copy) @@ -1 +1 @@ -New content \ No newline at end of file +This is the file 'beta'. So I agree that the tree conflict flagged at the end of Paul's test is warranted. The merge is not deleting the same tree as it was deleting on trunk. If I tweak the test to not run a shallow merge, as below, the test fails in the same way. $ svn diff Index: merge_tests.py =================================================================== --- merge_tests.py (revision 1483398) +++ merge_tests.py (working copy) @@ -19026,8 +19026,8 @@ def merge_to_empty_target_merge_to_infinite_target sbox.simple_commit() # r3 - Set depth of A_COPY to empty, merge the r3 from ^/A. - svntest.actions.run_and_verify_svn(None, None, [], 'up', - '--set-depth=empty', A_COPY_path) + #svntest.actions.run_and_verify_svn(None, None, [], 'up', + # '--set-depth=empty', A_COPY_path) svntest.actions.run_and_verify_svn(None, None, [], 'merge', '-c7', '^/A', A_COPY_path) sbox.simple_commit()