# HG changeset patch # User Valentin Gatien-Baron # Date 1590490991 14400 # Node ID 5d8ae9248a70f082b852535dbc62ac926eee1979 # Parent e607099d8b938bef4fc2581385917a4cf80a803a 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 diff -r e607099d8b93 -r 5d8ae9248a70 mercurial/scmutil.py --- 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