store: add a fallback _pathencode Python function
which does the equivalent of parsers.pathencode, so it can be used as a
default
--- a/mercurial/store.py Wed Sep 19 13:58:51 2012 +0200
+++ b/mercurial/store.py Wed Sep 19 14:00:23 2012 +0200
@@ -254,20 +254,24 @@
res = _hashencode(path, dotencode)
return res
+def _pathencode(path):
+ ef = _encodefname(encodedir(path)).split('/')
+ res = '/'.join(_auxencode(ef, True))
+ if len(res) > _maxstorepathlen:
+ return None
+ return res
+
+_pathencode = getattr(parsers, 'pathencode', _pathencode)
+
+def _dothybridencode(f):
+ ef = _pathencode(f)
+ if ef is None:
+ return _hashencode(encodedir(f), True)
+ return ef
+
def _plainhybridencode(f):
return _hybridencode(f, False)
-_pathencode = getattr(parsers, 'pathencode', None)
-if _pathencode:
- def _dothybridencode(f):
- ef = _pathencode(f)
- if ef is None:
- return _hashencode(encodedir(f), True)
- return ef
-else:
- def _dothybridencode(f):
- return _hybridencode(f, True)
-
def _calcmode(path):
try:
# files in .hg/ will be created using this mode