Show More
@@ -702,6 +702,13 b' coreconfigitem(' | |||
|
702 | 702 | b'debug.peer-request', |
|
703 | 703 | default=False, |
|
704 | 704 | ) |
|
705 | # If discovery.exchange-heads is False, the discovery will not start with | |
|
706 | # remote head fetching and local head querying. | |
|
707 | coreconfigitem( | |
|
708 | b'devel', | |
|
709 | b'discovery.exchange-heads', | |
|
710 | default=True, | |
|
711 | ) | |
|
705 | 712 | # If discovery.grow-sample is False, the sample size used in set discovery will |
|
706 | 713 | # not be increased through the process |
|
707 | 714 | coreconfigitem( |
@@ -314,6 +314,8 b' def findcommonheads(' | |||
|
314 | 314 | else: |
|
315 | 315 | ownheads = [rev for rev in cl.headrevs() if rev != nullrev] |
|
316 | 316 | |
|
317 | initial_head_exchange = ui.configbool(b'devel', b'discovery.exchange-heads') | |
|
318 | ||
|
317 | 319 | # We also ask remote about all the local heads. That set can be arbitrarily |
|
318 | 320 | # large, so we used to limit it size to `initialsamplesize`. We no longer |
|
319 | 321 | # do as it proved counter productive. The skipped heads could lead to a |
@@ -365,6 +367,7 b' def findcommonheads(' | |||
|
365 | 367 | # graph (with many heads) attached to, but very independant to a the |
|
366 | 368 | # "simple" graph on the server. This is a fairly usual case and have |
|
367 | 369 | # not been met in the wild so far. |
|
370 | if initial_head_exchange: | |
|
368 | 371 | if remote.limitedarguments: |
|
369 | 372 | sample = _limitsample(ownheads, initialsamplesize) |
|
370 | 373 | # indices between sample and externalized version must match |
@@ -392,6 +395,11 b' def findcommonheads(' | |||
|
392 | 395 | if srvheadhashes != [nullid]: |
|
393 | 396 | return [nullid], True, srvheadhashes |
|
394 | 397 | return [nullid], False, [] |
|
398 | else: | |
|
399 | # we still need the remote head for the function return | |
|
400 | with remote.commandexecutor() as e: | |
|
401 | fheads = e.callcommand(b'heads', {}) | |
|
402 | srvheadhashes = fheads.result() | |
|
395 | 403 | |
|
396 | 404 | # start actual discovery (we note this before the next "if" for |
|
397 | 405 | # compatibility reasons) |
@@ -408,6 +416,7 b' def findcommonheads(' | |||
|
408 | 416 | except error.LookupError: |
|
409 | 417 | continue |
|
410 | 418 | |
|
419 | if initial_head_exchange: | |
|
411 | 420 | # early exit if we know all the specified remote heads already |
|
412 | 421 | if len(knownsrvheads) == len(srvheadhashes): |
|
413 | 422 | ui.debug(b"all remote heads known locally\n") |
@@ -429,12 +438,13 b' def findcommonheads(' | |||
|
429 | 438 | disco = partialdiscovery( |
|
430 | 439 | local, ownheads, hard_limit_sample, randomize=randomize |
|
431 | 440 | ) |
|
441 | if initial_head_exchange: | |
|
432 | 442 | # treat remote heads (and maybe own heads) as a first implicit sample |
|
433 | 443 | # response |
|
434 | 444 | disco.addcommons(knownsrvheads) |
|
435 | 445 | disco.addinfo(zip(sample, yesno)) |
|
436 | 446 | |
|
437 | full = False | |
|
447 | full = not initial_head_exchange | |
|
438 | 448 | progress = ui.makeprogress(_(b'searching'), unit=_(b'queries')) |
|
439 | 449 | while not disco.iscomplete(): |
|
440 | 450 |
@@ -1412,23 +1412,22 b' One with >200 heads. We now switch to se' | |||
|
1412 | 1412 | missing: 1040 |
|
1413 | 1413 | common heads: 3ee37d65064a |
|
1414 | 1414 | |
|
1415 | $ hg -R a debugdiscovery b --debug --config devel.discovery.randomize=false --config devel.discovery.grow-sample.rate=1.01 | |
|
1415 | $ hg -R a debugdiscovery b --debug --config devel.discovery.exchange-heads=false --config devel.discovery.randomize=false --config devel.discovery.grow-sample.rate=1.01 | |
|
1416 | 1416 | comparing with b |
|
1417 | query 1; heads | |
|
1418 | 1417 | searching for changes |
|
1419 | taking quick initial sample | |
|
1420 | query 2; still undecided: 1080, sample size is: 100 | |
|
1421 | 1418 | sampling from both directions |
|
1422 |
query |
|
|
1419 | query 1; still undecided: 1340, sample size is: 200 | |
|
1420 | sampling from both directions | |
|
1421 | query 2; still undecided: 795, sample size is: 202 | |
|
1423 | 1422 | sampling from both directions |
|
1424 |
query |
|
|
1423 | query 3; still undecided: 525, sample size is: 204 | |
|
1425 | 1424 | sampling from both directions |
|
1426 |
query |
|
|
1425 | query 4; still undecided: 252, sample size is: 206 | |
|
1427 | 1426 | sampling from both directions |
|
1428 |
query |
|
|
1429 |
|
|
|
1427 | query 5; still undecided: 44, sample size is: 44 | |
|
1428 | 5 total queries in *s (glob) | |
|
1430 | 1429 | elapsed time: * seconds (glob) |
|
1431 |
round-trips: |
|
|
1430 | round-trips: 5 | |
|
1432 | 1431 | heads summary: |
|
1433 | 1432 | total common heads: 1 |
|
1434 | 1433 | also local heads: 0 |
General Comments 0
You need to be logged in to leave comments.
Login now