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()

Reply via email to