effectflag: fix content change detection for filtered revs
In some cases (like amended an obsolete changeset), computing the diff and
comparing them need to work with filtered revisions. We need to use unfiltered
change contexts to safely compute diffs.
============================================Testingobsolescencemarkerspush:CasesA.1============================================Mercurialpushesobsolescencesmarkersrelevanttothe"pushed-set",thesetofallchangesetsthatrequestedtobe"in sync"afterthepush(eveniftheyarealreadyonbothside).Thistestbelongstoaseriesoftestscheckingsuchsetisproperlycomputedandapplied.Thisdoesnottests"obsmarkers"discoverycapabilities.CategoryA:simplecasesTestCase1:pushingasingleheadSubcases:# A.1.1 pushing a single head (2 variants)# A.1.2 pushing multiple changesets into a single head (2 variants)Case:A.1.1pushingasinglehead=================================....{{{..⇠◔A..|..●O..}}}....Markerexistsfrom:....*A....Commandsrun:....*hgpush-rA..*hgpush....Expectedexchange:....*chainfromASetup-----$.$TESTDIR/testlib/exchange-obsmarker-util.shinitial$setupreposA.1.1creatingtestrepofortestcaseA.1.1-pulldest-main-pushdestcdinto`main`andproceedwithenvsetup$cdmain$mkcommitA$hgdebugobsoleteaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`getid'desc(A)'`$hglog-G@f5bc6836db60(draft):A|oa9bdc8b26820(public):O$inspect_obsmarkersobsstorecontent================aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'}obshashtree===========a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc040000000000000000000000000000000000000000f5bc6836db60e308a17ba08bf050154ba9c4fad750656e04a95ecdfed94659dd61f663b2caa55e98obshashrange============revnodeindexsizedepthobshash1f5bc6836db6002250656e04a95e0a9bdc8b268200110000000000001f5bc6836db6011250656e04a95e$cd..$cd..setupbothvariants$cp-RA.1.1A.1.1.a$cp-RA.1.1A.1.1.bVarianta:push-rA--------------------$dotestA.1.1.aA##RunningtestcaseA.1.1.a#testingechangeof"A"(f5bc6836db60) ## initial state # obstore: mainaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdest # obstore: pulldest ## pushing "A" from main to pushdestpushingtopushdestsearchingforchangesremote:addingchangesetsremote:addingmanifestsremote:addingfilechangesremote:added1changesetswith1changesto1filesremote:1newobsolescencemarkers##postpushstate#obstore:mainaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdestaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pulldest ## pulling "f5bc6836db60" from main into pulldestpullingfrommainsearchingforchangesaddingchangesetsaddingmanifestsaddingfilechangesadded1changesetswith1changesto1files1newobsolescencemarkers(run'hg update'togetaworkingcopy) ## post pull state # obstore: mainaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdestaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pulldestaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'}Variantb:push---------------$dotestA.1.1.b##RunningtestcaseA.1.1.b##initialstate # obstore: mainaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdest # obstore: pulldest ## pushing from main to pushdestpushingtopushdestsearchingforchangesremote:addingchangesetsremote:addingmanifestsremote:addingfilechangesremote:added1changesetswith1changesto1filesremote:1newobsolescencemarkers##postpushstate#obstore:mainaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdestaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pulldest ## pulling from main into pulldestpullingfrommainsearchingforchangesaddingchangesetsaddingmanifestsaddingfilechangesadded1changesetswith1changesto1files1newobsolescencemarkers(run'hg update'togetaworkingcopy) ## post pull state # obstore: mainaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdestaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pulldestaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'}A.1.2pushingmultiplechangesetsintoasinglehead====================================================..{{{..◔B..|..⇠◔A..|..●O..}}}....Markerexistfrom:....*A....Commandrun:....*hgpush-rB..*hgpush....Expectedexchange:....*chainfromASetup-----initial$setupreposA.1.2creatingtestrepofortestcaseA.1.2-pulldest-main-pushdestcdinto`main`andproceedwithenvsetup$cdmain$mkcommitA$mkcommitB$hglog-G@f6fbb35d8ac9(draft):B|of5bc6836db60(draft):A|oa9bdc8b26820(public):O$hgdebugobsoleteaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`getid'desc(A)'`$inspect_obsmarkersobsstorecontent================aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'}obshashtree===========a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc040000000000000000000000000000000000000000f5bc6836db60e308a17ba08bf050154ba9c4fad750656e04a95ecdfed94659dd61f663b2caa55e98f6fbb35d8ac958bbe70035e4c789c18471cdc0af9cfa25b36856aa720419146abddd011cf87d368cobshashrange============revnodeindexsizedepthobshash2f6fbb35d8ac90330000000000001f5bc6836db6002250656e04a95e0a9bdc8b268200110000000000001f5bc6836db6011250656e04a95e2f6fbb35d8ac9213000000000000$cd..$cd..setupbothvariants$cp-RA.1.2A.1.2.a$cp-RA.1.2A.1.2.bVarianta:push-rA--------------------$dotestA.1.2.aB##RunningtestcaseA.1.2.a#testingechangeof"B"(f6fbb35d8ac9) ## initial state # obstore: mainaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdest # obstore: pulldest ## pushing "B" from main to pushdestpushingtopushdestsearchingforchangesremote:addingchangesetsremote:addingmanifestsremote:addingfilechangesremote:added2changesetswith2changesto2filesremote:1newobsolescencemarkers##postpushstate#obstore:mainaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdestaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pulldest ## pulling "f6fbb35d8ac9" from main into pulldestpullingfrommainsearchingforchangesaddingchangesetsaddingmanifestsaddingfilechangesadded2changesetswith2changesto2files1newobsolescencemarkers(run'hg update'togetaworkingcopy) ## post pull state # obstore: mainaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdestaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pulldestaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'}Variantb:push---------------$dotestA.1.2.b##RunningtestcaseA.1.2.b##initialstate # obstore: mainaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdest # obstore: pulldest ## pushing from main to pushdestpushingtopushdestsearchingforchangesremote:addingchangesetsremote:addingmanifestsremote:addingfilechangesremote:added2changesetswith2changesto2filesremote:1newobsolescencemarkers##postpushstate#obstore:mainaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdestaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pulldest ## pulling from main into pulldestpullingfrommainsearchingforchangesaddingchangesetsaddingmanifestsaddingfilechangesadded2changesetswith2changesto2files1newobsolescencemarkers(run'hg update'togetaworkingcopy) ## post pull state # obstore: mainaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdestaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pulldestaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf5bc6836db60e308a17ba08bf050154ba9c4fad70(ThuJan0100:00:001970+0000){'user':'test'}