Edgewall Software

Ticket #7715: mergeinfo-parsing.patch

File mergeinfo-parsing.patch, 1.5 KB (added by Javier Sanz <jsceballos@…>, 3 years ago)

Proposed patch

  • trac/versioncontrol/svn_fs.py

     
    4848import time 
    4949import weakref 
    5050import posixpath 
     51import re 
    5152from datetime import datetime 
    5253 
    5354from genshi.builder import tag 
     
    390391                       for label, href, title in externals_data]) 
    391392 
    392393    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  
     394        # svn:mergeinfo property example: "/otherbranch:18\n/trunk:7-9,12" 
     395        ul = [] 
     396        for path,revs in re.findall('/(.+?):([\d\-,]+)',prop): 
     397            li = [] 
     398            li.append(tag.a(path,href=self.env.abs_href('browser',path))) 
     399            li.append(': ') 
     400            for rev in revs.split(','): 
     401                if '-' in rev: 
     402                    range = rev.split('-') 
     403                    a = tag.a(rev,href=self.env.abs_href('log',path,rev=range[1],stop_rev=range[0])) 
     404                else: 
     405                    a = tag.a(rev,href=self.env.abs_href('changeset',rev,path)) 
     406                li.append(' ') 
     407                li.append(a) 
     408            ul.append(tag.li(li)) 
     409             
     410        return tag.ul(ul)       
     411      
     412     
    398413    def _render_needslock(self, context): 
    399414        return tag.img(src=context.href.chrome('common/lock-locked.png'), 
    400415                       alt="needs lock", title="needs lock")