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

Support non-inheritable mergeinfo revision ranges

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • trunk
    • 1.5.0
    • libsvn_repos

    Description

      Normally when a merge sets mergeinfo on a PATH, all of PATH's children without
      their own explicit mergeinfo inherit the mergeinfo, path adjusted of course,
      from PATH.
      
      Problems arise however if some of PATH's children are missing, due to authz
      restrictions, switched children, sparse checkouts, etc. See these threads for a
      full discussion:  
      
      http://svn.haxx.se/dev/archive-2007-04/0678.shtml
      http://svn.haxx.se/dev/archive-2007-06/0595.shtml
      http://svn.haxx.se/dev/archive-2007-07/0038.shtml
      
      So we need a way to represent non-inheritable mergeinfo, specifically the
      revision ranges, which are non-inheritable.  At kameshj's suggestion I'm using a
      '*' after the revision ranges in mergeinfo to represent non-inhertiable ranges,
      e.g.:
      
        >svn pl -v merge_tests-50\A_COPY\D\H
        Properties on 'merge_tests-50\A_COPY\D\H':
          svn:mergeinfo : /A/D/H:1,3-5*,7*
      
      We are of course free to bikeshed about the use of '*'.
      
      Supporting non-inheritable ranges in the sqlite db is the easy part. 
      Identifying missing paths, their parents, their siblings, and applying,
      inheriting, and eliding the appropriate mergeinfo is a bit more work.  Things
      are coming along though and hope to have a complete patch soon.
      

      Attachments

        Issue Links

          Activity

            People

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

              Dates

                Created:
                Updated:
                Resolved: