store: optimize _pathencode by checking the length of the unencoded path
If the input path is already longer than _maxstorepathlen, then we can skip
doing the basic encoding (encodedir, _encodefname and _auxencode) and directly
proceed to the hashed encoding. Those encodings, if at all, will make the path
only longer.
--- a/mercurial/store.py Sun Sep 30 23:53:56 2012 +0200
+++ b/mercurial/store.py Sun Sep 30 23:53:56 2012 +0200
@@ -255,6 +255,8 @@
return res
def _pathencode(path):
+ if len(path) > _maxstorepathlen:
+ return None
ef = _encodefname(encodedir(path)).split('/')
res = '/'.join(_auxencode(ef, True))
if len(res) > _maxstorepathlen: