Ë ÔÑ�Zç„fãóê—ddlZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z mZmZddlmZmZmZddlmZe j,sddlZd „Zd „Zd „Zd.d „Zd „Zd„Zd/d„Zd„Zd„Z d„Z!d„Z"d„Z#d„Z$ejJe&e&fejNe&e&fiZ(d„Z)d„Z*d„Z+d„Z,Gd„de jZ«Z.d„Z/d0d„Z0d„Z1d„Z2d „Z3d!„Z4d.d"„Z5d#„Z6d$„Z7d%„Z8d&„Z9d'„Z:d(„Z;d)„Zd,„Z?d-„Z@y)1éN)Ú_)Úopen)Úhex)ÚerrorÚpycompatÚrevlogÚutil)ÚhashutilÚ storageutilÚ stringutilé)Ú constantscó:—tj|jvS)z>returns whether the repository is remotefilelog enabled or not)rÚSHALLOWREPO_REQUIREMENTÚ requirements)Úrepos úCusr/lib/python3.12/site-packages/hgext/remotefilelog/shallowutil.pyÚ isenabledr"s€ä × ,Ñ ,°×0AÑ0AÐ AÐAócóª—ttj|«j««}tj j ||dd|dd|«S)Né©rr Úsha1ÚdigestÚosÚpathÚjoin)ÚreponameÚfileÚidÚpathhashs rÚ getcachekeyr"'sC€Ü”8—=‘= Ó&×-Ñ-Ó/Ó0€HÜ �7‰7�<‰<˜ (¨2¨A ,°¸¸° ¸bÓ AÐArcóš—ttj|«j««}tj j ||«S©Nr)rr r!s rÚ getlocalkeyr%,s3€Ü”8—=‘= Ó&×-Ñ-Ó/Ó0€HÜ �7‰7�<‰<˜ "Ó %Ð%rcó–—|jdd«}|s!|rytjtd««‚t j |«S)Nó remotefilelogs cachepaths4could not find config option remotefilelog.cachepath)ÚconfigrÚAbortrr Ú expandpath)ÚuiÚ allowemptyÚ cachepaths rÚ getcachepathr.1sG€Ø— ‘ Ð*¨LÓ9€IÙ Ù Øä—+‘+ÜÐIÓJóð ô �?‰?˜9Ó %Ð%rcó—t|j«}|tjk7r,tj j ||jd|«Stj j ||jd«S©Nspacks)r.r+rÚFILEPACK_CATEGORYrrrÚname)rÚcategoryr-s rÚgetcachepackpathr4=sV€Ü˜TŸW™WÓ%€IØ”9×.Ñ.Ò.Ü�w‰w�|‰|˜I t§y¡y°(¸HÓEÐEä�w‰w�|‰|˜I t§y¡y°(Ó;Ð;rcóD—tjj|d|«Sr0)rrr)Úbaser3s rÚgetlocalpackpathr7Es€Ü �7‰7�<‰<˜˜h¨Ó 1Ð1rcót—i}|s|jd«r"|r ||d<||d<tj||«}|S)zRreturns a string that matches the revlog contents in a traditional revlog ó scopyscopyrev)Ú startswithr Úpackmeta)ÚtextÚcopyfromÚcopyrevÚmetas rÚcreaterevlogtextr@IsD€ð €DÙ�4—?‘? 7Ô+Ù Ø$ˆD�‰MØ&ˆD�Ñ Ü×#Ñ# D¨$Ó/ˆà €Krcó˜—tj|«\}}|jd«r|jdd«}||dzd}|xsi|fS)z parse mercurial filelog metadatar9rN)r Ú parsemetar:Úindex)r<r?ÚsizeÚss rrBrBWsP€ä×&Ñ& tÓ,�J€Dˆ$Ø ‡��wÔØ �J‰J�w Ó "ˆØ�A˜‘E�Gˆ}ˆØ Š:�2�tÐ ÐrcóŠ—tjd„«}|D]'}|j«D]\}}||xx|z cc<ŒŒ)|S)zÄAdds all the values of *dicts together into one dictionary. This assumes the values in *dicts are all summable. e.g. [{'a': 4', 'b': 2}, {'b': 3, 'c': 1}] -> {'a': 4, 'b': 5, 'c': 1} có—y©Nr©rIrrÚzsumdicts..fs€¨Qr)Ú collectionsÚ defaultdictÚitems)ÚdictsÚresultÚdictÚkÚvs rÚsumdictsrS`sF€ô × $Ñ $¡YÓ /€FۈؗJ‘J–L‰DˆAˆqØ �1‹I˜‰NŒIñ!ðð €MrcóJ—i}|j«D] \}}||||z<Œ|S)z;Returns ``dict`` with ``prefix`` prepended to all its keys.)rM)rPÚprefixrOrQrRs rÚ prefixkeysrVms.€à €FØ— ‘ – ‰ˆˆ1؈ˆv˜‰zÒðà €MrcóÆ—|D�cgc]}|j«‘Œ}}tt|Ž|dz«}|j|dzdfit j |«¤Žycc}w)Nó_s _packsizesó )Ú getmetricsrVrSÚlogrÚ strkwargs)r+rUÚstoresrErNrPs rÚreportpackmetricsr^us[€Ù%+Ó ,¡V ˆQ�\‰\�^ V€EÐ ,Ü ”h Ð&¨°© Ó 6€DØ €B‡F�Fˆ6�MÑ ! 5ÑE¬H×,>Ñ,>¸tÓ,DÓEùò -s…Acó—i}d}t|«}||z dk\rZ|||dz}|dz }tjd||«d}|dz }||z|kDr td«‚||||z}|||<||z }||z dk\rŒZ||k7r td«‚|S)aparse datapack meta, bytes () -> dict The dict contains raw content - both keys and values are strings. Upper-level business may want to convert some of them to other types like integers, on their own. raise ValueError if the data is corrupted rér ó!Hrs%corrupted metadata: incomplete buffers"corrupted metadata: redundant data)ÚlenÚstructÚ unpack_fromÚ ValueError)ÚmetabufÚmetadictÚoffsetÚbuflenÚkeyÚmetalenÚvalues rÚ_parsepackmetarm{sÄ€ð€HØ €FÜ �‹\€FØ �6‰/˜QÒ Ø�f˜v¨™zÐ*ˆØ�!‰ ˆÜ×$Ñ$ U¨G°VÓ<¸QÑ?ˆØ�!‰ ˆØ �GÑ ˜fÒ $ÜÐEÓFÐ Fؘ ¨'Ñ!1Ð2ˆØˆ�‰ Ø�'шð �6‰/˜QÓ ð�ÒÜÐ>Ó?Ð?Ø €OrcóB—d}t|xsij««D]|\}}t|«dk7rtjd|z«‚t|«dkDrt dt|«z«‚||z }|t jdt|««z }||z }Œ~|S)anreverse of _parsepackmeta, dict -> bytes () The dict contains raw content - both keys and values are strings. Upper-level business may want to serialize some of other types (like integers) to strings before calling this function. raise ProgrammingError when metadata key is illegal, or ValueError if length limit is exceeded rr spackmeta: illegal key: %siþÿs)metadata value is too long: 0x%x > 0xfffera)ÚsortedrMrbrÚProgrammingErrorrercÚpack)rgrfrQrRs rÚ_buildpackmetarr–s£€ð€Gܘš B×-Ñ-Ó/Ö0‰ˆˆ1Ü ˆq‹6�QŠ;Ü×(Ñ(Ð)EÈÑ)IÓJÐ JÜ ˆq‹6�FŠ?ÜØ<¼sÀ1»vÑEóð ð �1‰ ˆØ”6—;‘;˜u¤c¨!£fÓ-Ñ-ˆØ�1‰ ‰ð1ð €Nrcó4—i}|xsij«D]u\}}tj|tf«}t ||«st j d|z«‚t|vr$|tjk(r|dk(rŒft|«}|||<Œwt|«S)zÇlike _buildpackmeta, but typechecks metadict and normalize it. This means, METAKEYSIZE and METAKEYSIZE should have integers as values, and METAKEYFLAG will be dropped if its value is 0. spackmeta: wrong type of key %sr) rMÚ_metaitemtypesÚgetÚbytesÚ isinstancerrpÚintrÚ METAKEYFLAGÚint2binrr)rgÚnewmetarQrRÚ expectedtypes rÚ buildpackmetar}¶s—€ð €GØ’˜R×&Ñ&Ö(‰ˆˆ1Ü%×)Ñ)¨!¬e¨XÓ6ˆ ܘ!˜\Ô*Ü×(Ñ(Ð)JÈQÑ)NÓOÐ Oä �,Ñ à”I×)Ñ)Ò)¨a°1ªfØÜ˜“ ˆA؈�Š ð)ô ˜'Ó "Ð"rcóš—t|«}|j«D],\}}|tvsŒtt|vsŒt |«||<Œ.|S)z£like _parsepackmeta, but convert fields to desired types automatically. This means, METAKEYFLAG and METAKEYSIZE fields will be converted to integers. )rmrMrtrxÚbin2int)rfrgrQrRs rÚ parsepackmetar€ËsK€ô ˜gÓ&€HØ—‘Ö ‰ˆˆ1Ø ”Ò ¤3¬.¸Ñ*;Ò#;Ü! !›*ˆH�QŠKð!ð €Orcóv—t«}|dkDr |jd|dz«|dz}|dkDrŒ t|«S)z3convert a non-negative integer to raw binary bufferréÿé)Ú bytearrayÚinsertrv)ÚnÚbufs rrzrzØs@€ä ‹+€CØ ˆaŠ%Ø � ‰ �1�a˜$‘hÔØ ˆa‰ˆð ˆa‹%ô �‹:Ðrcó>—d}t|«D] }|dz}||z}Œ|S)z=the reverse of int2bin, convert a binary buffer to an integerrrƒ)r„)r‡ÚxÚbs rrrás.€à €AÜ �sŽ^ˆØ ˆa‰ˆØ ˆQ‰‰ðð €Hrcó—eZdZdZy)ÚBadRemotefilelogHeaderz@Exception raised when parsing a remotefilelog blob header fails.N)Ú__name__Ú __module__Ú __qualname__Ú__doc__rIrrrŒrŒês„ÚJrrŒcóf—tj}d} |jd«}|d|}|j d«rÀ|j d«r¡|j d«D]Œ}|j tj«r&t|ttj«d«}ŒH|j tj«sŒht|ttj«d«}ŒŽnt d|z«‚t|«}|€ t d«‚|d z||fS#t$r t d«‚wxYw) z¸given a remotefilelog blob, return (headersize, rawtextsize, flags) see remotefilelogserver.createfileblob for the format. raise RuntimeError if the content is illformed. Nós/unexpected remotefilelog header: illegal formatóvsv1 rYs$unsupported remotefilelog header: %ss.unexpected remotefilelog header: no size foundr ) rÚREVIDX_DEFAULT_FLAGSrCrerŒr:ÚsplitrÚ METAKEYSIZErxrbry)ÚrawÚflagsrDrCÚheaderrEs rÚparsesizeflagsršîs,€ô × 'Ñ '€EØ €Dð Ø— ‘ ˜%Ó ˆð ��%ˆ[€FØ ×јÔà × Ñ ˜WÔ %Ø—\‘\ %Ö(�Ø—<‘<¤ × 5Ñ 5Ô6ܘq¤¤Y×%:Ñ%:Ó!;Ð!=Ð>Ó?‘DØ—\‘\¤)×"7Ñ"7Õ8Ü ¤#¤i×&;Ñ&;Ó"<Ð">Ð ?Ó@‘Eñ )ô )Ø7¸&Ñ@óð ô �6‹{ˆØ €|Ü$Ø =ó ð ð �1‰9�d˜EÐ !Ð!øô1 ò Ü$Ø >ó ð ð ús ”DÄD0cóü—|€tt|««}|dk(r'dtj|tj|fz}|S|dk(r|rt j d«‚d|z}|St j d|z«‚)zÑreturn the header of a remotefilelog blob. see remotefilelogserver.createfileblob for the format. approximately the reverse of parsesizeflags. version could be 0 or 1, or None (auto decide). r s v1 %s%d %s%drs!fileblob v0 does not support flags%dsunknown fileblob version %d)rxÚboolrr–ryrrp)rDr˜Úversionr™s rÚbuildfileblobheaderržs“€ð€Ü”d˜5“kÓ"ˆØ�!‚|Ø"Ü × !Ñ !Ø Ü × !Ñ !Ø ð & ñ ˆð €Mð �AŠÙ Ü×(Ñ(Ð)MÓNÐ Nؘ‘ˆð €Mô×$Ñ$Ð%CÀgÑ%MÓNÐNrcó—t|«\}}}||z}i}|t|«krc|jd|dz«}|||dz}||dz|dz}||dz|dz} ||dz|dz} ||dz|} || | | f||<|dz}|t|«krŒc|S)Nr’éPéé(é<r )ršrbrC) r—rhrDr˜ÚstartÚmappingÚdividerÚ currentnodeÚp1Úp2Úlinknoder=s rÚ ancestormapr«.s΀Ü(¨Ó-Ñ€FˆD�%Ø �T‰M€Eà€GØ ”#�c“(Ò Ø—)‘)˜E 5¨2¡:Ó.ˆà˜% 5¨2¡:Ð/ˆ Ø �%˜"‘* ¨¡Ð -ˆØ �%˜"‘* ¨¡Ð -ˆØ˜ ™  u¨r¡zÐ3ˆØ˜ ™  gÐ.ˆà " B¨°(Ð;ˆ� ÑØ˜!‘ ˆð ”#�c“(Ó ð €NrcóÔ—t|d«} |j«}|s#tj|«t d|z«‚||j «S#|j «wxYw)Nsrbsempty file: %s)rÚreadrÚremoveÚIOErrorÚclose)rÚfrOs rÚreadfiler²BsU€Ü ˆT�5Ó€Að Ø—‘“ˆñÜ �I‰I�dŒOÜÐ+¨dÑ2Ó3Ð 3àà �‰� øˆ�‰� ús Ž6AÁA'có–—tjr$tj|tj «tj |«yr$)rÚ iswindowsrÚchmodÚstatÚS_IWUSRÚunlink)Úfilepaths rÚ unlinkfilerºQs)€Ü×Òä �‰�œ4Ÿ<™<Ô(܇I�IˆhÕrcóH—tjr|tj|tj «tj j|«r9tj|tj «tj|«tj||«yr$) rr´rrµr¶r·rÚisfiler¸Úrename)ÚsourceÚ destinations rÚ renamefilerÀXs[€Ü×Òô �‰�œŸ™Ô&Ü �7‰7�>‰>˜+Ô &Ü �H‰H�[¤$§,¡,Ô /Ü �I‰I�kÔ "ä‡I�Iˆf�kÕ"rcóž—tjj|«\}}tjj|«s tj|«t jd|z|¬«\}}tj|« tj|d«}|j|«|j«|rd}n-tjd«} tj| «| }t||«tj||«y#t $rYŒÊwxYw#t$r t!|«‚#t"$rY‚wxYwwxYw)Ns.%s-)rUÚdirswbi$r)rrr•ÚexistsÚmakedirsÚFileExistsErrorÚtempfileÚmkstempr°r Ú posixfileÚwriteÚumaskrÀrµÚ ExceptionrºÚOSError) rÚcontentÚreadonlyÚdirnameÚfilenameÚfdÚtempr±ÚmodeÚoldumasks rÚ writefilerÕds€ÜŸ™Ÿ ™  dÓ+Ñ€GˆXÜ �7‰7�>‰>˜'Ô "ð Ü �K‰K˜Ô ô×Ñ w°Ñ'9¸wÔG�H€BˆÜ‡H�HˆR„LðÜ �N‰N˜4 Ó 'ˆØ �‰�ÔØ �‰Œ á Ø‰Dô—x‘x “{ˆHô �H‰H�XÔ Ø�9ˆDä�4˜ÔÜ �‰��tÕøô/ò Ù ð ûô0 òð Ü �tÔ ð øôò Ø Ø ð úðúsCÁD B D&Ä D#Ä"D#Ä& E Ä0 D<Ä;E Ä< EÅE ÅEÅE có—t|«}i}i}g}|D]n}||«D�cgc] }||vsŒ|‘Œ }}t|«||<|D]+}|j|t««j|«Œ-|rŒ^|j|«Œp|j «g}|rl|j d«}|j|«||vrC||} | D]9} || } | j |«t| «dk(sŒ(|jd| «Œ;|rŒl|Scc}w)zUTopologically sorts the nodes, using the parentfunc to find the parents of nodes.r) ÚsetÚ setdefaultÚaddÚappendÚsortÚpopr®rbr…) ÚnodesÚ parentfuncÚchildmapÚ parentmapÚrootsr†ÚpÚparentsÚresultsÚchildrenÚcÚ childparentss rÚ sortnodesrè‰s€ô �‹J€EØ€HØ€IØ €EóˆÙ(¨œmÓ:™m˜¨q°Eªz’1˜mˆÐ:ܘ7“|ˆ �!‰ ÛˆAØ × Ñ  ¤3£5Ó )× -Ñ -¨aÕ 0ðâØ �L‰L˜�Oð ð ‡J�J„Là€GÙ Ø �I‰I�a‹LˆØ�‰�qÔØ �‰=Ø ‘{ˆHÛ�Ø(¨™|� Ø×#Ñ# AÔ&Ü�|Ó$¨Ó)ð—L‘L  AÕ&ðò ð €Nùò1;s ¡ D«Dcóœ—|j|«}t|«|kr,tjt d«t|«|fz«‚|S)z=read n bytes from stream.read and abort if less was availables5stream ended unexpectedly (got %d bytes, expected %d))r­rbrr)r)Ústreamr†rEs rÚ readexactlyrë®sK€à� ‰ �A‹€AÜ ˆ1ƒv�‚zÜ�k‰kÜ ÐFÓ GÜ�1‹v�qˆkñ ó ð ð €Hrcól—t|tj|««}tj||«Sr$)rërcÚcalcsizeÚunpack)rêÚfmtÚdatas rÚ readunpackrñ¹s(€Ü �vœvŸ™¨sÓ3Ó 4€DÜ �=‰=˜˜dÓ #Ð#rcóœ—t|tj«}tjtj |«d}t||«SrH)rërÚ FILENAMESIZErcrîÚFILENAMESTRUCT)rêÚrawlenÚpathlens rÚreadpathr÷¾s<€Ü ˜¤×!7Ñ!7Ó 8€FÜ�m‰mœI×4Ñ4°fÓ=¸aÑ@€GÜ �v˜wÓ 'Ð'rc#óæK—t|tj«}tjtj |«d}t |«D]}t|tj«–—Œ y­wrH)rërÚ NODECOUNTSIZErcrîÚNODECOUNTSTRUCTÚrangeÚNODESIZE)rêrõÚ nodecountÚis rÚ readnodelistrÿÄsUèø€Ü ˜¤×!8Ñ!8Ó 9€FÜ— ‘ œi×7Ñ7¸Ó@ÀÑC€IÜ �9Ö ˆÜ˜&¤)×"4Ñ"4Ó5Ó5ñùs‚A/A1c#óÈK—t|tj«}tjtj |«d}t |«D]}t|«–—Œy­wrH)rërÚ PATHCOUNTSIZErcrîÚPATHCOUNTSTRUCTrûr÷)rêrõÚ pathcountrþs rÚ readpathlistrËsMèø€Ü ˜¤×!8Ñ!8Ó 9€FÜ— ‘ œi×7Ñ7¸Ó@ÀÑC€IÜ �9Ö ˆÜ�vÓÓñùs‚A A"cóŠ— tjtj|««j}|S#t $rYywxYwr$)ÚgrpÚgetgrnamrÚfsdecodeÚgr_gidÚKeyError)Ú groupnameÚgids rÚgetgidr Òs=€ðÜ�l‰lœ8×,Ñ,¨YÓ7Ó8×?Ñ?ˆØˆ øÜ òÙðús‚36¶ AÁAcóØ—|€y tj|d|«tj|d«y#ttf$r'}|r|t d«||fz«Yd}~yYd}~yd}~wwxYw)Néÿÿÿÿéýs unable to chown/chmod on %s: %s )rÚchownrµr¯rÌr)rr ÚwarnÚexs rÚsetstickygroupdirrÚsg€Ø €{ØðGÜ �‰��r˜3ÔÜ �‰��vÕøÜ ”WÐ òGÙ Ù ”Ð7Ó8¸DÀ"¸:ÑE× FÑ Fô ûðGús…-3³A)ÁA$Á$A)có¦—d}|jdd«}|r*t|«}|€|jtd«|z«d} t j |«}|r9|jdzdk7s|j|k7rt|||j«yt jd«} |g}tjj|«}|rqtjj|«sR|j|«tjj|«}|r tjj|«sŒRt|«D]} t j |«Œ|D]}t|||j«Œ t j|«y#t $rY�ŒMwxYw#t"$rYŒkwxYw#t j|«wxYw)ziCreates the given directory (if it doesn't exist) and give it a particular group with setgid enabled.Nr's cachegroups!unable to resolve group name: %s rr)r(r rrrr¶rÌÚst_modeÚst_gidrrÊrrÏrÃrÚÚreversedÚmkdirrÅ)r+rr r ÚstrÔÚ missingdirss rÚmkstickygroupdirrås‚€ð €CØ— ‘ Ð*¨MÓ:€IÙÜ�YÓˆØ ˆ;Ø �G‰G”AÐ;Ó<¸yÑHÔ Ið €Bð Ü �W‰W�T‹]ˆñ à �J‰J˜Ñ  FÒ *¨b¯i©i¸3Ò.>ä ˜d C¨¯©Ô 1Øä�x‰x˜‹€HðØ�fˆ Ü�w‰w�‰˜tÓ$ˆÙœ2Ÿ7™7Ÿ>™>¨$Ô/Ø × Ñ ˜tÔ $Ü—7‘7—?‘? 4Ó(ˆDñœ2Ÿ7™7Ÿ>™>¨$Õ/ô˜[Ö)ˆDð Ü—‘˜•ð*ó  ˆDÜ ˜d C¨¯©Õ 1ñ ô �‰�Õøô7 ò Ú ð ûô*#ò Ùð ûô �‰�ÕúsIÁFÂ*BF9Ä?F9ÅF*Å# F9Æ F'Æ&F'Æ* F6Æ3F9Æ5F6Æ6F9Æ9Gcóh— tj|j««S#t$rYywxYw)Nóunknown)r Ú shortuserÚusernamerË)r+s rÚ getusernamer!s0€ðÜ×#Ñ# B§K¡K£MÓ2Ð2øÜ òÙðús ‚"%¥ 1°1cój—|jdd«}|rtjj|«Sy)Nspathssdefaultr)r(rrÚbasename)r+rs rÚ getreponamer$s-€Ø�y‰y˜ :Ó.€HÙÜ�w‰w×Ñ Ó)Ð)Ø r)F)NNr$)ArKrr¶rcrÆÚmercurial.i18nrÚmercurial.pycompatrÚmercurial.noderÚ mercurialrrrr Úmercurial.utilsr r r Úrr´rrr"r%r.r4r7r@rBrSrVr^rmrrryrxr–rtr}r€rzrÚ StorageErrorrŒršržr«r²rºrÀrÕrèrërñr÷rÿrr rrr!r$rIrrÚr,s6ðóÛ Û Û ÛåÝ#Ý÷ó÷ ñõ à×ÒÛòBò Bò &ó &ò<ò2ó òò òòFò ò6ð6×јC ˜:Ø ×јC ˜:ð€ò #ò* òò ôK˜U×/Ñ/ôKò""óJò6ò( òò #ó"òJ"òJ ò$ò (ò 6òòóGò)òXór