[PATCH] discovery: don't compute allfuturecommon when it won't be used
Michael O'Connor
moconnor at janestreet.com
Mon Apr 13 14:41:42 UTC 2015
# HG changeset patch
# User Michael O'Connor <moconnor at janestreet.com>
# Date 1428933276 14400
# Mon Apr 13 09:54:36 2015 -0400
# Node ID 0b544ac4295f50bb6fd142fee0600819331079bd
# Parent 52ff737c63d2b2cb41185549aa9c35bc47317032
discovery: don't compute allfuturecommon when it won't be used
In repos with many changesets, the computation of allfuturecommon
can take a significant amount of time. Since it's only used if
there's an obsstore, don't compute it otherwise.
diff --git a/mercurial/discovery.py b/mercurial/discovery.py
--- a/mercurial/discovery.py
+++ b/mercurial/discovery.py
@@ -272,9 +272,13 @@
# If there are more heads after the push than before, a suitable
# error message, depending on unsynced status, is displayed.
error = None
- allmissing = set(outgoing.missing)
- allfuturecommon = set(c.node() for c in repo.set('%ld', outgoing.common))
- allfuturecommon.update(allmissing)
+ # If there is no obsstore, allfuturecommon won't be used, so no
+ # need to compute it.
+ if repo.obsstore:
+ allmissing = set(outgoing.missing)
+ allfuturecommon = set(c.node()
+ for c in repo.set('%ld', outgoing.common))
+ allfuturecommon.update(allmissing)
for branch, heads in sorted(headssum.iteritems()):
remoteheads, newheads, unsyncedheads = heads
candidate_newhs = set(newheads)
More information about the Mercurial-devel
mailing list