stack: move data computation on the object
We gather multiple data about the stack on the object. Let us move this on the
object and keep it cached there.
============================================Testingobsolescencemarkerspush:CasesC.2============================================Mercurialpushesobsolescencesmarkersrelevanttothe"pushed-set",thesetofallchangesetsthatrequestedtobe"in sync"afterthepush(eveniftheyarealreadyonbothside).Thistestbelongstoaseriesoftestscheckingsuchsetisproperlycomputedandapplied.Thisdoesnottests"obsmarkers"discoverycapabilities.CategoryC:advancedcaseTestCase2:PrunedchangesetonprecursorsVariants:# a: explicite push# b: bare pushC.2Prunedchangesetonprecursors==================================..{{{..B⊗..|..Aø⇠◔A'.. |/.. ● O.. }}}.... Marker exist from:.... * A'succeedtoA..*B(prune)....Commandrun:....*hgpush-rA'.. * hg push.... Expected exchange:.... * `A ø⇠o A'`..*B(prune)Setup-----$.$TESTDIR/testlib/exchange-obsmarker-util.shItinial$setupreposC.2creatingtestrepofortestcaseC.2-pulldest-main-pushdestcdinto`main`andproceedwithenvsetup$cdmain$mkcommitA0$mkcommitB$hgprune-qd'0 0'.$hgupdate-q0$mkcommitA1creatednewhead$hgdebugobsolete`getid'desc(A0)'``getid'desc(A1)'`obsoleted1changesets$hglog-G--hidden@e5ea8f9c7314(draft):A1||x06055a7959d4(draft):B|||x28b51eb45704(draft):A0|/oa9bdc8b26820(public):O$inspect_obsmarkersobsstorecontent================06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(*){'ef1':'*','user':'test'}(glob)28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(*){'user':'test'}(glob)obshashtree===========a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04000000000000000000000000000000000000000028b51eb45704506b5c603decd6bf7ac5e0f6a52f3ef2e3b1b37e7a3a8a885b2ff08fa626f1d3aaa906055a7959d4128e6e3bccfd01482e83a2db8a3a75187bd51740051fdf046fae67687fb056343515e5ea8f9c73143125d36658e90ef70c6d2027a5b7163059af30d498e215e86e1ead6ab749521c38beobshashrange============revnodeindexsizedepthobshash3e5ea8f9c7314022163059af30d40a9bdc8b268200110000000000003e5ea8f9c7314112163059af30d4$cd..$cd..$cp-RC.2C.2.a$cp-RC.2C.2.bActualTest(explicitpush)---------------------------$dotestC.2.aA1##RunningtestcaseC.2.a # testing echange of "A1" (e5ea8f9c7314) ## initial state # obstore: main06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(*){'ef1':'*','user':'test'}(glob)28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(*){'user':'test'}(glob) # obstore: pushdest # obstore: pulldest ## pushing "A1" from main to pushdestpushingtopushdestsearchingforchangesremote:addingchangesetsremote:addingmanifestsremote:addingfilechangesremote:added1changesetswith1changesto1filesremote:2newobsolescencemarkers##postpushstate#obstore:main06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(*){'ef1':'*','user':'test'}(glob)28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(*){'user':'test'}(glob) # obstore: pushdest06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(*){'ef1':'*','user':'test'}(glob)28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(*){'user':'test'}(glob) # obstore: pulldest ## pulling "e5ea8f9c7314" from main into pulldestpullingfrommainsearchingforchangesaddingchangesetsaddingmanifestsaddingfilechangesadded1changesetswith1changesto1files2newobsolescencemarkers(run'hg update'togetaworkingcopy) ## post pull state # obstore: main06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(*){'ef1':'*','user':'test'}(glob)28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(*){'user':'test'}(glob) # obstore: pushdest06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(*){'ef1':'*','user':'test'}(glob)28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(*){'user':'test'}(glob) # obstore: pulldest06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(*){'ef1':'*','user':'test'}(glob)28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(*){'user':'test'}(glob)ActualTest(barepush)-------------------------------------$dotestC.2.b ## Running testcase C.2.b ## initial state # obstore: main06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(*){'ef1':'*','user':'test'}(glob)28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(*){'user':'test'}(glob) # obstore: pushdest # obstore: pulldest ## pushing from main to pushdestpushingtopushdestsearchingforchangesremote:addingchangesetsremote:addingmanifestsremote:addingfilechangesremote:added1changesetswith1changesto1filesremote:2newobsolescencemarkers##postpushstate#obstore:main06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(*){'ef1':'*','user':'test'}(glob)28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(*){'user':'test'}(glob) # obstore: pushdest06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(*){'ef1':'*','user':'test'}(glob)28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(*){'user':'test'}(glob) # obstore: pulldest ## pulling from main into pulldestpullingfrommainsearchingforchangesaddingchangesetsaddingmanifestsaddingfilechangesadded1changesetswith1changesto1files2newobsolescencemarkers(run'hg update'togetaworkingcopy) ## post pull state # obstore: main06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(*){'ef1':'*','user':'test'}(glob)28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(*){'user':'test'}(glob) # obstore: pushdest06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(*){'ef1':'*','user':'test'}(glob)28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(*){'user':'test'}(glob) # obstore: pulldest06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(*){'ef1':'*','user':'test'}(glob)28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(*){'user':'test'}(glob)