Ë [S\¿ïÂÄðãóÜ—ddlZddlmZmZddlmZddlmZmZddl m Z m Z m Z Gd„d«Z Gd „d e j«ZGd „d e j«ZGd „d«ZGd„d«Zy)éN)ÚhexÚsha1nodeconstants)Úgetattr)ÚmdiffÚrevlogé)Ú basestoreÚ constantsÚ shallowutilcó$—eZdZdZdZdZdZdZdZy)Ú ChainIndiciesz>A static class for easy reference to the delta chain indicies.rréééN) Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚNAMEÚNODEÚBASENAMEÚBASENODEÚDATA©óúDusr/lib/python3.12/site-packages/hgext/remotefilelog/contentstore.pyr r s$„ÙHð €Dà €Dð€Hð€Hà �Drr cóò‡—eZdZˆfd„Zd„Zej jd„«Zd„Z ej jd„«Z d„Z ej jd„«Z d„Z d „Zd „Zd d „ZˆxZS) Úunioncontentstorecó”•—tt|� |i|¤Ž||_|j d«|_|j dd«|_y)NÚ writestoreÚallowincompleteF)ÚsuperrÚ__init__ÚstoresÚgetr r!©ÚselfÚargsÚkwargsÚ __class__s €rr#zunioncontentstore.__init__&sEø€Ü Ô Ñ/°Ð@¸Ò@àˆŒ Ø Ÿ*™* \Ó2ˆŒð &Ÿz™zÐ*;¸UÓCˆÕrcód—|j||«}|dtjtjk7rt |t |«f«‚|j«tj}|}|r;|j«tj}tj||g«}|rŒ;|S)a Fetches the full text revision contents of the given name+node pair. If the full text doesn't exist, throws a KeyError. Under the hood, this uses getdeltachain() across all the stores to build up a full chain to produce the full text. éÿÿÿÿ) Ú getdeltachainr rrÚnullidÚKeyErrorrÚpoprrÚpatches)r'ÚnameÚnodeÚchainÚfulltextÚtextÚdeltas rr%zunioncontentstore.get1sœ€ð×"Ñ" 4¨Ó.ˆà �‰9”]×+Ñ+Ñ ,Ô0A×0HÑ0HÒ Hä˜D¤# d£)Ð,Ó-Ð -ð—9‘9“;œ}×1Ñ1Ñ2ˆàˆÙØ—I‘I“K¤ × 2Ñ 2Ñ3ˆEÜ—=‘= ¨ wÓ/ˆDòðˆ rcó–—|jD]} |j||«cSt|t|«f«‚#t$rYŒ:wxYw)z;Return the single delta entry for the given name/node pair.)r$Úgetdeltar/r©r'r2r3Ústores rr9zunioncontentstore.getdeltaIsR€ð—[”[ˆEð Ø—~‘~ d¨DÓ1Ò1ð!ô ˜œc $›iÐ(Ó)Ð)øôò Ùð úó‘<¼ AÁAcó`—|j||«}|dtjtjk7rW|d\}}}}} |j||«}|j |«|dtjtjk7rŒW|S#t $r|js‚Y|SwxYw)a Returns the deltachain for the given name/node pair. Returns an ordered list of: [(name, node, deltabasename, deltabasenode, deltacontent),...] where the chain is terminated by a full text entry with a nullid deltabasenode. r,)Ú_getpartialchainr rrr.Úextendr/r!)r'r2r3r4ÚxÚ deltabasenameÚ deltabasenodeÚ morechains rr-zunioncontentstore.getdeltachainTs·€ð×%Ñ% d¨DÓ1ˆØ�B‰iœ ×.Ñ.Ñ/Ô3D×3KÑ3KÒKØ49¸"±IÑ 1ˆAˆq�- °ð Ø ×1Ñ1°-ÀÓO� Ø— ‘ ˜YÔ'ð �B‰iœ ×.Ñ.Ñ/Ô3D×3KÑ3KÓKðˆ øô ò à×+Ò+ØØàˆ ð  úsÁ#BÂB-Â,B-có–—|jD]} |j||«cSt|t|«f«‚#t$rYŒ:wxYw)z)Returns the metadata dict for given node.)r$Úgetmetar/rr:s rrEzunioncontentstore.getmetalsR€ð—[”[ˆEð Ø—}‘} T¨4Ó0Ò0ð!ô ˜œc $›iÐ(Ó)Ð)øôò Ùð úr<có~—|jD�cgc]}|j«‘Œ}}tj|ŽScc}w©N)r$Ú getmetricsr Úsumdicts)r'ÚsÚmetricss rrHzunioncontentstore.getmetricsvs6€Ø+/¯;ª;Ó7©; a�1—<‘<•>¨;ˆÐ7Ü×#Ñ# WÐ-Ð-ùò8s�:có–—|jD]} |j||«cSt|t|«f«‚#t$rYŒ:wxYw)z“Returns a partial delta chain for the given name/node pair. A partial chain is a chain that may not be terminated in a full-text. )r$r-r/rr:s rr>z"unioncontentstore._getpartialchainzsT€ð —[”[ˆEð Ø×*Ñ*¨4°Ó6Ò6ð!ô ˜œc $›iÐ(Ó)Ð)øôò Ùð úr<có—td«‚©Ns5cannot add content only to remotefilelog contentstore©Ú RuntimeError©r'r2r3Údatas rÚaddzunioncontentstore.addˆó€ÜØ Dó ð rcóT—|}|jD]}|sŒ|j|«}Œ|SrG)r$Ú getmissing)r'ÚkeysÚmissingr;s rrVzunioncontentstore.getmissing�s/€ØˆØ—[”[ˆEÚØ×*Ñ*¨7Ó3‘ð!ðˆrcól—|jr|jj|||«ytd«‚)Nsno writable store configured)r ÚaddremotefilelognoderPrQs rrZz&unioncontentstore.addremotefilelognode”s+€Ø �?Š?Ø �O‰O× 0Ñ 0°°t¸TÕ BäÐ>Ó?Ð ?rcóJ—|jD]}|j||«ŒyrG)r$Ú markledger)r'ÚledgerÚoptionsr;s rr\zunioncontentstore.markledgeršs €Ø—[”[ˆEØ × Ñ ˜V WÕ -ñ!rrG)rrrr#r%r ÚbaseunionstoreÚ retriabler9r-rErHr>rSrVrZr\Ú __classcell__©r*s@rrr%s�ø„ô Dòð0×Ñ×'Ñ'ñ*ó(ð*òð0×Ñ×'Ñ'ñ*ó(ð*ò.ð×Ñ×'Ñ'ñ *ó(ð *ò ò ò@÷ .rrcóH‡—eZdZˆfd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z ˆxZ S) Úremotefilelogcontentstorecó^•—tt|� |i|¤Žtj«|_yrG)r"rdr#Ú threadingÚlocalÚ _threaddatar&s €rr#z"remotefilelogcontentstore.__init__ s'ø€Ü Ô'¨Ñ7¸ÐHÀÒHÜ$Ÿ?™?Ó,ˆÕrcóJ—|j||«}tj|«\}}}||||z}tj|«}||\} } } } d} | r t | «} |j |||«|t jzrdx} } tj|| | «}|SrG) Ú_getdatar ÚparsesizeflagsÚ ancestormaprÚ_updatemetacacherÚREVIDX_EXTSTOREDÚcreaterevlogtext)r'r2r3rRÚoffsetÚsizeÚflagsÚcontentrlÚp1Úp2ÚlinknodeÚcopyfromÚcopyrevÚrevisions rr%zremotefilelogcontentstore.get¤s²€à�}‰}˜T 4Ó(ˆä)×8Ñ8¸Ó>ш��eØ�v ¨¡ Ð.ˆä!×-Ñ-¨dÓ3ˆ Ø%0°Ñ%6Ñ"ˆˆB�˜(؈٠ܘ"“gˆGà ×јd D¨%Ô0ð ”6×*Ñ*Ò *Ø!%Ð %ˆG�hÜ×/Ñ/°¸À7ÓKˆØˆrcón—|j||«}||tj|j||«fSrG)r%rr.rE©r'r2r3rys rr9z"remotefilelogcontentstore.getdeltaºs;€ð—8‘8˜D $Ó'ˆà Ø Ü × $Ñ $Ø �L‰L˜˜tÓ $ð  ð rcóR—|j||«}||dtj|fgSrG©r%rr.r{s rr-z'remotefilelogcontentstore.getdeltachainÅó/€ð —8‘8˜D $Ó'ˆØ�t˜TÔ#4×#;Ñ#;¸XÐFÐGÐGrcó—|j«||jjdk7r>|j||«}t j |«\}}}|j |||«|jjdS©Nrr)Ú_sanitizemetacacherhÚ metacacherjr rkrm)r'r2r3rRrprqrrs rrEz!remotefilelogcontentstore.getmetaÍsw€Ø ×ÑÔ!Ø �4×#Ñ#×-Ñ-¨aÑ0Ò 0Ø—=‘=  tÓ,ˆDÜ"-×"<Ñ"<¸TÓ"BÑ ˆF�D˜%Ø × !Ñ ! $¨¨eÔ 4Ø×Ñ×)Ñ)¨!Ñ,Ð,rcó—td«‚rNrOrQs rrSzremotefilelogcontentstore.addÕrTrcóZ—t|jdd«}|€d|j_yy)Nr‚)NN)rrhr‚)r'r‚s rr�z,remotefilelogcontentstore._sanitizemetacacheÚs/€Ü˜D×,Ñ,¨k¸4Ó@ˆ Ø Ð Ø)5ˆD× Ñ Õ &ð rcóÈ—|j«||jjdk(rytj|tj |i}||f|j_y)Nr)r�rhr‚r Ú METAKEYFLAGÚ METAKEYSIZE)r'r3rqrrÚmetas rrmz*remotefilelogcontentstore._updatemetacacheßsV€Ø ×ÑÔ!Ø �4×#Ñ#×-Ñ-¨aÑ0Ò 0Ø Ü×%Ñ% u¬i×.CÑ.CÀTÐJˆØ&*¨D \ˆ×ÑÕ"r) rrrr#r%r9r-rErSr�rmrarbs@rrdrdŸs,ø„ô-òò,  òHò-ò ò 6ö 2rrdcó>—eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d d „Z y) Úremotecontentstorecó —||_||_yrG)Ú _fileserviceÚ_shared)r'ÚuiÚ fileserviceÚshareds rr#zremotecontentstore.__init__ès€Ø'ˆÔàˆ� rcóŽ—|jj|t|«fgdd¬«|jj ||«S©NT)ÚforceÚ fetchdata)rŒÚprefetchrr�r%©r'r2r3s rr%zremotecontentstore.getísG€Ø ×Ñ×"Ñ"Ø”C˜“IÐ Ð  t°tð #ô ð�|‰|×Ñ  dÓ+Ð+rcó‚—|j||«}||tj|jj ||«fSrG)r%rr.r�rEr{s rr9zremotecontentstore.getdeltaós?€Ø—8‘8˜D $Ó'ˆà Ø Ü × $Ñ $Ø �L‰L× Ñ   tÓ ,ð  ð rcóR—|j||«}||dtj|fgSrGr}r{s rr-z remotecontentstore.getdeltachainür~rcóŽ—|jj|t|«fgdd¬«|jj ||«Sr’)rŒr•rr�rEr–s rrEzremotecontentstore.getmetasG€Ø ×Ñ×"Ñ"Ø”C˜“IÐ Ð  t°tð #ô ð�|‰|×#Ñ# D¨$Ó/Ð/rcó—td«‚)Nscannot add to a remote storerOrQs rrSzremotecontentstore.add ó€ÜÐ:Ó;Ð;rcó—|SrGr)r'rWs rrVzremotecontentstore.getmissing s€Øˆ rNcó—yrGr)r'r]r^s rr\zremotecontentstore.markledgeró€Ø rrG) rrrr#r%r9r-rErSrVr\rrrrŠrŠçs+„òò ,ò  òHò0ò <òô rrŠcó^—eZdZd„Zd„Zd„Zd„Zd„Zdd„Zd„Z d „Z d „Z d „Z d „Z dd „Zd„Zy)ÚmanifestrevlogstorecóÀ—|j|_|j|_t «|_t j |jd¬«|_d|_y)Ns 00changelog.i©Úradixr) r;Ú_storeÚsvfsÚ_svfsÚdictÚ_revlogsrÚ_clÚ_repackstartlinkrev)r'Úrepos rr#zmanifestrevlogstore.__init__s@€Ø—j‘jˆŒ Ø—Y‘YˆŒ Ü›ˆŒ Ü—=‘= §¡Ð3CÔDˆŒØ#$ˆÕ rcóB—|j|«j|«SrG)Ú_revlogÚrawdatar–s rr%zmanifestrevlogstore.gets€Ø�|‰|˜DÓ!×)Ñ)¨$Ó/Ð/rcóz—|j||«}|||jj|j||«fSrG)r%r©r.rEr{s rr9zmanifestrevlogstore.getdeltas4€Ø—8‘8˜D $Ó'ˆØ˜˜tŸx™xŸ™°· ± ¸TÀ4Ó0HÐHÐHrcó^—|j||«}||d|jj|fgSrG)r%r©r.r{s rr-z!manifestrevlogstore.getdeltachain#s.€Ø—8‘8˜D $Ó'ˆØ�t˜T 4§8¡8§?¡?°HÐ=Ð>Ð>rcóÆ—|j|«}|j|«}tj|j |«tj |j |«iSrG)r­Úrevr r†rrr‡Úrawsize)r'r2r3Úrlr²s rrEzmanifestrevlogstore.getmeta'sM€Ø �\‰\˜$Ó ˆØ�f‰f�T‹lˆä × !Ñ ! 2§8¡8¨C£=Ü × !Ñ ! 2§:¡:¨c£?ð ð rNcóX—|€ t«}||vrgS|j|«}i}|h}|j|j|«gd¬«D]Û}|j |«}|j |«|j |«\} } | |jjk7r| |vr|j| «| |jjk7r| |vr|j| «|jj |j|««} | | | df||j |«<|rŒÚ|S|S)NT)Ú inclusiver) Úsetr­Ú ancestorsr²r3ÚdiscardÚparentsr©r.rSÚlinkrev) r'r2r3Úknownr´r¸rXÚancrevÚancnodertrurvs rÚ getancestorsz manifestrevlogstore.getancestors/s €Ø ˆ=Ü“EˆEØ �5‰=؈Ià �\‰\˜$Ó ˆØˆ Ø�&ˆØ—l‘l B§F¡F¨4£L >¸T�lÖBˆFØ—g‘g˜f“oˆGØ �O‰O˜GÔ $à—Z‘Z Ó(‰FˆB�Ø�T—X‘X—_‘_Ò$¨°5©Ø— ‘ ˜B”Ø�T—X‘X—_‘_Ò$¨°5©Ø— ‘ ˜B”à—x‘x—}‘} R§Z¡Z°Ó%7Ó8ˆHØ*,¨b°(¸CÐ)@ˆI�b—g‘g˜f“oÑ &ÚØØÐðCðÐrcóÔ—|j}|j|«}|j|«}|j|j |««}|d|d|j |«dfSr€)r©r­rºr»r²r3)r'r2r3Úclr´rºr»s rÚ getnodeinfozmanifestrevlogstore.getnodeinfoHs]€Ø �X‰XˆØ �\‰\˜$Ó ˆØ—*‘*˜TÓ"ˆØ—*‘*˜RŸV™V D›\Ó*ˆØ˜‘ ˜G A™J¨¯©°Ó(8¸$Ð?Ð?rcó—td«‚)Nscannot add to a revlog storerO)r'r(s rrSzmanifestrevlogstore.addOr›rcó¸—|jj|«}|€Ø ØˆÜ �]‰]˜4Ÿ:™:Ð->Ô ?ˆØ×/Ñ/ˆ Ø×+Ñ+ˆ Üœ˜R› 1™ b¨"Ö-ˆCØ—j‘j “oˆGؘÒ%ÙØ˜Ò#ØØ—7‘7˜3“<ˆDØ × Ñ   x°Ô 6Ø × #Ñ # D¨(°DÕ 9ð.ð"Ÿ[™[×5Ñ5Ö7‰MˆAˆt�TØ�B�Qˆx˜8Ò# t¨B¨C y°EÒ'9Øà˜A¤ ^Ó!4Ð 4Ð5ˆHä—‘˜tŸz™z°T¸#¸2°YÔ?ˆBÜœS ›W q™[¨"¨bÖ1�ØŸ*™* S›/�ؘ\Ò)ÙØ˜ZÒ'ØØ—w‘w˜s“|�Ø×$Ñ$ T¨8°TÔ:Ø×'Ñ'¨¨h¸Õ=ñ2ñ8rcó—yrGr)r'r]s rÚcleanupzmanifestrevlogstore.cleanup‹ržrrG)rrrr#r%r9r-rEr¿rÂrSr­rVrÏr\ràrrrr r sF„ò%ò0òIò?ò óò2@ò<òòò(ó >óD rr )rfÚmercurial.noderrÚmercurial.pycompatrÚ mercurialrrÚr r r r r_rrdrŠr rrrÚråslðÛ÷õ'÷÷ñ÷ ñ ô$w.˜ ×0Ñ0ôw.ôtE2  × 3Ñ 3ôE2÷P* ñ* ÷Zx òx r