stablebranch: avoid overlap between subrange
Subrange overlap make things more complicated and less efficient. We fix the
computation done in the "cached" version of the stablerange cache. This bring
things in line with the result produced by the basic version.
Since we already bumped the format version since the last release, I don't
things we need to do anything else.
====================================Testingheadcheckingcode:CaseC-1====================================Mercurialchecksfortheintroductionofmultipleheadsonpush.Evolutioncomesintoplaytodetectifexistingheadsontheserverarebeingreplacedbysomeofthenewheadswepush.Thistestfileispartofaseriesoftestscheckingthisbehavior.CategoryC:checkingcasewerethebranchisonlypartiallyobsoleted.TestCase1:2changesetbranch,onlytheheadisrewritten..old-state:....*2changesetbranch....new-state:....*1newchangesetsbranchessuperceedingonlytheheadoftheoldone..*baseoftheoldbranchisstillalive....expected-result:....*pushdenied....graph-summary:....Bø⇠◔B'.. | |.. A ○ |.. |/.. ○ $ . $TESTDIR/testlib/push-checkheads-util.shTest setup---------- $ setuprepos creating basic server and client repo updating to branch default 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd server $ mkcommit B0 $ cd ../client $ hg pull pulling from $TESTTMP/server searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files new changesets d73caddc5533 (run 'hgupdate' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ mkcommit B1 created new head $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` obsoleted 1 changesets $ hg log -G --hidden @ 25c56d33e4c4 (draft): B1 | | x d73caddc5533 (draft): B0 | | | o 8aaa48160adc (draft): A0 |/ o 1e4be0697311 (public): rootActual testing-------------- $ hg push pushing to $TESTTMP/server searching for changes abort: push creates new remote head 25c56d33e4c4! (merge or see 'hghelppush' for details about pushing new heads) [255]