diff -r d3b5cbe311d9 -r b9ff059fd194 mercurial/setdiscovery.py --- a/mercurial/setdiscovery.py Thu May 16 16:22:20 2019 +0200 +++ b/mercurial/setdiscovery.py Wed Jun 05 11:23:25 2019 +0200 @@ -242,13 +242,13 @@ # update from roots revsroots = set(repo.revs('roots(%ld)', revs)) - if not self._respectsize: - size = max(size, len(revsroots)) - childrenrevs = self._childrengetter() - _updatesample(revs, revsroots, sample, childrenrevs) assert sample + + if not self._respectsize: + size = max(size, min(len(revsroots), len(revsheads))) + sample = _limitsample(sample, size) if len(sample) < size: more = size - len(sample)