perf: adds some cache key helper on the obsstore class
This will be useful to allow validating cache depending on obsstore without
parsing the whole obsstore.
============================================Testingobsolescencemarkerspush:CasesB.7============================================Mercurialpushesobsolescencesmarkersrelevanttothe"pushed-set",thesetofallchangesetsthatrequestedtobe"in sync"afterthepush(eveniftheyarealreadyonbothside).Thistestbelongstoaseriesoftestscheckingsuchsetisproperlycomputedandapplied.Thisdoesnottests"obsmarkers"discoverycapabilities.CategoryB:pruningcaseTestCase7:Pruneonnon-targetedcommonchangesetB.7Pruneabovenon-targetedcommonchangeset=============================================..(verysimilartoB1,buttheprunechangesetisunknownonremote)....{{{..⊗B..|..◕A..|..●O..}}}....Markerexistfrom:....*B(prune)....Commandruns:....*hgpush-rO....Expectedexclude:....*B(prune)Setup-----$.$TESTDIR/testlib/exchange-obsmarker-util.shInitial$setupreposB.7creatingtestrepofortestcaseB.7-pulldest-main-pushdestcdinto`main`andproceedwithenvsetup$cdmain$mkcommitA$hgpush-q../pushdest$hgpush-q../pulldest$mkcommitB$hgprune-qd'0 0'.$hglog-G--hiddenxf6fbb35d8ac9(draft):B|@f5bc6836db60(draft):A|oa9bdc8b26820(public):O$inspect_obsmarkersobsstorecontent================f6fbb35d8ac958bbe70035e4c789c18471cdc0af0{f5bc6836db60e308a17ba08bf050154ba9c4fad7}(ThuJan0100:00:001970+0000){'user':'test'}obshashtree===========a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc040000000000000000000000000000000000000000f5bc6836db60e308a17ba08bf050154ba9c4fad7926d9d84b97b3483891ae983990ad87c1f7827e9f6fbb35d8ac958bbe70035e4c789c18471cdc0afe041f7ff1c7bd5501c7ab602baa35f0873128021obshashrange============revnodeindexsizedepthobshash1f5bc6836db60022926d9d84b97b0a9bdc8b268200110000000000001f5bc6836db60112926d9d84b97b$cd..$cd..ActualTest-------------------------------------$dotestB.7O##RunningtestcaseB.7 # testing echange of "O" (a9bdc8b26820) ## initial state # obstore: mainf6fbb35d8ac958bbe70035e4c789c18471cdc0af0{f5bc6836db60e308a17ba08bf050154ba9c4fad7}(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdest # obstore: pulldest ## pushing "O" from main to pushdestpushingtopushdestsearchingforchangesnochangesfound##postpushstate#obstore:mainf6fbb35d8ac958bbe70035e4c789c18471cdc0af0{f5bc6836db60e308a17ba08bf050154ba9c4fad7}(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdest # obstore: pulldest ## pulling "a9bdc8b26820" from main into pulldestpullingfrommainnochangesfound##postpullstate#obstore:mainf6fbb35d8ac958bbe70035e4c789c18471cdc0af0{f5bc6836db60e308a17ba08bf050154ba9c4fad7}(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdest # obstore: pulldest