Mercurial > hg
changeset 17588:3d789dd72316
store: keep an accumulated length for the shorted dirs in _hybridencode
so we don't have to repeatedly do '/'.join(sdirs) inside the loop
author | Adrian Buehlmann <adrian@cadifra.com> |
---|---|
date | Sun, 16 Sep 2012 11:36:00 +0200 |
parents | 5fb8cf6f4f58 |
children | b11024849db6 |
files | mercurial/store.py |
diffstat | 1 files changed, 8 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/store.py Sun Sep 16 11:35:55 2012 +0200 +++ b/mercurial/store.py Sun Sep 16 11:36:00 2012 +0200 @@ -204,15 +204,20 @@ basename = parts[-1] _root, ext = os.path.splitext(basename) sdirs = [] + sdirslen = 0 for p in parts[:-1]: d = p[:_dirprefixlen] if d[-1] in '. ': # Windows can't access dirs ending in period or space d = d[:-1] + '_' - t = '/'.join(sdirs) + '/' + d - if len(t) > _maxshortdirslen: - break + if sdirslen == 0: + t = len(d) + else: + t = sdirslen + 1 + len(d) + if t > _maxshortdirslen: + break sdirs.append(d) + sdirslen = t dirs = '/'.join(sdirs) if len(dirs) > 0: dirs += '/'