Ë S†`‡ÐTãóÜ—dZddlZddlZddlmZddlmZddlmZm Z m Z m Z ddl m Z mZiZe j e«ZdZedged «ej$¬ «dd „«Zd „Zd „Zd„Zy)z-recreates hardlinks between repository cloneséN)Ú_)Úopen)ÚerrorÚhgÚ registrarÚutil)Ú stringutilÚurlutilsships-with-hg-coreórelinks[ORIGIN])Ú helpcategoryc ó’—tjtd«rtjtd«stjt d««‚|€d|j vrd}t jd||«}tj|j|j«}|jt d«|jj|jjfz«|j|jk(r|jt d««ytj |jj|jj«stjt d ««‚|j#«5|j#«5t%t'||««}t)||jj|jj|«}t+|jj|jj||«ddd«ddd«y#1swYŒxYw#1swYyxYw) a³recreate hardlinks between two repositories When repositories are cloned locally, their data files will be hardlinked so that they only use the space of a single repository. Unfortunately, subsequent pulls into either repository will break hardlinks for any files touched by the new changesets, even if both repositories end up pulling the same changes. Similarly, passing --rev to "hg clone" will fail to use any hardlinks, falling back to a complete copy of the source repository. This command lets you recreate those hardlinks and reclaim that wasted space. This repository will be relinked to share space with ORIGIN, which must be on the same local disk. If ORIGIN is omitted, looks for "default-relink", then "default", in [paths]. Do not attempt any read operations on this repository while the command is running. (Both repositories will be locked against writes.) ssamefiles samedevices*hardlinks are not supported on this systemNsdefault-relinkr srelinking %s to %s sthere is nothing to relink ó/source and destination are on different devices)rÚ safehasattrrÚAbortrÚpathsr Úget_unique_pull_path_objrÚ repositoryÚbaseuiÚlocÚstatusÚstoreÚpathÚrootÚ samedeviceÚlockÚsortedÚcollectÚpruneÚ do_relink)ÚuiÚrepoÚoriginÚoptsrÚsrcÚ candidatesÚtargetss ú0usr/lib/python3.12/site-packages/hgext/relink.pyÚrelinkr(#sv€ô8 × Ñ œD +Ô .´d×6FÑ6FÜ ˆmô7ô�k‰kœ!ÐIÓJÓKÐKà €~Ð+¨r¯x©xÑ7Ø"ˆÜ × +Ñ +¨I°r¸6Ó B€DÜ �-‰-˜Ÿ ™  T§X¡XÓ .€C؇I�IŒaÐ'Ó(¨C¯I©I¯N©N¸D¿J¹J¿O¹OÐ+LÑLÔMØ ‡y�y�C—H‘HÒØ � ‰ ”!Ð3Ó4Ô5Øä �?‰?˜3Ÿ9™9Ÿ>™>¨4¯:©:¯?©?Ô ;ä�k‰kœ!ÐNÓOÓPÐPà �‰��c—h‘h•jÜœG C¨Ó,Ó-ˆ ܘ  C§I¡I§N¡N°D·J±J·O±OÀRÓHˆÜ�#—)‘)—.‘. $§*¡*§/¡/°7¸BÔ?÷!�ˆ—j�jú�ˆús%Æ H=ÆBH1È H=È1H: È6H=È=Icó¤—ttjj«}g}t|dj ««}|dzdz}|j j}|j td«td«|¬«}d}|jtd«||fz«tj|«D]Û\}} } | j«|t|«|zd} t| «D]¦} | d dd vrŒ tjtjj|| ««} tj| j«sŒ^|d z }|j!tjj| | «| f«|j#|| ¬ «Œ¨ŒÝ|j%«|jtd «t|«z«|S)Nstipéés collectingófiles©ÚunitÚtotalrs6tip has %d files, estimated total number of files: %d éþÿÿÿ)s.ds.ié©Úitems%collected %d candidate storage files )ÚlenÚosrÚsepÚmanifestrÚ makeprogressrrÚwalkÚsortrÚstatÚjoinÚS_ISREGÚst_modeÚappendÚupdateÚcomplete)r$r Úseplenr%Úliver/ÚprogressÚposÚdirpathÚdirnamesÚ filenamesÚrelpathÚfilenameÚsts r'rrWsƒ€Ü ”—‘—‘Ó €FØ€JÜ ˆs�6‰{×#Ñ#Ó%Ó &€Dð �1‰H˜‰M€EØ �)‰)�.‰.€CØ�‰œq Ó/´a¸³kȈÓO€HØ €C؇I�IÜ Ð DÓEØ �ˆ-ñ ôô)+¯©°® Ñ$ˆ�˜9Ø� ‰ ŒØœ#˜c›( VÑ+Ð-Ð.ˆÜ˜yÖ)ˆHؘ˜ˆ} NÑ2ØÜ—‘œŸ™Ÿ™ g¨xÓ8Ó9ˆBÜ—<‘< § ¡ Ô+ØØ �1‰HˆCØ × Ñ œrŸw™wŸ|™|¨G°XÓ>ÀÐCÔ DØ �O‰O˜C hˆOÕ /ñ*ð)5ð ×ÑÔØ‡I�IŒaÐ9Ó:¼SÀ»_ÑLÔMØ Ðócó—d„}g}|jtd«td«t|«¬«}d}|D]›\}} |dz }tjj ||«} tjj ||«} || | | «} | s|j d|z«Œl|j|| jf«|j||¬«Œ�|j«|jtd «t|«z«|S) Ncó— tj|«}tj||«rytj ||«st jtd««‚|j|jk7ry|S#t$rYywxYw)NFr) r5r;ÚOSErrorrÚsamefilerrrrÚst_size)r$ÚdstrKÚtss r'Ú linkfilterzprune..linkfilter|s}€ð Ü—‘˜“ˆBô �=‰=˜˜cÔ "ØÜ�‰˜s CÔ(ä—+‘+ÜÐDÓEóð ð �:‰:˜Ÿ™Ò #ØØˆ øôò áð ús‚A>Á> B  B spruningr,r-rr1ónot linkable: %s r2s,pruned down to %d probably relinkable files ) r8rr4r5rr<Údebugr?rQr@rAr) r%r$rRr rTr&rDrEÚfnrKÚsrcpathÚtgtrSs r'rr{sø€òð"€GØ�‰Ü ˆ*‹ œA˜h›K¬s°:«ðó€Hð €CÛ‰ˆˆBØ ˆq‰ˆÜ—'‘'—,‘,˜s BÓ'ˆÜ�g‰g�l‰l˜3 Ó#ˆÙ ˜  bÓ )ˆÙØ �H‰HÐ*¨RÑ/Ô 0Ø Ø�‰˜˜BŸJ™JÐ'Ô(Ø�‰˜ "ˆÕ%ðð ×ÑÔØ‡I�IÜ Ð :Ó;¼cÀ'»lÑJôð €NrLc ó„—d„}d}d}d}|jtd«td«t|«¬«}d} |D]ÿ\} } | dz } tjj || «} tjj || «} t | d«}t | d«}|j|«}|r+|j|«}||k7rn|j|«}|rŒ+|j«|j«|r|jd | z«ŒØ || | «|j| | ¬ «|dz }|| z }�Œ|j«|j!td «|t#j$|«fz«y#t$r4}|jd | tj|«fz«Yd}~�Œ}d}~wwxYw) NcóÚ—|dz}tj||« tj||«tj |«y#t$rtj||«‚wxYw)Ns.bak)r5ÚrenamerÚoslinkrOÚremove)r$rRÚbaks r'Ú relinkfilezdo_relink..relinkfile¥s[€Ø�G‰mˆÜ � ‰ �#�sÔð Ü �K‰K˜˜SÔ !ô � ‰ �#�øôò Ü �I‰I�c˜3Ô Ø ð ús �A Á !A*irs relinkingr,r-r1srbrUr2s%s: %s s!relinked %d files (%s reclaimed) )r8rr4r5rr<rÚreadÚcloserVr@rOÚwarnr Ú forcebytestrrArrÚ bytecount)r$rRÚfilesr r`ÚCHUNKLENÚrelinkedÚ savedbytesrDrEÚfÚszÚsourcerYÚsfpÚdfpÚsinÚdinÚinsts r'rr¤s¨€òð€HØ€HØ€Jà�‰Ü ˆ,‹œa ›k´°U³ðó€Hð €CÛ‰ˆˆ2Ø ˆq‰ˆÜ—‘—‘˜c 1Ó%ˆÜ�g‰g�l‰l˜3 Ó"ˆä�6˜5Ó!ˆÜ�3˜ÓˆØ�h‰h�xÓ ˆÙØ—(‘(˜8Ó$ˆCØ�cŠzØØ—(‘(˜8Ó$ˆCò ð � ‰ Œ Ø � ‰ Œ Ù Ø �H‰HÐ*¨QÑ.Ô /Ø ð HÙ �v˜sÔ #Ø �O‰O˜C aˆOÔ (Ø ˜‰MˆHØ ˜"Ñ ŠJð-ð4 ×ÑÔà‡I�IÜ Ð /Ó0Ø ”T—^‘^ JÓ/Ð 0ñ 1õøô ò HØ �G‰G�K 3¬ ×(?Ñ(?ÀÓ(EÐ"FÑF× GÒ Gûð HúsÄ&FÆ F?Æ )F:Æ:F?)N)Ú__doc__r5r;Úmercurial.i18nrÚmercurial.pycompatrÚ mercurialrrrrÚmercurial.utilsr r ÚcmdtableÚcommandÚ testedwithÚCATEGORY_MAINTENANCEr(rrr©rLr'Úr|s…ðñ4ã Û åÝ#÷ó÷ ð €Ø ˆ)× Ñ ˜HÓ %€ð #€ ñ Ø ˆr‘1�[“>°×0LÑ0Lôò.@óð.@òb!òH&óR2rL