Uploaded image for project: 'Subversion'
  1. Subversion
  2. SVN-3440

Skipped paths get incorrect override mergeinfo during merge

    XMLWordPrintableJSON

    Details

      Description

      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
      

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              pburba Paul Burba
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: