Spun off from issue #2827 Mergeinfo for a target with missing children is not handled correctly when the merge attempts to delete the missing children (or adds children in a way that conflicts with the target's depth, e.g. tries to add a dir, when the wc --depth is 'files'). To see an example of this problem, apply the attached merge_test.py patch and run merge_tests.py:65:"merge_to_sparse_directories" without --cleanup. For this example we'll look at the WC checked out at --depth files. >svn st -v merge_tests-1.files 9 2 jrandom merge_tests-1.files 9 1 jrandom merge_tests-1.files\mu >svn pl -vR merge_tests-1.files Properties on 'merge_tests-1.files': svn:mergeinfo : /A:1 >set URL=file:///C:/SVN/src-trunk/Release/subversion/tests/cmdline/svn-test-work/repositories/merge_tests-1 # Now we merge -r6:10 into the sparse WC. # # fyi: # r7 - text change to %URL%/A/mu # r8 - Prop add to %URL%/A/D # r9 - Prop add to %URL%/A. # r10 - Delete %URL%/A/C and add %URL%/A/I. # # r7 and r9 are applied to the WC, but since r8 and r10 effect paths that # are not present due to the depth of the WC neither of those changes take # place. >svn merge %URL%/A merge_tests-1.files -r6:10 --- Merging r7 through r10: U merge_tests-1.files\mu --- Merging r7 through r10: U merge_tests-1.files # The target of the merge gets non-inheritable mergeinfo and the one # child present, file 'mu', gets inheritable mergeinfo. This is # correct to the extent that no missing children of the target should # inherit this new mergeinfo... >svn pl -vR merge_tests-1.files Properties on 'merge_tests-1.files': prop:name : propval svn:mergeinfo : /A:1,7-10* Properties on 'merge_tests-1.files\mu': svn:mergeinfo : /A/mu:1,7-10 # ...the problem arises if we bring the missing child we tried to delete # back and also permit the child we tried to add to actually be added, # a.k.a updating the WC to depth infinity: >svn up merge_tests-1.files --depth infinity A merge_tests-1.files\B A merge_tests-1.files\B\lambda A merge_tests-1.files\B\E A merge_tests-1.files\B\E\alpha A merge_tests-1.files\B\E\beta A merge_tests-1.files\B\F A merge_tests-1.files\C A merge_tests-1.files\D A merge_tests-1.files\D\gamma A merge_tests-1.files\D\G A merge_tests-1.files\D\G\pi A merge_tests-1.files\D\G\rho A merge_tests-1.files\D\G\tau A merge_tests-1.files\D\H A merge_tests-1.files\D\H\chi A merge_tests-1.files\D\H\omega A merge_tests-1.files\D\H\psi Updated to revision 10. # The problem is that the mergeinfo on the WC root prevents repeat merges # from touching the root. Changes deeper in the WC, like r8's prop add to # 'D' are allowed, but r10's add/delete of the root's children are prevented # by our 'avoid repeat merge' logic. >svn merge %URL%/A merge_tests-1.files -r6:10 --- Merging r7 through r10: --- Merging r7 through r10: U merge_tests-1.files\D Within our current merge-tracking solution, I don't see any obvious solution. Of course this seems like a bit of an edge case...but one man's edge case is another man's SOP.