Mercurial > public > mercurial-scm > hg
diff mercurial/merge.py @ 49892:c7624b1ac8b4
merge: cache the fs checks made during [_checkunknownfiles]
this ~halves the number of lstat calls made when updating
from rev(-1) to a revision with lots of files
author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
---|---|
date | Wed, 04 Jan 2023 17:14:33 +0000 |
parents | 3aa8e569478a |
children | b7cf91ef03ba |
line wrap: on
line diff
--- a/mercurial/merge.py Wed Jan 04 17:03:15 2023 +0000 +++ b/mercurial/merge.py Wed Jan 04 17:14:33 2023 +0000 @@ -145,18 +145,19 @@ warnconflicts.update(conflicts) checkunknowndirs = _unknowndirschecker() - for f in mresult.files( - ( - mergestatemod.ACTION_CREATED, - mergestatemod.ACTION_DELETED_CHANGED, - ) - ): - if _checkunknownfile(repo, wctx, mctx, f): - fileconflicts.add(f) - elif pathconfig and f not in wctx: - path = checkunknowndirs(repo, wctx, f) - if path is not None: - pathconflicts.add(path) + with repo.wvfs.audit.cached(): + for f in mresult.files( + ( + mergestatemod.ACTION_CREATED, + mergestatemod.ACTION_DELETED_CHANGED, + ) + ): + if _checkunknownfile(repo, wctx, mctx, f): + fileconflicts.add(f) + elif pathconfig and f not in wctx: + path = checkunknowndirs(repo, wctx, f) + if path is not None: + pathconflicts.add(path) for f, args, msg in mresult.getactions( [mergestatemod.ACTION_LOCAL_DIR_RENAME_GET] ):