Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
trunk
Description
While working on issue #3067 I noticed that our merge algorithm breaks if a merge target and its subtree require non-intersecting ranges to be merged. This occurs for both forward and reverse merges. For example, say we have this working copy (I'll attach the dump file for this sampe repos in a moment) >svn st -v wc 11 11 pburba wc 11 7 pburba wc\A 11 5 jrandom wc\A\B 11 1 jrandom wc\A\B\lambda 11 5 jrandom wc\A\B\E 11 1 jrandom wc\A\B\E\alpha 11 5 jrandom wc\A\B\E\beta 11 1 jrandom wc\A\B\F 11 1 jrandom wc\A\mu 11 1 jrandom wc\A\C 11 7 pburba wc\A\D 11 7 pburba wc\A\D\gamma 11 4 jrandom wc\A\D\G 11 1 jrandom wc\A\D\G\pi 11 4 jrandom wc\A\D\G\rho 11 1 jrandom wc\A\D\G\tau 11 7 pburba wc\A\D\H 11 1 jrandom wc\A\D\H\chi 11 6 jrandom wc\A\D\H\omega 11 7 pburba wc\A\D\H\psi 11 8 pburba wc\A_COPY 11 1 jrandom wc\A_COPY\B 11 1 jrandom wc\A_COPY\B\lambda 11 1 jrandom wc\A_COPY\B\E 11 1 jrandom wc\A_COPY\B\E\alpha 11 1 jrandom wc\A_COPY\B\E\beta 11 1 jrandom wc\A_COPY\B\F 11 1 jrandom wc\A_COPY\mu 11 1 jrandom wc\A_COPY\C 11 8 pburba wc\A_COPY\D 11 8 pburba wc\A_COPY\D\gamma 11 1 jrandom wc\A_COPY\D\G 11 1 jrandom wc\A_COPY\D\G\pi 11 1 jrandom wc\A_COPY\D\G\rho 11 1 jrandom wc\A_COPY\D\G\tau 11 8 pburba wc\A_COPY\D\H 11 1 jrandom wc\A_COPY\D\H\chi 11 1 jrandom wc\A_COPY\D\H\omega 11 8 pburba wc\A_COPY\D\H\psi 11 11 pburba wc\A_COPY_2 11 11 pburba wc\A_COPY_2\B 11 1 jrandom wc\A_COPY_2\B\lambda 11 11 pburba wc\A_COPY_2\B\E 11 1 jrandom wc\A_COPY_2\B\E\alpha 11 11 pburba wc\A_COPY_2\B\E\beta 11 1 jrandom wc\A_COPY_2\B\F 11 1 jrandom wc\A_COPY_2\mu 11 1 jrandom wc\A_COPY_2\C 11 11 pburba wc\A_COPY_2\D 11 10 pburba wc\A_COPY_2\D\gamma 11 10 pburba wc\A_COPY_2\D\G 11 1 jrandom wc\A_COPY_2\D\G\pi 11 10 pburba wc\A_COPY_2\D\G\rho 11 1 jrandom wc\A_COPY_2\D\G\tau 11 11 pburba wc\A_COPY_2\D\H 11 1 jrandom wc\A_COPY_2\D\H\chi 11 10 pburba wc\A_COPY_2\D\H\omega 11 11 pburba wc\A_COPY_2\D\H\psi 11 1 jrandom wc\iota >svn log -g -v -r1:HEAD wc ------------------------------------------------------------------------ r1 | jrandom | 2008-05-16 12:58:52 -0400 (Fri, 16 May 2008) | 1 line Changed paths: A /A A /A/B A /A/B/E A /A/B/E/alpha A /A/B/E/beta A /A/B/F A /A/B/lambda A /A/C A /A/D A /A/D/G A /A/D/G/pi A /A/D/G/rho A /A/D/G/tau A /A/D/H A /A/D/H/chi A /A/D/H/omega A /A/D/H/psi A /A/D/gamma A /A/mu A /iota Log message for revision 1. ------------------------------------------------------------------------ r2 | jrandom | 2008-05-16 12:59:07 -0400 (Fri, 16 May 2008) | 1 line Changed paths: A /A_COPY (from /A:1) log msg ------------------------------------------------------------------------ r3 | jrandom | 2008-05-16 12:59:10 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A/D/H/psi log msg ------------------------------------------------------------------------ r4 | jrandom | 2008-05-16 12:59:12 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A/D/G/rho log msg ------------------------------------------------------------------------ r5 | jrandom | 2008-05-16 12:59:14 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A/B/E/beta log msg ------------------------------------------------------------------------ r6 | jrandom | 2008-05-16 12:59:16 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A/D/H/omega log msg ------------------------------------------------------------------------ r7 | pburba | 2008-05-16 13:01:06 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A/D/H/psi M /A/D/gamma ------------------------------------------------------------------------ r8 | pburba | 2008-05-16 13:08:10 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A_COPY M /A_COPY/D/H/psi M /A_COPY/D/gamma ------------------------------------------------------------------------ r7 | pburba | 2008-05-16 13:01:06 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A/D/H/psi M /A/D/gamma Merged via: r8 ------------------------------------------------------------------------ r3 | jrandom | 2008-05-16 12:59:10 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A/D/H/psi Merged via: r8 log msg ------------------------------------------------------------------------ r9 | pburba | 2008-05-16 13:13:56 -0400 (Fri, 16 May 2008) | 1 line Changed paths: A /A_COPY_2 (from /A:2) ------------------------------------------------------------------------ r10 | pburba | 2008-05-16 13:14:36 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A_COPY_2 M /A_COPY_2/B/E/beta M /A_COPY_2/D/G/rho M /A_COPY_2/D/H/omega M /A_COPY_2/D/H/psi M /A_COPY_2/D/gamma ------------------------------------------------------------------------ r6 | jrandom | 2008-05-16 12:59:16 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A/D/H/omega Merged via: r10 log msg ------------------------------------------------------------------------ r5 | jrandom | 2008-05-16 12:59:14 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A/B/E/beta Merged via: r10 log msg ------------------------------------------------------------------------ r4 | jrandom | 2008-05-16 12:59:12 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A/D/G/rho Merged via: r10 log msg ------------------------------------------------------------------------ r3 | jrandom | 2008-05-16 12:59:10 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A/D/H/psi Merged via: r10 log msg ------------------------------------------------------------------------ r11 | pburba | 2008-05-16 13:15:52 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A_COPY_2 M /A_COPY_2/B/E/beta M /A_COPY_2/D/H/psi ------------------------------------------------------------------------ r5 | jrandom | 2008-05-16 12:59:14 -0400 (Fri, 16 May 2008) | 1 line Changed paths: M /A/B/E/beta Merged via: r11 log msg ------------------------------------------------------------------------ >svn pl -vR wc Properties on 'wc\A_COPY': svn:mergeinfo : /A:7 Properties on 'wc\A_COPY\D\H\psi': svn:mergeinfo : /A/D/H/psi:3 Properties on 'wc\A_COPY_2': svn:mergeinfo : /A:3-4,6-9 Properties on 'wc\A_COPY_2\D\H\psi': svn:mergeinfo : /A/D/H/psi:3-6,8-9 If we merge all eligible revisions to 'A_COPY_2' then r5 should be merged into 'A_COPY_2' (updating 'A_COPY_2/B/E/beta') and r7 should be merged into 'A_COPY_2/D/H/psi', but only r5 is merged: >svn merge %url%/A wc\A_COPY_2 --- Merging r5 into 'wc\A_COPY_2': U wc\A_COPY_2\B\E\beta >svn st wc M wc\A_COPY_2 M wc\A_COPY_2\B\E\beta M wc\A_COPY_2\D\H\psi >svn pl -vR wc Properties on 'wc\A_COPY': svn:mergeinfo : /A:7 Properties on 'wc\A_COPY\D\H\psi': svn:mergeinfo : /A/D/H/psi:3 Properties on 'wc\A_COPY_2': svn:mergeinfo : /A:3-11 Likewise, if we reverse merge -r11:2 into 'A_COPY' r7 should be reverse merged out of 'A_COPY" (updating 'A_COPY/D/gamma') and r3 should be reverse merged out of 'A_COPY/D/H/psi', but only r7 is reverse merged: >svn merge %url%/A wc\A_COPY -r11:2 --- Reverse-merging r7 into 'wc\A_COPY': U wc\A_COPY\D\gamma >svn st wc\A_COPY_2 M wc\A_COPY_2 M wc\A_COPY_2\B\E\beta M wc\A_COPY_2\D\H\psi >svn pl -vR wc Properties on 'wc\A_COPY_2': svn:mergeinfo : /A:3-11
Attachments
Attachments
Issue Links
- is duplicated by
-
SVN-3202 Subtree merges broken when required ranges don't intersect with merge target
- Closed