comparison mercurial/revlog.py @ 37864:890bdf0e33c8

shortest: extract function for checking if a prefix is a revnum Much of isvalid() was about testing if a prefix is a valid revnum. I want to reuse that soon, so let's move it out. There is no significant slowdown from the function call overhead. Differential Revision: https://phab.mercurial-scm.org/D3460
author Martin von Zweigbergk <martinvonz@google.com>
date Wed, 02 May 2018 22:56:10 -0700
parents 6921d3ecadc1
children da083d9fafab
comparison
equal deleted inserted replaced
37863:6921d3ecadc1 37864:890bdf0e33c8
1500 1500
1501 raise LookupError(id, self.indexfile, _('no match found')) 1501 raise LookupError(id, self.indexfile, _('no match found'))
1502 1502
1503 def shortest(self, node, minlength=1): 1503 def shortest(self, node, minlength=1):
1504 """Find the shortest unambiguous prefix that matches node.""" 1504 """Find the shortest unambiguous prefix that matches node."""
1505 def isrev(prefix):
1506 try:
1507 i = int(prefix)
1508 # if we are a pure int, then starting with zero will not be
1509 # confused as a rev; or, obviously, if the int is larger
1510 # than the value of the tip rev
1511 if prefix[0] == '0' or i > len(self):
1512 return False
1513 return True
1514 except ValueError:
1515 return False
1516
1505 def isvalid(prefix): 1517 def isvalid(prefix):
1506 try: 1518 try:
1507 if self._partialmatch(prefix) is None: 1519 if self._partialmatch(prefix) is None:
1508 return False 1520 return False
1509 except error.RevlogError: 1521 except error.RevlogError:
1510 return False 1522 return False
1511 except error.WdirUnsupported: 1523 except error.WdirUnsupported:
1512 # single 'ff...' match 1524 # single 'ff...' match
1513 return True 1525 return True
1514 try: 1526 return not isrev(prefix)
1515 i = int(prefix)
1516 # if we are a pure int, then starting with zero will not be
1517 # confused as a rev; or, obviously, if the int is larger
1518 # than the value of the tip rev
1519 if prefix[0] == '0' or i > len(self):
1520 return True
1521 return False
1522 except ValueError:
1523 return True
1524 1527
1525 hexnode = hex(node) 1528 hexnode = hex(node)
1526 shortest = hexnode 1529 shortest = hexnode
1527 startlength = max(6, minlength) 1530 startlength = max(6, minlength)
1528 length = startlength 1531 length = startlength