Ë �.bYŸjãó\—ddlZddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZmZmZm Z mZmZmZddlmZej0ZdZd Zd „Zd gd d gddgdgddgdœZd„Zd„ZdddZd„Z Gd„d«Z!Gd„d«Z"Gd„d«Z#e#e!d„d„d „d!„e"d"œZ$ d$d#„Z%y)%éNé)Ú_©Únullrev)Úopen)ÚerrorÚ formatterÚmatchÚpycompatÚscmutilÚutilÚvfs)Ú stringutili€i cóΗ|rtj|«}n‡t|t«s t d«‚t j j|«}|j«}tj|g«D]$}|j|«sŒ|dt|« }nt j jtj|««}tj|«}|jd«s|dz }|jd«r|dd}|jd«s#t j j!|«sd|vrt#j$t'd««‚|S) zWchoose prefix to use for names in archive. make sure prefix is safe for consumers.s dest must be string if no prefixNó/s./és../s/../s*archive prefix contains illegal components)r ÚnormpathÚ isinstanceÚbytesÚ ValueErrorÚosÚpathÚbasenameÚlowerÚextsÚgetÚendswithÚlenÚ localpathÚpconvertÚ startswithÚisabsrÚAbortr)ÚdestÚkindÚprefixrÚsfxÚlpfxs ú6usr/lib/python3.12/site-packages/mercurial/archival.pyÚ tidyprefixr*(s€ñÜ—‘˜vÓ&‰ä˜$¤Ô&ÜÐ@ÓAÐ AÜ—‘×!Ñ! $Ó'ˆØ— ‘ “ˆÜ—8‘8˜D "Ö%ˆCØ�~‰~˜cÕ"Ø  ¤3 s£8 )Ð,�Ùð&ô �7‰7× Ñ œDŸN™N¨6Ó2Ó 3€DÜ �]‰]˜4Ó €FØ �?‰?˜4Ô Ø�$‰ˆð×Ñ˜ÔØ˜˜�ˆØ ×Ñ˜Ô ¤B§G¡G§M¡M°$Ô$7¸7ÀfÑ;LÜ�k‰kœ!ÐIÓJÓKÐKØ €Mós.tars.tbz2s.tar.bz2s.tgzs.tar.gzs.zips.txzs.tar.xz)ótarótbz2ótgzózipótxzcón‡—tj«D]\}}tˆfd„|D««sŒ|cSy)Nc3ó@•K—|]}‰j|«–—Œy­w©N)r)Ú.0Úextr$s €r)Ú zguesskind..Osøèø€Ð8©Z cˆt�}‰}˜S×!©Zùsƒ)rÚitemsÚany)r$r%Ú extensionss` r)Ú guesskindr:Ms0ø€Ü ŸJ™JžLшˆjÜ Ó8©ZÓ8Õ 8ØŠKð)ð r+có.—|D]}||cS|tSr3r)ÚrepoÚrevs r)Ú_rootctxr>Ts €ãˆØ�C‰yÒðà ”‰=Ðr+sy repo: {root} node: {ifcontains(rev, revset("wdir()"), "{p1node}{dirty}", "{node}")} branch: {branch|utf8} {ifeq(latesttagdistance, 0, join(latesttag % "tag: {tag}", "\n"), separate("\n", join(latesttag % "latesttag: {tag}", "\n"), "latesttagdistance: {latesttagdistance}", "changessincelatesttag: {changessincelatesttag}"))} có—|j«}d|jjddt«i}t j «}t j |j|d|«}|j«|j|¬«|jt|«j«¬«|j«€(d}|jd¬ «rd }|j|¬ «|j«|j«S) z!build content of .hg_archival.txtstemplates experimentalsarchivemetatemplatesarchive©Úctx)Úrootr+T)Úmissingó+)Údirty)r<ÚuiÚconfigÚ_defaultmetatemplater Ústringior Ú startitemÚcontextÚdatar>Úhexr=rEÚendÚgetvalue)rAr<ÚoptsÚoutÚfmrEs r)Ú buildmetadatarSlsÑ€à �8‰8‹:€Dð �T—W‘W—^‘^Ø Ð3Ô5Ió ð €Dô �-‰-‹/€Cä × Ñ ˜TŸW™W c¨:°tÓ <€B؇L�L„N؇J�J�3€JÔØ‡G�G”˜$“×#Ñ#Ó%€GÔ&à ‡w�wƒyÐØˆØ �9‰9˜Tˆ9Ô "؈EØ �‰�eˆÔ؇F�F„Hà �<‰<‹>Ðr+có$—eZdZdZdd„Zd„Zd„Zy)Útaritzawrite archive to tar file or stream. can write uncompressed, or compress with gzip or bzip2.c󔇇‡—‰‰_d‰_dˆˆˆfd„ }t|t«r|d|¬«‰_y|d|¬«‰_y)Ncó•—‰dk(r�|dd}|st||dz«}tj|tj|dz«t j |‰¬«}|‰_tjj|tj|«|«S tj|tj|‰z«|«S#tj$r-}tjtj|««‚d}~wwxYw)Nógzrrób)Úmtime)rÚgzipÚGzipFiler ÚsysstrÚzlibÚZ_BEST_COMPRESSIONÚfileobjÚtarfileÚTarFileÚtaropenÚCompressionErrorrr#rÚ forcebytestr)ÚmodeÚnamer`Ú gzfileobjÚer%rZÚselfs €€€r)rcztarit.__init__..taropen�séø€Ø�uŠ}ؘA˜a�y�ÙÜ" 4¨°©Ó5�GÜ ŸM™MØÜ—O‘O D¨4¡KÓ0Ü×+Ñ+ØØô � ð )�” ô —O‘O×+Ñ+ØœhŸo™o¨dÓ3°Yóð ðBÜ"Ÿ<™<ØœhŸo™o¨d°T©kÓ:¸Góðøô×/Ñ/òBÜŸ+™+¤j×&=Ñ&=¸aÓ&@ÓAÐAûðBúsÂ,CÃDÃ(C?Ã?Dsw:)rgsw|)r`)r+N)rZr`rrÚz)rjr$rZr%rcs` `` r)Ú__init__ztarit.__init__‹s?ú€ØˆŒ ؈Œ ÷ Bô> �dœEÔ "Ù˜U¨Ô.ˆD�Fá˜U¨DÔ1ˆD�Fr+cóz—tj|«}tj|«}|j|_t |«|_|r@tj|_d|_ tj|«|_ d}d|_n||_ t|«}|jj||«y)Néÿr)r ÚfsdecoderaÚTarInforZrÚsizeÚSYMTYPEÚtyperfÚlinknamerIrkÚaddfile)rjrgrfÚislinkrLÚis r)ruz tarit.addfile³s‹€Ü× Ñ  Ó&ˆÜ �O‰O˜DÓ !ˆØ—*‘*ˆŒÜ�T“ˆŒÙ Ü—_‘_ˆAŒF؈AŒFÜ!×*Ñ*¨4Ó0ˆAŒJ؈D؈A�FàˆAŒFܘD“>ˆDØ �‰�‰�q˜$Õr+có†—|jj«|jr|jj«yyr3)rkÚcloser`©rjs r)Údonez tarit.doneÃs+€Ø �‰� ‰ ŒØ �<Š<Ø �L‰L× Ñ Õ ð r+N)r+©Ú__name__Ú __module__Ú __qualname__Ú__doc__rlrur{©r+r)rUrU‡s„ñ'ó&2òP ó !r+rUcó$—eZdZdZdd„Zd„Zd„Zy)Úzipitz]write archive to zip file or stream. can write uncompressed, or compressed with deflate.có(—t|t«rtj|«}t j |d|xrtj xstj«|_d}||kr|}||_ tj|«dd|_ y)NÚwi¦Îé) rrr roÚzipfileÚZipFileÚ ZIP_DEFLATEDÚ ZIP_STOREDrkrZÚtimeÚgmtimeÚ date_time)rjr$rZÚcompressÚepochs r)rlzzipit.__init__Ísz€Ü �dœEÔ "Ü×$Ñ$ TÓ*ˆDÜ—‘Ø �#�xÒ8¤G×$8Ñ$8ÒN¼G×r¶s €¤ t¨U°FÔ!;r+có—t||d«S)NrXr´rµs r)r¶r¶ó €¤ d¨E°5Ô 9r+có—t||d«S)Nsxzr´rµs r)r¶r¶r¸r+có—t||d«S)NF)rƒrµs r)r¶r¶s €¤ t¨U°EÔ!:r+)ófilesr,r-r.r0suzipr/c ó&‡‡‡‡‡—|dk(r ‰r+tjtd««‚t||‰«Šˆˆˆˆfd„} |tvr!tjtd«|z«‚‰|Št |||xs‰j «d«Š|st j‰«}‰jjdd«rd} || «r| | d d ˆfd „«t‰j«j|««} t| «} | rê| j«t j‰‰j!«t j"‰| «fg«‰jj%td «td«| ¬ «} | j'd«| D]I}‰j)|«}| |d|vxrdxsd d|v‰|j*«| j-|¬«ŒK| j/«|r`t1‰j2«D]H}‰j5|«}t7j8||«}‰|zdz}| |j;‰||‰«z } ŒJ| dk(rtjtd««‚‰j=«| S)a create archive of repo as it was at node. dest can be name of directory, name of archive file, or file object to write archive to. kind is type of archive to create. decode tells whether to put files through decode filters from hgrc. match is a matcher to filter names of files to write to archive. prefix is name of path to put before every archive member. mtime is the modified time, in seconds, or None to use the changeset time. subrepos tells whether to include subrepos. r»s*cannot give prefix when archiving to filescój•—|«}‰r‰j||«}‰j‰|z|||«yr3)Ú wwritedataru) rgrfrvÚgetdatarLÚarchiverÚdecoder&r<s €€€€r)r¬zarchive..write?s5ø€Ù‹yˆÙ Ø—?‘? 4¨Ó.ˆDØ×ј $™¨¨f°dÕ;r+sunknown archive type '%s'rsuis archivemetas.hg_archival.txti¤Fcó•—t‰«Sr3)rSr@s€r)r¶zarchive..Qs ø€¬m¸CÔ.@r+s archiving)ÚunitÚtotalóxiíól)Úitemrs"no files match the archive pattern)rr#rr*Ú archiversÚdater ÚmatchallrFÚ configboolÚlistÚmanifestÚwalkrÚsortÚ prefetchfilesr=Ú matchfilesÚ makeprogressÚupdateÚflagsrLÚ incrementÚcompleteÚsortedÚsubstateÚ workingsubÚmatchmodÚ subdirmatcherÚarchiver{)r<r$Únoder%rÁr r&rZÚsubreposr¬rgÚfilesrÄÚprogressr°ÚffÚsubpathÚsubÚsubmatchÚ subprefixrÀrAs` ` ` @@r)rÜrÜsDü€ð< ˆxÒÙ Ü—+‘+œaÐ MÓNÓOÐ Oä˜D $¨Ó/ˆ÷<ð  ”9ÑÜ�k‰kœ!Ð8Ó9¸DÑ@ÓAÐAà ˆt‰*€Cܘ‰˜t UÒ%;¨c¯h©h«j¸©mÓ<€Há Ü× Ñ  Ó&ˆà ‡w�w×ј% Ô0Ø"ˆÙ �Œ;Ù �$˜˜uÓ&@Ô Aä �—‘“×$Ñ$ UÓ+Ó ,€EÜ �‹J€EÙ Ø � ‰ Œ Ü×ÑØ �C—G‘G“Iœw×1Ñ1°$¸Ó>Ð?Ð@ô ð—7‘7×'Ñ'Ü ˆl‹O¤! H£+°Uð(ó ˆð �‰˜ÔÛˆAØ—‘˜1“ˆBÙ �!�T˜R�ZÒ) EÒ2¨U°D¸B°JÀÀAÁÇ Á Ô LØ × Ñ  AÐ Õ &ðð ×ÑÔáܘcŸl™lÖ+ˆGØ—.‘. Ó)ˆCÜ×-Ñ-¨g°uÓ=ˆHØ Ñ(¨4Ñ/ˆIØ �S—[‘[ ¨9°hÀÓGÑ G‰Eð ,ð  �‚zÜ�k‰kœ!ÐAÓBÓCÐCà ‡M�M„OØ €Lr+)TNr+NF)&r[rrœrar‹r‡r^Úi18nrrÝrr rÚrr r rÚr r rr¦ÚutilsrrIr˜r™r*rr:r>rHrSrUrƒr£rÈrÜr�r+r)Úrésöðó Û Û ÛÛ ÛÛ åÝÝ÷÷ñõà �=‰=€ð€ Ø € òð:ˆIؘ Ð $Ø �jÐ !Ø ˆIØ �jÐ !ñ €òòð ð€Bð Ðò÷6?!ñ?!÷D,ñ,÷^ ñ ð2Ø Ù ;Ù 9Ù 9Ù :Ø ñ € ð Ø Ø Ø Ø ôTr+