evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Previous patches started storing some obsmarkers which needs to stripped during
`evolve --abort` which can't be stripped by stripping the new evolved changesets
because they point to a node which existed before the evolution was performed.
This patch adds logic to strip those obsmarkers by finding their indices in the
obsstore and then stripping them.
evolve--revreordering-----------------------$cat>>$HGRCPATH<<EOF>[defaults]>amend=-d"0 0">fold=-d"0 0">[web]>push_ssl=false>allow_push=*>[phases]>publish=False>[diff]>git=1>unified=0>[ui]>logtemplate={rev}:{node|short}@{branch}({phase}){desc|firstline}\n>[extensions]>EOF$echo"evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/">>$HGRCPATH$mkcommit(){>echo"$1">"$1">hgadd"$1">hgci-m"add $1">}$mkstack(){>#Createsastackofcommitbasedon$1withmessagesfrom$2,$3..>hgupdate"$1"-C>shift>mkcommits$*>}$mkcommits(){>foriin$@;domkcommit$i;done>}Initialsetup$hginittestrevorder$cdtestrevorder$mkcommitsp_a_b_c$hgphase--public0$hgup'desc(_a)'0filesupdated,0filesmerged,2filesremoved,0filesunresolved$echo"aaa">_a$hgamend2neworphanchangesets$hglog-G@4:12d519679175@default(draft)add_a||*3:4d156641b718@default(draft)add_c|||*2:4d7242ebb004@default(draft)add_b|||x1:2d73fcd7f07d@default(draft)add_a|/o0:f92638be10c7@default(public)addpevolve--revreorderstherevtosolveinstability,trivialcase2revswrongorder$hgevolve--rev'desc(_c) + desc(_b)'move:[2]add_batop:[4]add_amove:[3]add_catop:[5]add_bworkingdirectoryisnowat52b8f9b04f83evolve--revreorderstherevtosolveinstability.Hardercase,obsolescenceaccrossthreestacksingrowingrevnumbers.$hgup"desc(_c)"0filesupdated,0filesmerged,0filesremoved,0filesunresolved$mkcommit_d$hgup"desc(_a)"0filesupdated,0filesmerged,3filesremoved,0filesunresolved$hgamend-m"aprime"3neworphanchangesets$hgevolve--rev"desc(_b)"move:[5]add_batop:[8]aprimeworkingdirectoryisnowat476c9c052aae$hgup"desc(_b) - obsolete()"0filesupdated,0filesmerged,0filesremoved,0filesunresolved$hgamend-m"bprime"$hgup"desc(aprime)"0filesupdated,0filesmerged,1filesremoved,0filesunresolved$hgamend-m"asecond"1neworphanchangesets$hglog-G@11:9a584314f3f3@default(draft)asecond||*10:a59c79776f7c@default(draft)bprime|||x8:81a687b96d4d@default(draft)aprime|/|*7:464731bc0ed0@default(draft)add_d|||*6:52b8f9b04f83@default(draft)add_c|||x5:59476c3836ef@default(draft)add_b|||x4:12d519679175@default(draft)add_a|/o0:f92638be10c7@default(public)addp$hgevolve--rev"orphan()"move:[10]bprimeatop:[11]asecondmove:[6]add_catop:[12]bprimemove:[7]add_datop:[13]add_cworkingdirectoryisnowat739f18ac1d03$hglog-G@14:739f18ac1d03@default(draft)add_d|o13:e5960578d158@default(draft)add_c|o12:4ad33fa88946@default(draft)bprime|o11:9a584314f3f3@default(draft)asecond|o0:f92638be10c7@default(public)addpEvolve--revmorecomplexcase:twosetsofstacksonewithpruneannosuccessor,theotheronepartiallysolvableFirstsetofstack:$mkstack"desc(_d)"c1_c2_c3_c4_>/dev/null$mkstack"desc(_d)"c1primec2prime>/dev/null$mkstack"desc(_d)"c1second>/dev/null$hgprune"desc(c1_)"-s"desc(c1prime)"1changesetspruned3neworphanchangesets$hgprune"desc(c2_)"-s"desc(c2prime)"1changesetspruned$hgprune"desc(c1prime)"-s"desc(c1second)"1changesetspruned1neworphanchangesets$hglog-G-r"desc(_d)::"@21:dcf786e878fd@default(draft)addc1second||*20:507d52d715f6@default(draft)addc2prime|||x19:c995cb124ddc@default(draft)addc1prime|/|*18:d096a2437fd0@default(draft)addc4_|||*17:cde95c6cba7a@default(draft)addc3_|||x16:e0d9f7a099fe@default(draft)addc2_|||x15:43b7c338b1f8@default(draft)addc1_|/o14:739f18ac1d03@default(draft)add_d|~Secondsetofstackwithnosuccessorforb2_:$mkstack"desc(_d)"b1_b2_b3_b4_>/dev/null$mkstack"desc(_d)"b1primeb3prime>/dev/null$hgprune"desc(b1_)"-s"desc(b1prime)"1changesetspruned3neworphanchangesets$hgprune"desc(b3_)"-s"desc(b3prime)"1changesetspruned$hgprune"desc(b2_)"1changesetspruned$hglog-G-r"desc(_d)::"@27:b253ff5b65d1@default(draft)addb3prime|o26:4acf61f11dfb@default(draft)addb1prime||*25:594e1fbbd61f@default(draft)addb4_|||x24:be27500cfc76@default(draft)addb3_|||x23:b54f77dc5831@default(draft)addb2_|||x22:0e1eba27e9aa@default(draft)addb1_|/|o21:dcf786e878fd@default(draft)addc1second|/|*20:507d52d715f6@default(draft)addc2prime|||x19:c995cb124ddc@default(draft)addc1prime|/|*18:d096a2437fd0@default(draft)addc4_|||*17:cde95c6cba7a@default(draft)addc3_|||x16:e0d9f7a099fe@default(draft)addc2_|||x15:43b7c338b1f8@default(draft)addc1_|/o14:739f18ac1d03@default(draft)add_d|~Solvethefullsecondstackandonlypartofthefirstone$echo"(desc(_d)::) - desc(c3_)"(desc(_d)::)-desc(c3_)$hgevolve--rev"(desc(_d)::) - desc(c3_)"cannotsolveinstabilityofd096a2437fd0,skippingmove:[20]addc2primeatop:[21]addc1secondmove:[25]addb4_atop:[27]addb3primeworkingdirectoryisnowatea93190a9cd1Cleanup$hgevolve--rev"(desc(_d)::)"move:[17]addc3_atop:[28]addc2primemove:[18]addc4_atop:[30]addc3_workingdirectoryisnowat35e7b797ace5$hglog-G-r"desc(_d)::"@31:35e7b797ace5@default(draft)addc4_|o30:0b9488394e89@default(draft)addc3_||o29:ea93190a9cd1@default(draft)addb4_||o|28:881b9c092e53@default(draft)addc2prime|||o27:b253ff5b65d1@default(draft)addb3prime|||o26:4acf61f11dfb@default(draft)addb1prime||o|21:dcf786e878fd@default(draft)addc1second|/o14:739f18ac1d03@default(draft)add_d|~Testmultiplerevisionwithsomeun-evolvablebecauseparentissplitted------------------------------------------------------------------------$hgup'desc(c2prime)'0filesupdated,0filesmerged,2filesremoved,0filesunresolved$mkcommitc3part1creatednewhead$hgprev0filesupdated,0filesmerged,1filesremoved,0filesunresolved[28]addc2prime$mkcommitc3part2creatednewhead$hgprune-s'desc(c3part1)''desc(c3_)'1changesetspruned1neworphanchangesets$hgprune-s'desc(c3part2)''desc(c3_)'1changesetspruned2newcontent-divergentchangesets$hgup'desc(b3prime)'2filesupdated,0filesmerged,3filesremoved,0filesunresolved$hgamend-m'b3second'1neworphanchangesets$hgevolve--rev"orphan()"move:[29]addb4_atop:[34]b3secondskipping0b9488394e89:divergentrewriting.can't choose destination working directory is now at 31809a198477