mercurial/setdiscovery.py
changeset 39176 fec01c69b0f0
parent 39174 71d83b315778
child 39178 274acf379dbb
equal deleted inserted replaced
39175:bbb855c412c6 39176:fec01c69b0f0
    49 from .node import (
    49 from .node import (
    50     nullid,
    50     nullid,
    51     nullrev,
    51     nullrev,
    52 )
    52 )
    53 from . import (
    53 from . import (
    54     dagutil,
       
    55     error,
    54     error,
    56     util,
    55     util,
    57 )
    56 )
    58 
    57 
    59 def _updatesample(revs, heads, sample, parentfn, quicksamplesize=0):
    58 def _updatesample(revs, heads, sample, parentfn, quicksamplesize=0):
   156     if ancestorsof is not None:
   155     if ancestorsof is not None:
   157         ownheads = [clrev(n) for n in ancestorsof]
   156         ownheads = [clrev(n) for n in ancestorsof]
   158     else:
   157     else:
   159         ownheads = [rev for rev in cl.headrevs() if rev != nullrev]
   158         ownheads = [rev for rev in cl.headrevs() if rev != nullrev]
   160 
   159 
   161     dag = dagutil.revlogdag(cl)
       
   162 
       
   163     # early exit if we know all the specified remote heads already
   160     # early exit if we know all the specified remote heads already
   164     ui.debug("query 1; heads\n")
   161     ui.debug("query 1; heads\n")
   165     roundtrips += 1
   162     roundtrips += 1
   166     sample = _limitsample(ownheads, initialsamplesize)
   163     sample = _limitsample(ownheads, initialsamplesize)
   167     # indices between sample and externalized version must match
   164     # indices between sample and externalized version must match
   271             common.addbases(commoninsample)
   268             common.addbases(commoninsample)
   272             common.removeancestorsfrom(undecided)
   269             common.removeancestorsfrom(undecided)
   273 
   270 
   274     # heads(common) == heads(common.bases) since common represents common.bases
   271     # heads(common) == heads(common.bases) since common represents common.bases
   275     # and all its ancestors
   272     # and all its ancestors
   276     result = dag.headsetofconnecteds(common.bases)
   273     # The presence of nullrev will confuse heads(). So filter it out.
   277     # common.bases can include nullrev, but our contract requires us to not
   274     result = set(local.revs('heads(%ld)', common.bases - {nullrev}))
   278     # return any heads in that case, so discard that
       
   279     result.discard(nullrev)
       
   280     elapsed = util.timer() - start
   275     elapsed = util.timer() - start
   281     progress.complete()
   276     progress.complete()
   282     ui.debug("%d total queries in %.4fs\n" % (roundtrips, elapsed))
   277     ui.debug("%d total queries in %.4fs\n" % (roundtrips, elapsed))
   283     msg = ('found %d common and %d unknown server heads,'
   278     msg = ('found %d common and %d unknown server heads,'
   284            ' %d roundtrips in %.4fs\n')
   279            ' %d roundtrips in %.4fs\n')