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

Mergeinfo deleted by a merge should disappear

    XMLWordPrintableJSON

Details

    Description

      If a merge target has an explicit subtree mergeinfo and the merge deletes the
      svn:mergeinfo property on the subtree, the subtree still ends up with explicit
      mergeinfo describing the merge.
      
      For example, say we have a branch with subtree mergeinfo:
      
      C:\SVN\svn-repos-local-mirror-wc\branches\issue-2897-take2>svn pg svn:mergeinfo
      build.conf -v
      Properties on 'build.conf':
        svn:mergeinfo
          /branches/1.5.x-r30215/build.conf:30238
          /branches/bdb-reverse-deltas/build.conf:31976-32455
          /branches/diff-callbacks3/build.conf:29985-30687
          /branches/dont-save-plaintext-passwords-by-default/build.conf:30654-31044
          /branches/double-delete/build.conf:30437-32896
          /branches/file-externals/build.conf:31705-33228
          /branches/fs-rep-sharing/build.conf:28962-33729
          /branches/gnome-keyring/build.conf:30484-31336
          /branches/in-memory-cache/build.conf:29755-31378
          /branches/issue-3000/build.conf:31639,31642-31645,31647-31652,31654,31660
          /branches/issue-3067-deleted-subtrees/build.conf:33301-34010
          /branches/issue-3220-dev/build.conf:32136-32152
          /branches/kwallet/build.conf:30711-31240
          /branches/log-g-performance/build.conf:30867-30958
          /branches/svn-mergeinfo-enhancements/build.conf:30045-30214
          /branches/svnpatch-diff/build.conf:31831,31912
          /branches/svnserve-logging/build.conf:29754-30819
          /branches/tc-merge-notify/build.conf:33943-33988
          /branches/tree-conflicts/build.conf:28217-33080
          /branches/tree-conflicts-notify/build.conf:33852-33934
          /trunk/build.conf:32478-34074
      
      Now we try to merge a change from trunk that is the deletion of all subtree
      mergeinfo:
      
      C:\SVN\svn-repos-local-mirror-wc\branches\issue-2897-take2>svn diff
      file:///C:/SVN/svn-repos-local-mirror/trunk/build.conf -c34186
      
      Property changes on: build.conf
      ___________________________________________________________________
      Deleted: svn:mergeinfo
         Reverse-merged /branches/issue-3220-dev/build.conf:r32136-32152
         Reverse-merged /branches/svnpatch-diff/build.conf:r31831,31912
         Reverse-merged /branches/svnserve-logging/build.conf:r29754-30819
         Reverse-merged /branches/reintegrate-improvements/build.conf:r33779-34090
         Reverse-merged /branches/issue-2843-dev/build.conf:r31358-34105
         Reverse-merged /branches/1.5.x-r30215/build.conf:r30238
         Reverse-merged /branches/kwallet/build.conf:r30711-31240
         Reverse-merged /branches/log-g-performance/build.conf:r30867-30958
         Reverse-merged /branches/diff-callbacks3/build.conf:r29985-30687
         Reverse-merged
      /branches/issue-3000/build.conf:r31639,31642-31645,31647-31652,31654,31660
         Reverse-merged /branches/tc-merge-notify/build.conf:r33943-33988
         Reverse-merged /branches/bdb-reverse-deltas/build.conf:r31976-32455
         Reverse-merged /branches/double-delete/build.conf:r30437-32896
         Reverse-merged /branches/gnome-keyring/build.conf:r30484-31336
         Reverse-merged /branches/in-memory-cache/build.conf:r29755-31378
         Reverse-merged /branches/tree-conflicts/build.conf:r28217-33080
         Reverse-merged /branches/file-externals/build.conf:r31705-33228
         Reverse-merged /branches/issue-3067-deleted-subtrees/build.conf:r33301-34010
         Reverse-merged
      /branches/dont-save-plaintext-passwords-by-default/build.conf:r30654-31044
         Reverse-merged /branches/tc-resolve/build.conf:r34117-34165
         Reverse-merged /branches/fs-rep-sharing/build.conf:r28962-33729
         Reverse-merged /branches/svn-mergeinfo-enhancements/build.conf:r30045-30214
         Reverse-merged /branches/tree-conflicts-notify/build.conf:r33852-33934
         
      C:\SVN\svn-repos-local-mirror-wc\branches\issue-2897-take2>svn merge
      file:///C:/SVN/svn-repos-local-mirror/trunk . -c34186 --accept theirs-full
      --- Merging r34186 into 'build.conf':
       U   build.conf
      --- Merging r34186 into 'www\issue-tracker.html':
       U   www\issue-tracker.html
      --- Merging r34186 into 'www\development.html':
       U   www\development.html
      --- Merging r34186 into 'www\tasks.html':
       U   www\tasks.html
      --- Merging r34186 into 'notes\tree-conflicts\requirements.txt':
       U   notes\tree-conflicts\requirements.txt
      --- Merging r34186 into 'notes\tree-conflicts\design-overview.txt':
       U   notes\tree-conflicts\design-overview.txt
      --- Merging r34186 into 'subversion\libsvn_subr':
       U   subversion\libsvn_subr
      --- Merging r34186 into 'subversion\tests\libsvn_subr':
       U   subversion\tests\libsvn_subr
      --- Merging r34186 into 'subversion\tests\cmdline\tree_conflict_tests.txt':
       U   subversion\tests\cmdline\tree_conflict_tests.txt
      --- Merging r34186 into 'subversion\include\private\svn_cache.h':
       U   subversion\include\private\svn_cache.h
      --- Merging r34186 into 'subversion\include\private\svn_auth_private.h':
       U   subversion\include\private\svn_auth_private.h
      --- Merging r34186 into 'subversion\include':
       U   subversion\include
      --- Merging r34186 into 'subversion\libsvn_auth_kwallet\kwallet.cpp':
       U   subversion\libsvn_auth_kwallet\kwallet.cpp
      --- Merging r34186 into 'tools\buildbot\slaves\win32-xp-VS2005':
       U   tools\buildbot\slaves\win32-xp-VS2005
      --- Merging r34186 into 'tools\server-side\test_svn_server_log_parse.py':
       U   tools\server-side\test_svn_server_log_parse.py
      --- Merging r34186 into 'tools\server-side\svn_server_log_parse.py':
       U   tools\server-side\svn_server_log_parse.py
      
      The subtree mergeinfo is deleted, but then it gets explicit mergeinfo describing
      the merge:
      
      C:\SVN\svn-repos-local-mirror-wc\branches\issue-2897-take2>svn diff build.conf
      
      Property changes on: build.conf
      ___________________________________________________________________
      Modified: svn:mergeinfo
         Reverse-merged /branches/issue-3220-dev/build.conf:r32136-32152
         Reverse-merged /branches/svnpatch-diff/build.conf:r31831,31912
         Reverse-merged /branches/svnserve-logging/build.conf:r29754-30819
         Reverse-merged /branches/1.5.x-r30215/build.conf:r30238
         Reverse-merged /branches/kwallet/build.conf:r30711-31240
         Reverse-merged /branches/log-g-performance/build.conf:r30867-30958
         Reverse-merged /branches/diff-callbacks3/build.conf:r29985-30687
         Reverse-merged
      /branches/issue-3000/build.conf:r31639,31642-31645,31647-31652,31654,31660
         Reverse-merged /branches/tc-merge-notify/build.conf:r33943-33988
         Reverse-merged /branches/bdb-reverse-deltas/build.conf:r31976-32455
         Reverse-merged /branches/double-delete/build.conf:r30437-32896
         Reverse-merged /branches/gnome-keyring/build.conf:r30484-31336
         Reverse-merged /branches/in-memory-cache/build.conf:r29755-31378
         Reverse-merged /trunk/build.conf:r32478-34074
         Reverse-merged /branches/tree-conflicts/build.conf:r28217-33080
         Reverse-merged /branches/file-externals/build.conf:r31705-33228
         Reverse-merged /branches/issue-3067-deleted-subtrees/build.conf:r33301-34010
         Reverse-merged
      /branches/dont-save-plaintext-passwords-by-default/build.conf:r30654-31044
         Reverse-merged /branches/svn-mergeinfo-enhancements/build.conf:r30045-30214
         Reverse-merged /branches/fs-rep-sharing/build.conf:r28962-33729
         Reverse-merged /branches/tree-conflicts-notify/build.conf:r33852-33934
            ^^^
            The merge removed *all* mergeinfo from this subtree
         Merged /trunk/build.conf:r34186
            ^^^
            But then set mergeinfo describing the merge.
      
      It seems the correct behavior would be to set this mergeinfo only on the merge
      target.  Since all the subtrees no longer have mergeinfo they would inherit from
      the target anyway.
      

      Attachments

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved: