Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revlog.py @ 37908: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
37907:6921d3ecadc1 | 37908: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 |