When performing a merge where some of the paths affected are missing (due to an
OS deletion, authz restrictions, etc.) then empty mergeinfo is set on the
skipped paths (this only works for files currently, directories are not yet
handled - see issue #2915.
If the skipped path inherited mergeinfo prior to the merge though, setting empty
mergeinfo is incorrect. For example, say we have this 'branch':
>svn st -v A_COPY
8 7 pburba A_COPY
8 2 jrandom A_COPY\mu
8 2 jrandom A_COPY\B
8 2 jrandom A_COPY\B\lambda
8 2 jrandom A_COPY\B\E
8 2 jrandom A_COPY\B\E\alpha
8 2 jrandom A_COPY\B\E\beta
8 2 jrandom A_COPY\B\F
8 2 jrandom A_COPY\C
8 7 pburba A_COPY\D
8 2 jrandom A_COPY\D\gamma
8 7 pburba A_COPY\D\G
8 7 pburba A_COPY\D\G\rho
8 2 jrandom A_COPY\D\G\pi
8 2 jrandom A_COPY\D\G\tau
8 2 jrandom A_COPY\D\H
8 2 jrandom A_COPY\D\H\chi
8 2 jrandom A_COPY\D\H\omega
8 2 jrandom A_COPY\D\H\psi
And there is some mergeinfo on the root of the branch:
>svn pl -vR A_COPY
Properties on 'A_COPY':
svn:mergeinfo
/A:4
Delete a file so it is missing:
>del A_COPY\D\G\rho
>svn st A_COPY
! A_COPY\D\G\rho
Now merge some changes to the 'branch' that include a change to the missing file:
>svn merge ^^/A A_COPY
--- Merging r2 through r3 into 'A_COPY':
U A_COPY\D\H\psi
--- Merging r5 through r8 into 'A_COPY':
U A_COPY\B\E\beta
Skipped missing target: 'A_COPY\D\G\rho'
U A_COPY\D\H\omega
Summary of conflicts:
Skipped paths: 1
>svn st A_COPY
M A_COPY
M A_COPY\B\E\beta
!M A_COPY\D\G\rho
M A_COPY\D\H\omega
M A_COPY\D\H\psi
The missing file has empty mergeinfo, but it should have '/A/D/G/rho:4':
>svn pl -vR A_COPY
Properties on 'A_COPY':
svn:mergeinfo
/A:2-8
Properties on 'A_COPY\D\G\rho':
svn:mergeinfo