Edgewall Software

Ticket #9230: 9230-display-rev-hg-r9248.patch

File 9230-display-rev-hg-r9248.patch, 6.3 KB (added by rblank, 2 years ago)

Move configurable rev display to display_rev().

  • tracext/hg/backend.py

    diff --git a/tracext/hg/backend.py b/tracext/hg/backend.py
    a b  
    103103 
    104104    def _render_property(self, name, mode, context, props): 
    105105        repos, revs = props[name] 
     106         
     107        if name in ('Parents', 'Children'): 
     108            label = repos.display_rev 
     109        else: 
     110            label = lambda rev: rev 
     111         
    106112        def link(rev): 
    107113            chgset = repos.get_changeset(rev) 
    108             return tag.a(rev, class_="changeset", 
     114            return tag.a(label(rev), class_="changeset", 
    109115                         title=shorten_line(chgset.message), 
    110116                         href=context.href.changeset(rev, repos.reponame)) 
     117         
    111118        if name == 'Parents' and len(revs) == 2: # merge 
    112119            new = context.resource.id 
    113120            parent_links = [ 
     
    147154        if name == 'transplant_source': 
    148155            try: 
    149156                chgset = MercurialChangeset(repos, value) 
    150                 link = tag.a(chgset.rev, class_="changeset", 
     157                link = tag.a(repos.display_rev(chgset.rev), class_="changeset", 
    151158                             title=shorten_line(chgset.message), 
    152                              href=context.href.changeset(short(value), 
     159                             href=context.href.changeset(hex(value), 
    153160                                                         repos.reponame)) 
    154161            except LookupError: 
    155162                link = tag.a(hex(value), class_="missing changeset", 
     
    399406        self.repo = None 
    400407 
    401408    def normalize_path(self, path): 
    402         """Remove leading "/", except for the root""" 
     409        """Remove leading "/", except for the root.""" 
    403410        return path and path.strip('/') or '' 
    404411 
    405412    def normalize_rev(self, rev): 
    406         """Return the changelog node for the specified rev""" 
     413        """Return the full hash for the specified rev.""" 
    407414        if rev is not None:  
    408415            rev = str(rev)  
    409         return self.hg_display(self.hg_node(rev))  
     416        return hex(self.hg_node(rev)) 
    410417 
    411418    def short_rev(self, rev): 
    412419        """Return the revision number for the specified rev, in compact form. 
     
    422429                return rev # it was already a short rev 
    423430        return self.repo.changelog.rev(self.hg_node(rev)) 
    424431 
     432    def display_rev(self, rev): 
     433        return self.hg_display(self.hg_node(rev)) 
     434 
    425435    def get_quickjump_entries(self, rev): 
    426436        branches = {} 
    427437        closed_branches = {} 
     
    524534                             self.hg_node(rev)) 
    525535 
    526536    def get_oldest_rev(self): 
    527         return self.hg_display(nullid) 
     537        return hex(nullid) 
    528538 
    529539    def get_youngest_rev(self): 
    530         return self.hg_display(self.repo.changelog.tip()) 
     540        return hex(self.repo.changelog.tip()) 
    531541 
    532542    def previous_rev(self, rev, path=''): # FIXME: path ignored for now 
    533543        n = self.hg_node(rev) 
    534544        log = self.repo.changelog 
    535545        for p in log.parents(n): 
    536546            if p != nullid: 
    537                 return self.hg_display(p) # always follow first parent 
     547                return hex(p) # always follow first parent 
    538548     
    539549    def next_rev(self, rev, path=''): 
    540550        n = self.hg_node(rev) 
     
    542552            fc = filectx(self.repo, path, n) 
    543553            if fc: # it is a file 
    544554                for child_fc in fc.children(): 
    545                     return self.hg_display(child_fc.node()) 
     555                    return hex(child_fc.node()) 
    546556                else: 
    547557                    return None 
    548558            # it might be a directory (not supported for now) FIXME 
    549559        log = self.repo.changelog 
    550560        for c in log.children(n): 
    551             return self.hg_display(c) # always follow first child 
     561            return hex(c) # always follow first child 
    552562     
    553563    def rev_older_than(self, rev1, rev2): 
    554564        log = self.repo.changelog 
     
    704714                self.entries = [] 
    705715                node = log.tip() 
    706716            else: 
    707                 raise NoSuchNode(path, self.repos.hg_display(self.n)) 
     717                raise NoSuchNode(path, hex(self.n)) 
    708718        self.time = self.repos.hg_time(log.read(node)[2]) 
    709         rev = self.repos.hg_display(node) 
     719        rev = hex(node) 
    710720        Node.__init__(self, self.repos, path, rev, kind) 
    711721        self.created_path = path 
    712722        self.created_rev = rev 
     
    800810            if entry: 
    801811                count += 1 
    802812                yield entry 
    803             entry = (path, self.repos.hg_display(ctx.node()), Changeset.EDIT) 
     813            entry = (path, hex(ctx.node()), Changeset.EDIT) 
    804814        if entry: 
    805815            if count < limit: 
    806816                entry = entry[0:2] + (Changeset.ADD,) 
     
    832842                    count += 1 
    833843                    yield entry 
    834844                n = repo.changelog.node(rev) 
    835                 entry = (path, self.repos.hg_display(n), Changeset.EDIT) 
     845                entry = (path, hex(n), Changeset.EDIT) 
    836846        if entry: 
    837847            if count < limit: 
    838848                entry = entry[0:2] + (Changeset.ADD,) 
     
    884894        if len(log_data) > 5: # extended changelog, since [hg 2f35961854fb] 
    885895            extra = log_data[5] 
    886896        time = repos.hg_time(timeinfo) 
    887         Changeset.__init__(self, repos, repos.hg_display(n), to_unicode(desc), 
     897        Changeset.__init__(self, repos, hex(n), to_unicode(desc), 
    888898                           to_unicode(user), time) 
    889899        self.repos = repos 
    890900        self.n = n 
    891901        self.manifest_n = manifest 
    892902        self.files = files 
    893         self.parents = [repos.hg_display(p) for p in log.parents(n) \ 
    894                         if p != nullid] 
    895         self.children = [repos.hg_display(c) for c in log.children(n)] 
     903        self.parents = [hex(p) for p in log.parents(n) if p != nullid] 
     904        self.children = [hex(c) for c in log.children(n)] 
    896905        self.tags = [t for t in repos.repo.nodetags(n)] 
    897906        self.branch = extra.pop("branch", None)  
    898907        self.extra = extra 
     
    958967                if rename_info: 
    959968                    base_path, base_filenode = rename_info 
    960969                    base_ctx = repo.filectx(base_path, fileid=base_filenode) 
    961                     base_rev = self.repos.hg_display(base_ctx.node()) 
     970                    base_rev = hex(base_ctx.node()) 
    962971                    if base_path in deletions: 
    963972                        action = Changeset.MOVE 
    964973                        renames[base_path] = f