Edgewall Software

Ticket #7715: mergeinfo-parsing-v2.patch

File mergeinfo-parsing-v2.patch, 1.6 KB (added by Javier Sanz <jsceballos@…>, 3 years ago)
  • trac/versioncontrol/svn_fs.py

     
    390390                       for label, href, title in externals_data]) 
    391391 
    392392    def _render_mergeinfo(self, prop): 
    393         prop = prop.rsplit(':', 1) 
    394         if len(prop) == 2: 
    395             prop[1] = prop[1].replace(',', u',\u200b') 
    396         return ':'.join(prop) 
    397  
     393        """Parse svn:mergeinfo and svnmerge-* properties converting branch names 
     394        and revisions to links.""" 
     395         
     396        # Example of svn:mergeinfo property: "/otherbranch:18\n/trunk:7-9,12" 
     397         
     398        ul = [] 
     399        for line in prop.splitlines(): 
     400            path,revs = line.split(':') 
     401            li = [] 
     402            li.append(tag.a(path, href=self.env.href.browser(path))) 
     403            li.append(':') 
     404            for rev in revs.split(','): 
     405                if '-' in rev: 
     406                    range = rev.split('-') 
     407                    a = tag.a(rev, href=self.env.href.log(path, rev=range[1],  
     408                                                          stop_rev=range[0])) 
     409                else: 
     410                    a = tag.a(rev, href=self.env.href.changeset(rev, path)) 
     411                li.append(a) 
     412                li.append(u',\u200b') 
     413            li.pop() 
     414            ul.append(tag.li(li)) 
     415             
     416        return tag.ul(ul)       
     417      
    398418    def _render_needslock(self, context): 
    399419        return tag.img(src=context.href.chrome('common/lock-locked.png'), 
    400420                       alt="needs lock", title="needs lock")