diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py --- a/mercurial/debugcommands.py +++ b/mercurial/debugcommands.py @@ -1034,6 +1034,14 @@ roots_missing = repo.revs(b'roots(%ld)', missing) assert len(common) + len(missing) == len(all) + initial_undecided = repo.revs( + b'not (::%ln or %ln::)', heads_common_remote, heads_common_local + ) + heads_initial_undecided = repo.revs(b'heads(%ld)', initial_undecided) + roots_initial_undecided = repo.revs(b'roots(%ld)', initial_undecided) + common_initial_undecided = initial_undecided & common + missing_initial_undecided = initial_undecided & missing + data = {} data[b'elapsed'] = t.elapsed data[b'nb-common-heads'] = len(heads_common) @@ -1052,6 +1060,11 @@ data[b'nb-revs-missing'] = len(missing) data[b'nb-missing-heads'] = len(roots_missing) data[b'nb-missing-roots'] = len(heads_missing) + data[b'nb-ini_und'] = len(initial_undecided) + data[b'nb-ini_und-heads'] = len(heads_initial_undecided) + data[b'nb-ini_und-roots'] = len(roots_initial_undecided) + data[b'nb-ini_und-common'] = len(common_initial_undecided) + data[b'nb-ini_und-missing'] = len(missing_initial_undecided) # display discovery summary ui.writenoi18n(b"elapsed time: %(elapsed)f seconds\n" % data) @@ -1085,6 +1098,11 @@ ui.writenoi18n(b" missing: %(nb-revs-missing)9d\n" % data) ui.writenoi18n(b" heads: %(nb-missing-heads)9d\n" % data) ui.writenoi18n(b" roots: %(nb-missing-roots)9d\n" % data) + ui.writenoi18n(b" first undecided set: %(nb-ini_und)9d\n" % data) + ui.writenoi18n(b" heads: %(nb-ini_und-heads)9d\n" % data) + ui.writenoi18n(b" roots: %(nb-ini_und-roots)9d\n" % data) + ui.writenoi18n(b" common: %(nb-ini_und-common)9d\n" % data) + ui.writenoi18n(b" missing: %(nb-ini_und-missing)9d\n" % data) if ui.verbose: ui.writenoi18n( diff --git a/tests/test-setdiscovery.t b/tests/test-setdiscovery.t --- a/tests/test-setdiscovery.t +++ b/tests/test-setdiscovery.t @@ -57,7 +57,16 @@ unknown: 2 local changesets: 7 common: 7 + heads: 2 + roots: 1 missing: 0 + heads: 0 + roots: 0 + first undecided set: 3 + heads: 1 + roots: 1 + common: 3 + missing: 0 common heads: 01241442b3c2 b5714e113bc0 % -- a -> b set @@ -79,7 +88,16 @@ unknown: 2 local changesets: 7 common: 7 + heads: 2 + roots: 1 missing: 0 + heads: 0 + roots: 0 + first undecided set: 3 + heads: 1 + roots: 1 + common: 3 + missing: 0 common heads: 01241442b3c2 b5714e113bc0 % -- a -> b set (tip only) @@ -101,7 +119,16 @@ unknown: 3 local changesets: 7 common: 6 + heads: 1 + roots: 1 missing: 1 + heads: 1 + roots: 1 + first undecided set: 6 + heads: 2 + roots: 1 + common: 5 + missing: 1 common heads: b5714e113bc0 % -- b -> a tree @@ -122,7 +149,16 @@ unknown: 0 local changesets: 15 common: 7 + heads: 2 + roots: 1 missing: 8 + heads: 2 + roots: 2 + first undecided set: 8 + heads: 2 + roots: 2 + common: 0 + missing: 8 common heads: 01241442b3c2 b5714e113bc0 % -- b -> a set @@ -144,7 +180,16 @@ unknown: 0 local changesets: 15 common: 7 + heads: 2 + roots: 1 missing: 8 + heads: 2 + roots: 2 + first undecided set: 8 + heads: 2 + roots: 2 + common: 0 + missing: 8 common heads: 01241442b3c2 b5714e113bc0 % -- b -> a set (tip only) @@ -166,7 +211,16 @@ unknown: 0 local changesets: 15 common: 7 + heads: 2 + roots: 1 missing: 8 + heads: 2 + roots: 2 + first undecided set: 8 + heads: 2 + roots: 2 + common: 0 + missing: 8 common heads: 01241442b3c2 b5714e113bc0 @@ -194,7 +248,16 @@ unknown: 1 local changesets: 35 common: 5 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 34 + heads: 2 + roots: 1 + common: 4 + missing: 30 common heads: bebd167eb94d % -- a -> b set @@ -219,7 +282,16 @@ unknown: 1 local changesets: 35 common: 5 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 34 + heads: 2 + roots: 1 + common: 4 + missing: 30 common heads: bebd167eb94d % -- a -> b set (tip only) @@ -244,7 +316,16 @@ unknown: 1 local changesets: 35 common: 2 + heads: 1 + roots: 1 missing: 33 + heads: 2 + roots: 2 + first undecided set: 35 + heads: 2 + roots: 1 + common: 2 + missing: 33 common heads: 66f7d451a68b % -- b -> a tree @@ -265,7 +346,16 @@ unknown: 1 local changesets: 8 common: 5 + heads: 1 + roots: 1 missing: 3 + heads: 1 + roots: 1 + first undecided set: 3 + heads: 1 + roots: 1 + common: 0 + missing: 3 common heads: bebd167eb94d % -- b -> a set @@ -290,7 +380,16 @@ unknown: 1 local changesets: 8 common: 5 + heads: 1 + roots: 1 missing: 3 + heads: 1 + roots: 1 + first undecided set: 3 + heads: 1 + roots: 1 + common: 0 + missing: 3 common heads: bebd167eb94d % -- b -> a set (tip only) @@ -315,7 +414,16 @@ unknown: 1 local changesets: 8 common: 5 + heads: 1 + roots: 1 missing: 3 + heads: 1 + roots: 1 + first undecided set: 3 + heads: 1 + roots: 1 + common: 0 + missing: 3 common heads: bebd167eb94d Both sides many new with stub: @@ -342,7 +450,16 @@ unknown: 1 local changesets: 34 common: 4 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 33 + heads: 2 + roots: 1 + common: 3 + missing: 30 common heads: 2dc09a01254d % -- a -> b set @@ -367,7 +484,16 @@ unknown: 1 local changesets: 34 common: 4 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 33 + heads: 2 + roots: 1 + common: 3 + missing: 30 common heads: 2dc09a01254d % -- a -> b set (tip only) @@ -392,7 +518,16 @@ unknown: 1 local changesets: 34 common: 2 + heads: 1 + roots: 1 missing: 32 + heads: 2 + roots: 2 + first undecided set: 34 + heads: 2 + roots: 1 + common: 2 + missing: 32 common heads: 66f7d451a68b % -- b -> a tree @@ -413,7 +548,16 @@ unknown: 1 local changesets: 34 common: 4 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 30 + heads: 1 + roots: 1 + common: 0 + missing: 30 common heads: 2dc09a01254d % -- b -> a set @@ -438,7 +582,16 @@ unknown: 1 local changesets: 34 common: 4 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 30 + heads: 1 + roots: 1 + common: 0 + missing: 30 common heads: 2dc09a01254d % -- b -> a set (tip only) @@ -463,7 +616,16 @@ unknown: 1 local changesets: 34 common: 4 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 30 + heads: 1 + roots: 1 + common: 0 + missing: 30 common heads: 2dc09a01254d @@ -491,7 +653,16 @@ unknown: 1 local changesets: 32 common: 2 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 32 + heads: 1 + roots: 1 + common: 2 + missing: 30 common heads: 66f7d451a68b % -- a -> b set @@ -516,7 +687,16 @@ unknown: 1 local changesets: 32 common: 2 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 32 + heads: 1 + roots: 1 + common: 2 + missing: 30 common heads: 66f7d451a68b % -- a -> b set (tip only) @@ -541,7 +721,16 @@ unknown: 1 local changesets: 32 common: 2 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 32 + heads: 1 + roots: 1 + common: 2 + missing: 30 common heads: 66f7d451a68b % -- b -> a tree @@ -562,7 +751,16 @@ unknown: 1 local changesets: 32 common: 2 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 32 + heads: 1 + roots: 1 + common: 2 + missing: 30 common heads: 66f7d451a68b % -- b -> a set @@ -587,7 +785,16 @@ unknown: 1 local changesets: 32 common: 2 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 32 + heads: 1 + roots: 1 + common: 2 + missing: 30 common heads: 66f7d451a68b % -- b -> a set (tip only) @@ -612,7 +819,16 @@ unknown: 1 local changesets: 32 common: 2 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 32 + heads: 1 + roots: 1 + common: 2 + missing: 30 common heads: 66f7d451a68b @@ -640,7 +856,16 @@ unknown: 1 local changesets: 52 common: 2 + heads: 1 + roots: 1 missing: 50 + heads: 1 + roots: 1 + first undecided set: 52 + heads: 1 + roots: 1 + common: 2 + missing: 50 common heads: 66f7d451a68b % -- a -> b set @@ -665,7 +890,16 @@ unknown: 1 local changesets: 52 common: 2 + heads: 1 + roots: 1 missing: 50 + heads: 1 + roots: 1 + first undecided set: 52 + heads: 1 + roots: 1 + common: 2 + missing: 50 common heads: 66f7d451a68b % -- a -> b set (tip only) @@ -690,7 +924,16 @@ unknown: 1 local changesets: 52 common: 2 + heads: 1 + roots: 1 missing: 50 + heads: 1 + roots: 1 + first undecided set: 52 + heads: 1 + roots: 1 + common: 2 + missing: 50 common heads: 66f7d451a68b % -- b -> a tree @@ -711,7 +954,16 @@ unknown: 1 local changesets: 32 common: 2 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 32 + heads: 1 + roots: 1 + common: 2 + missing: 30 common heads: 66f7d451a68b % -- b -> a set @@ -736,7 +988,16 @@ unknown: 1 local changesets: 32 common: 2 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 32 + heads: 1 + roots: 1 + common: 2 + missing: 30 common heads: 66f7d451a68b % -- b -> a set (tip only) @@ -761,7 +1022,16 @@ unknown: 1 local changesets: 32 common: 2 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 32 + heads: 1 + roots: 1 + common: 2 + missing: 30 common heads: 66f7d451a68b @@ -789,7 +1059,16 @@ unknown: 1 local changesets: 1050 common: 1000 + heads: 1 + roots: 1 missing: 50 + heads: 1 + roots: 1 + first undecided set: 1050 + heads: 1 + roots: 1 + common: 1000 + missing: 50 common heads: 7ead0cba2838 % -- a -> b set @@ -817,7 +1096,16 @@ unknown: 1 local changesets: 1050 common: 1000 + heads: 1 + roots: 1 missing: 50 + heads: 1 + roots: 1 + first undecided set: 1050 + heads: 1 + roots: 1 + common: 1000 + missing: 50 common heads: 7ead0cba2838 % -- a -> b set (tip only) @@ -845,7 +1133,16 @@ unknown: 1 local changesets: 1050 common: 1000 + heads: 1 + roots: 1 missing: 50 + heads: 1 + roots: 1 + first undecided set: 1050 + heads: 1 + roots: 1 + common: 1000 + missing: 50 common heads: 7ead0cba2838 % -- b -> a tree @@ -866,7 +1163,16 @@ unknown: 1 local changesets: 1030 common: 1000 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 1030 + heads: 1 + roots: 1 + common: 1000 + missing: 30 common heads: 7ead0cba2838 % -- b -> a set @@ -894,7 +1200,16 @@ unknown: 1 local changesets: 1030 common: 1000 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 1030 + heads: 1 + roots: 1 + common: 1000 + missing: 30 common heads: 7ead0cba2838 % -- b -> a set (tip only) @@ -922,7 +1237,16 @@ unknown: 1 local changesets: 1030 common: 1000 + heads: 1 + roots: 1 missing: 30 + heads: 1 + roots: 1 + first undecided set: 1030 + heads: 1 + roots: 1 + common: 1000 + missing: 30 common heads: 7ead0cba2838 @@ -1002,7 +1326,16 @@ unknown: 1 local changesets: 1340 common: 300 + heads: 1 + roots: 1 missing: 1040 + heads: 260 + roots: 260 + first undecided set: 1340 + heads: 260 + roots: 1 + common: 300 + missing: 1040 common heads: 3ee37d65064a $ hg -R a debugdiscovery b --debug --verbose --config progress.debug=true --rev tip comparing with b @@ -1029,7 +1362,16 @@ unknown: 1 local changesets: 1340 common: 300 + heads: 1 + roots: 1 missing: 1040 + heads: 260 + roots: 260 + first undecided set: 1340 + heads: 260 + roots: 1 + common: 300 + missing: 1040 common heads: 3ee37d65064a Test actual protocol when pulling one new head in addition to common heads @@ -1147,5 +1489,14 @@ unknown: 0 local changesets: 3 common: 2 + heads: 1 + roots: 1 missing: 1 + heads: 1 + roots: 1 + first undecided set: 1 + heads: 1 + roots: 1 + common: 0 + missing: 1 common heads: 66f7d451a68b