Mercurial > hg
changeset 44858:5d8ae9248a70
scmutil: speed up relativization of paths when it's a no-op
Running commands from the root is commmon, in particular for
automation. Running `hg files > /tmp/a` from the root of
mozilla-central on linux:
before:
real 0m1,510s
user 0m1,387s
sys 0m0,090s
after:
real 0m1,266s
user 0m1,165s
sys 0m0,073s
(there are 280k paths, so this was costing ~1us per path somehow)
Differential Revision: https://phab.mercurial-scm.org/D8585
author | Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> |
---|---|
date | Tue, 26 May 2020 07:03:11 -0400 |
parents | e607099d8b93 |
children | 15e26cc0e2c6 |
files | mercurial/scmutil.py |
diffstat | 1 files changed, 6 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/scmutil.py Mon May 18 16:00:26 2020 -0400 +++ b/mercurial/scmutil.py Tue May 26 07:03:11 2020 -0400 @@ -803,9 +803,12 @@ if relative: cwd = repo.getcwd() - pathto = repo.pathto - return lambda f: pathto(f, cwd) - elif repo.ui.configbool(b'ui', b'slash'): + if cwd != b'': + # this branch is correct when cwd == b'', ie cwd = repo root, + # but it's slower + pathto = repo.pathto + return lambda f: pathto(f, cwd) + if repo.ui.configbool(b'ui', b'slash'): return lambda f: f else: return util.localpath