# HG changeset patch # User Adrian Buehlmann # Date 2012-09-19 12:00:23 # Node ID ae103510f6aa985ed37c300296b74e5c674e33f7 # Parent 448e6ed7c5572c2d7a56cac20b970bee437c442d store: add a fallback _pathencode Python function which does the equivalent of parsers.pathencode, so it can be used as a default diff --git a/mercurial/store.py b/mercurial/store.py --- a/mercurial/store.py +++ b/mercurial/store.py @@ -254,20 +254,24 @@ def _hybridencode(path, dotencode): 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