Edgewall Software

Ticket #4366: t4366b.diff

File t4366b.diff, 3.4 KB (added by Tim Hatch <trac@…>, 2 years ago)

Second try

  • templates/revisionlog.html

     
    120120                      <span class="comment">($item.change)</span> 
    121121                    </a> 
    122122                  </td> 
     123                  <py:if test="not item.courtesy"> 
    123124                  <td class="rev"> 
    124125                    <a title="Browse at revision $item.rev" href="${href.browser(item.path, rev=item.existing_rev)}"> 
    125126                      @$item.existing_rev</a> 
     
    133134                  <td class="summary">${ 
    134135                    not verbose and (wiki_format_messages and wiki_to_oneliner(change.message) \ 
    135136                                 or shorten_line(change.message)) or '' 
    136                     }</td> 
     137                    }</td></py:if> 
    137138                </tr> 
    138139 
    139                 <tr py:if="verbose"> 
     140                <tr py:if="verbose and not item.courtesy"> 
    140141                  <td class="summary" colspan="7" py:choose=""> 
    141142                    <py:when test="wiki_format_messages"> 
    142143                      ${wiki_to_html(change.message, escape_newlines=True)} 
  • trac/versioncontrol/web_ui/log.py

     
    7373        verbose = req.args.get('verbose') 
    7474        limit = int(req.args.get('limit', LOG_LIMIT)) 
    7575 
     76        peek_back = format not in ('rss', 'changelog') 
     77 
    7678        repos = self.env.get_repository(req.authname) 
    7779        normpath = repos.normalize_path(path) 
    7880        revranges = None 
     
    104106            else: 
    105107                def history(limit): 
    106108                    prevpath = path 
     109                    # Support for the phantom diff source 
     110                    if peek_back and len(revranges.pairs): 
     111                        x = revranges.pairs[0] 
     112                        if x[0] > 1: 
     113                            revranges.pairs[0] = (x[0]-1, x[1]) 
    107114                    ranges = list(revranges.pairs) 
    108115                    ranges.reverse() 
    109116                    for (a,b) in ranges: 
     
    123130        depth = 1 
    124131        fix_deleted_rev = False 
    125132        previous_path = normpath 
     133        stop_flag = 0 
    126134        for old_path, old_rev, old_chg in history(limit+1): 
    127135            if fix_deleted_rev: 
    128136                fix_deleted_rev['existing_rev'] = old_rev 
    129137                fix_deleted_rev = False 
    130138            if stop_rev and repos.rev_older_than(old_rev, stop_rev): 
    131                 break 
     139                # Get one more rev to support peek_back 
     140                if stop_flag == 1: break 
     141                stop_flag = 1 
    132142            old_path = repos.normalize_path(old_path) 
    133143 
    134144            item = { 
     
    173183                     'Revision Log (restarting at %s, rev. %s)' 
    174184                     % (next_path, next_rev)) 
    175185            # now, only show 'limit' results 
    176             del info[-1] 
     186            if peek_back: 
     187                info[-1]['courtesy'] = True 
     188            else: 
     189                del info[-1] 
     190        elif peek_back and revranges and len(revranges.pairs) and info[-1]['rev'] < revranges.a: 
     191            #FIXME: this needs to act on  
     192            info[-1]['courtesy'] = True 
    177193         
    178194        revs = [i['rev'] for i in info] 
    179195        changes = get_changes(repos, revs)