evolve: add tests of relocation case in public divergence
These tests cover the cases when "other" is behind the "public"
one and we would have to relocate "other" here. It covers
all the conflicting and non-conflicting cases.
====================================Testingheadcheckingcode:CaseD-6====================================Mercurialchecksfortheintroductionofnewheadsonpush.Evolutioncomesintoplaytodetectifexistingbranchesontheserverarebeingreplacedbysomeofthenewonewepush.Thiscaseispartofaseriesoftestscheckingthisbehavior.CategoryD:remoteheadis"obs-affected"locally,butresultisnotpartofthepushTestCase6:singlechangeset,superseededthenpruned(onanewchangesetunpushed)changesetThisisapartialpushvariationofcaseB-6..old-state:....*1changesetbranch....new-state:....*oldbranchisrewrittenontoanotherone,..*thenewversionisthenpruned.....expected-result:....*pushdenied....graph-summary:....Aø⇠⊗A'.. | |.. C ◔ | ○ B.. \|/.. ● $ . $TESTDIR/testlib/push-checkheads-util.shTest setup---------- $ mkdir D6 $ cd D6 $ setuprepos creating basic server and client repo updating to branch default 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd client $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ mkcommit B0 created new head $ mkcommit A1 $ hg up '0' 0 files updated, 0 files merged, 2 files removed, 0 files unresolved $ mkcommit C0 created new head $ hg debugobsolete `getid "desc(A0)"` `getid "desc(A1)"` obsoleted 1 changesets $ hg debugobsolete --record-parents `getid "desc(A1)"` obsoleted 1 changesets $ hg log -G --hidden @ 0f88766e02d6 (draft): C0 | | x ba93660aff8d (draft): A1 | | | o 74ff5441d343 (draft): B0 |/ | x 8aaa48160adc (draft): A0 |/ o 1e4be0697311 (public): rootActual testing-------------- $ hg push --rev 'desc(C0)' pushing to $TESTTMP/D6/server (glob) searching for changes abort: push creates new remote head 0f88766e02d6! (merge or see 'hghelppush' for details about pushing new heads) [255] $ cd ../..