exchange: allow fallbackheads to use lazy set behavior
The common ancestor set implementation was made lazy a couple years ago, but
this piece of code still required processing the entire repo by putting set()
around the lazy set. The code was introduced in
5653f2d166ea, a year before the
lazy ancestor set was added.
Dropping the set() shaves 3.5 seconds off of 'push -r' in repos with hundreds of
thousands of commits.
--- a/mercurial/exchange.py Sat Aug 22 16:38:51 2015 -0700
+++ b/mercurial/exchange.py Mon Sep 07 17:08:35 2015 -0700
@@ -147,7 +147,7 @@
#
# We can pick:
# * missingheads part of common (::commonheads)
- common = set(self.outgoing.common)
+ common = self.outgoing.common
nm = self.repo.changelog.nodemap
cheads = [node for node in self.revs if nm[node] in common]
# and