Mercurial > hg
changeset 49229:ed9170ff791a
bundle: quick fix to ludicrous performance penalty
We tried a `hg bundle --base ':(tip^)' --rev 'all()'` on a large repository and
it spent 3 minutes on this 2 list comprehensions. This change remove this cost.
There are still a lot of low hanging fruits as the command still take 30
seconds. However this is a trivial patch with a massive speedup so I'll just
sent it.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 17 May 2022 13:53:14 +0100 |
parents | b909dd35d9ab |
children | 5d28246b9acc |
files | mercurial/commands.py |
diffstat | 1 files changed, 3 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Fri May 20 14:27:46 2022 +0200 +++ b/mercurial/commands.py Tue May 17 13:53:14 2022 +0100 @@ -1600,8 +1600,9 @@ raise error.InputError( _(b"--base is incompatible with specifying destinations") ) - common = [repo[rev].node() for rev in base] - heads = [repo[r].node() for r in revs] if revs else None + cl = repo.changelog + common = [cl.node(rev) for rev in base] + heads = [cl.node(r) for r in revs] if revs else None outgoing = discovery.outgoing(repo, common, heads) missing = outgoing.missing excluded = outgoing.excluded