This is an archive of the discontinued Mercurial Phabricator instance.

copies: avoid materializing a full directory map during copy tracing
ClosedPublic

Authored by spectral on Dec 2 2020, 2:43 PM.

Details

Summary

Materializing a full copy of every directory in a treemanifest repo can be quite
expensive, even with a narrow matcher. For flat manifest repos, this should be
equivalent - it will still materialize (and cache) a dict of all of the dirs
inside of the manifest object, we just don't get a copy of it.

In a repo I have here, this brings the time for a simple rebase from 11.197s to
4.609s.

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.