diff --git a/mercurial/setdiscovery.py b/mercurial/setdiscovery.py --- a/mercurial/setdiscovery.py +++ b/mercurial/setdiscovery.py @@ -46,6 +46,11 @@ import random from .i18n import _ +try: + from .rustext import discovery as rustdisco +except ImportError: + rustdisco = None + from .node import ( nullid, nullrev, @@ -387,8 +392,11 @@ # full blown discovery randomize = ui.configbool('devel', 'discovery.randomize') - disco = partialdiscovery(local, ownheads, randomize=randomize) - + if rustdisco is not None: + disco = rustdisco.PartialDiscovery(local.changelog.index, ownheads, + randomize=randomize) + else: + disco = partialdiscovery(local, ownheads, randomize=randomize) # treat remote heads (and maybe own heads) as a first implicit sample # response disco.addcommons(knownsrvheads)