mercurial/namespaces.py
changeset 23559 3b3a962e3677
parent 23558 3198aac7a95d
child 23561 3c2419e07df5
equal deleted inserted replaced
23558:3198aac7a95d 23559:3b3a962e3677
       
     1 from i18n import _
     1 from mercurial import util
     2 from mercurial import util
     2 import weakref
     3 import weakref
     3 
     4 
     4 def tolist(val):
     5 def tolist(val):
     5     """
     6     """
    56         val = {'namemap': namemap}
    57         val = {'namemap': namemap}
    57         if order is not None:
    58         if order is not None:
    58             self._names.insert(order, namespace, val)
    59             self._names.insert(order, namespace, val)
    59         else:
    60         else:
    60             self._names[namespace] = val
    61             self._names[namespace] = val
       
    62 
       
    63     def singlenode(self, name):
       
    64         """
       
    65         Return the 'best' node for the given name. Best means the first node
       
    66         in the first nonempty list returned by a name-to-nodes mapping function
       
    67         in the defined precedence order.
       
    68 
       
    69         Raises a KeyError if there is no such node.
       
    70         """
       
    71         for ns, v in self._names.iteritems():
       
    72             n = v['namemap'](self.repo, name)
       
    73             if n:
       
    74                 # return max revision number
       
    75                 if len(n) > 1:
       
    76                     cl = self.repo.changelog
       
    77                     maxrev = max(cl.rev(node) for node in n)
       
    78                     return cl.node(maxrev)
       
    79                 return n[0]
       
    80         raise KeyError(_('no such name: %s') % name)