Ë –ÀÓógQ,¾ãó—ddlZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z mZmZmZmZmZmZmZmZmZddlmZddlmZmZej:d «Zej>d «Z e!«Z"e duZ#ejHZ$ejJZ%e jLZ'e jPZ(Gd „d e%«Z)Gd „de%«Z*d„Z+d„Z,d„Z-d„Z.d„Z/dZ0dZ1ejdejf«Gd„d ««Zy)éNé)Ú_)Údelattr)Útracing) Ú dirstatemapÚencodingÚerrorÚmatchÚnodeÚpathutilÚpolicyÚpycompatÚscmutilÚtxnutilÚutil)Ú timestamp)ÚdirstaterÚparsersrcó—eZdZdZd„Zy)Ú repocachezfilecache for files in .hg/có8—|jj|«S©N)Ú_openerÚjoin©ÚselfÚobjÚfnames ú6usr/lib/python3.12/site-packages/mercurial/dirstate.pyrzrepocache.join=s€Ø�{‰{×Ñ Ó&Ð&óN©Ú__name__Ú __module__Ú __qualname__Ú__doc__r©r rrr:s „Ù%ó'r rcó—eZdZdZd„Zy)Ú rootcachez*filecache for files in the repository rootcó$—|j|«Sr)Ú_joinrs rrzrootcache.joinDs€Ø�y‰y˜ÓÐr Nr!r&r rr(r(As „Ù4ó r r(có‡—ˆfd„}|S)zôcheck that the func is called with a non-invalidated dirstate The dirstate is in an "invalidated state" after an error occured during its modification and remains so until we exited the top level scope that framed such change. c󀕗|jr&d}|‰jz}tj|«‚‰|g|¢­i|¤ŽS)Nz/calling `%s` after the dirstate was invalidated)Ú_invalidated_contextr"r ÚProgrammingError©rÚargsÚkwargsÚmsgÚfuncs €rÚwrapzcheck_invalidated..wrapPsEø€Ø × $Ò $ØCˆCØ �4—=‘=Ñ ˆCÜ×(Ñ(¨Ó-Ð -Ù�DÐ*˜4Ò* 6Ñ*Ð*r r&©r3r4s` rÚcheck_invalidatedr6Hsø€ô+ð €Kr có$‡—ˆfd„}t|«S)Nc󀕗|js&d}|‰jz}tj|«‚‰|g|¢­i|¤ŽS)Nz2calling `%s` outside of a changing_parents context)Úis_changing_parentsr"r r.r/s €rr4z'requires_changing_parents..wrap[sEø€Ø×'Ò'ØFˆCØ �4—=‘=Ñ ˆCÜ×(Ñ(¨Ó-Ð -Ù�DÐ*˜4Ò* 6Ñ*Ð*r ©r6r5s` rÚrequires_changing_parentsr;Zóø€ô+ô ˜TÓ "Ð"r có$‡—ˆfd„}t|«S)Nc󀕗|js&d}|‰jz}tj|«‚‰|g|¢­i|¤ŽS)Nz*calling `%s` outside of a `changing_files`)Úis_changing_filesr"r r.r/s €rr4z%requires_changing_files..wrapfsEø€Ø×%Ò%Ø>ˆCØ �4—=‘=Ñ ˆCÜ×(Ñ(¨Ó-Ð -Ù�DÐ*˜4Ò* 6Ñ*Ð*r r:r5s` rÚrequires_changing_filesr@er<r có$‡—ˆfd„}t|«S)Nc󀕗|js&d}|‰jz}tj|«‚‰|g|¢­i|¤ŽS)Nz*calling `%s` outside of a changing context)Úis_changing_anyr"r r.r/s €rr4z#requires_changing_any..wrapqsEø€Ø×#Ò#Ø>ˆCØ �4—=‘=Ñ ˆCÜ×(Ñ(¨Ó-Ð -Ù�DÐ*˜4Ò* 6Ñ*Ð*r r:r5s` rÚrequires_changing_anyrDpr<r có$‡—ˆfd„}t|«S)Ncóž•—|js5|jdkDs&d}|‰jz}tj|«‚‰|g|¢­i|¤ŽS)NrzBcalling `%s` outside of a changing_files or running_status context)r?Ú_running_statusr"r r.r/s €rr4z/requires_changing_files_or_status..wrap|sYø€Ø×&Ò&¨$×*>Ñ*>ÀÒ*Bð,ð ð �4—=‘=Ñ ˆCÜ×(Ñ(¨Ó-Ð -Ù�DÐ*˜4Ò* 6Ñ*Ð*r r:r5s` rÚ!requires_changing_files_or_statusrH{sø€ô+ô ˜TÓ "Ð"r ÚparentsÚfilescóš—eZdZdZ dQd„Zd„Zd„Zeje d„««Z eje d„««Z ejd„«Z ejd„«Z d „Zed „«Zd „Zd „Zed „«Zed„«Zed„«Zed„«Zed«d„«Zed„«Zd„Zed«d„«Zed„«Zed„«Zed„«Z ed„«Z!d„Z"d„Z#ed„«Z$d„Z%dRd „Z&d!„Z'd"„Z(d#„Z)d$„Z*e*Z+d%„Z,d&„Z-d'„Z.ed(„«Z/d)„Z0e1dRd*„«Z2e3fd+„Z4d,„Z5d-„Z6e7d.„«Z8d/„Z9d0„Z:e;dQd1„«Zd3„«Z?e>d4„«Z@e1d5„«ZAe1 dSd6„«ZBd7„ZC dSd8„ZDd9„ZEd:„ZFd;„ZGdTd<„ZHdTd=„ZIdUd>„ZJe1d?„«ZKe1dRd@„«ZLdA„ZMdB„ZNdC„ZOdD„ZPdE„ZQdF„ZRdG„ZSdH„ZTdI„ZUdJ„ZVdVdK„ZWdL„ZXdM„ZYdN„ZZdO„Z[dRdP„Z\y)Wrr c óº—||_||_||_||_||_||_||_tj|«|_ d|_ d|_ ||_ i|_ d|_d|_d|_d|_d|_d|_d|_d|j&z|_i|_d|_t0j0|_|j4y)zÈCreate a new dirstate object. opener is an open()-like callable that can be used to open the dirstate file; root is the root of the directory tracked by the dirstate. FrNsdirstatesdirstate-tracked-hints %s.pending)Ú_use_dirstate_v2Ú_use_tracked_hintÚ_nodeconstantsrÚ _validateÚ_rootÚ_sparsematchfnr Ú normasprefixÚ_rootdirÚ_dirtyÚ_dirty_tracked_setÚ_uiÚ _filecacheÚ_changing_levelÚ _change_typerGr-Ú_attached_to_a_transactionÚ _filenameÚ _filename_thÚ_pendingfilenameÚ_plchangecallbacksÚ_origplrÚ_mapclsÚ_cwd) rÚopenerÚuiÚrootÚvalidateÚ sparsematchfnÚ nodeconstantsÚuse_dirstate_v2Úuse_tracked_hints rÚ__init__zdirstate.__init__“sÙ€ð"!0ˆÔØ!1ˆÔØ+ˆÔ؈Œ Ø!ˆŒØˆŒ à+ˆÔô!×-Ñ-¨dÓ3ˆŒ àˆŒ à"'ˆÔ؈ŒØˆŒà ˆÔà ˆÔà ˆÔð%*ˆÔ!Ø*/ˆÔ'Ø$ˆŒØ4ˆÔØ -°·±Ñ >ˆÔØ"$ˆÔ؈Œ Ü"×.Ñ.ˆŒ ð � ‹ r cóÚ—|jrd}tj|«‚dt|«vr|`dt|«vr,|j j «r|j«yyy)Nz1refreshing the dirstate in the middle of a changeÚ_branchÚ_map)rCr r.ÚvarsrmrnÚmay_need_refreshÚ invalidate©rr2s rÚrefreshzdirstate.refreshÊsb€ð × Ò ØEˆCÜ×(Ñ(¨Ó-Ð -Ø œ˜T› Ñ "Ø� Ø ”T˜$“ZÑ  D§I¡I×$>Ñ$>Ô$@Ø �O‰OÕ ð%AÐ r có—|jy)zRmake sure the parents are loaded Used to avoid a race condition. N)Ú_pl©rs rÚprefetch_parentszdirstate.prefetch_parentsÖs €ð �‹r c#ó„K—|j«du}|j}|j«}|du}t|j«}|xs|xs| }|rR|j rF|j«du}|s2|j dk(r#|j rd}tj|«‚|xr|xs| } |xjdz c_ d–— |xjdzc_|jrd} |j« | r&|j«|usJ‚|j|«y|s;|j r.d}|jj|«|j«yyy#t$r|j«‚wxYw#|xjdzc_|jrd} |j«wwxYw­w)uOWrap a status operation This context is not mutally exclusive with the `changing_*` context. It also do not warrant for the `wlock` to be taken. If the wlock is taken, this context will behave in a simple way, and ensure the data are scheduled for write when leaving the top level context. If the lock is not taken, it will only warrant that the data are either committed (written) and rolled back (invalidated) when exiting the top level context. The write/invalidate action must be performed by the wrapped code. The expected logic is: A: read the dirstate B: run status This might make the dirstate dirty by updating cache, especially in Rust. C: do more "post status fixup if relevant D: try to take the w-lock (this will invalidate the changes if they were raced) E0: if dirstate changed on disk → discard change (done by dirstate internal) E1: elif lock was acquired → write the changes E2: else → discard the changes Nrz8entering a status context, but dirstate is already dirtyrFs7dirstate dirty while exiting an isolated status context)Ú currentwlockrCÚcurrenttransactionÚboolrGrUrYr r.Ú Exceptionrqr-ÚwriterdÚ develwarn) rÚrepoÚhas_lockÚ is_changingÚtrÚhas_trÚnestedÚfirst_and_aloner2Ú should_writes rÚrunning_statuszdirstate.running_statusÝs§èø€ð<×$Ñ$Ó&¨dÐ2ˆØ×*Ñ*ˆ Ø × $Ñ $Ó &ˆØ˜4�ˆÜ�d×*Ñ*Ó+ˆà*Ò>¨fÒ>¸Ð?ˆñ ˜tŸ{š{Ø×,Ñ,Ó.°dÐ:ˆFÙ˜d×2Ñ2°aÒ7¸D¿KºKØP�Ü×,Ñ,¨SÓ1Ð1àÒ?¨Ò)>°;Ð$?ˆ à ×Ò Ñ!Õð "Ü ð × Ò  AÑ %Õ Ø×(Ò(Ø$� Ø—‘Õ!á Ø×*Ñ*Ó,°Ñ2Ð 2Ð2Ø �J‰J�r�NÙØ�{Š{ØP�Ø—‘×!Ñ! #Ô&Ø—‘Õ!ððøôò Ø �O‰OÔ Ø ð ûð × Ò  AÑ %Õ Ø×(Ò(Ø$� Ø—‘Õ!ð)üs+‚CGà E)ÃBGÅ)FÆFÆ6F=Æ=Gc#ó°K—|j«€d}tj|«‚|j«du}|s8|jdk(r)|j rd}|j j|«|jdk\sJ‚|j€|jdk(sJ‚||_n7|j|k7r(d}|||jfz}tj|«‚d}|xjdz c_ d–— |jdkDsJ‚|xjdzc_|jdkrd|_|jdk(sJ‚|jr|j«n|jdk} |j«}||duk7r|rd}nd}tj|«‚|r|j|«yy#|j«‚xYw#|jdkDsJ‚|xjdzc_|jdkrd|_|jdk(sJ‚|jr|j«w|jdk}wxYw­w) Ns7trying to change the dirstate without holding the wlockrs:entering a changing context, but dirstate is already dirtyzJtrying to open "%s" dirstate-changing context while a "%s" is already openFrz,transaction vanished while changing dirstatez,transaction appeared while changing dirstate) ryr r.rzrYrUrdr~rZrqr-r})rrÚ change_typer2rƒr†r‚Úms rÚ _changingzdirstate._changing!sTèø€ð × Ñ Ó Ð &ØLˆCÜ×(Ñ(¨Ó-Ð -à×(Ñ(Ó*°$Ð6ˆÙ˜$×.Ñ.°!Ò3¸¿ º ØOˆCØ �G‰G× Ñ ˜cÔ "à×#Ñ# qÒ(Ð(Ð(à × Ñ Ð $Ø×'Ñ'¨1Ò,Ð ,Ð,Ø +ˆDÕ Ø × Ñ  +Ò -ð ð ð �K ×!2Ñ!2Ð3Ñ 3ˆCÜ×(Ñ(¨Ó-Ð -؈ Ø ×Ò Ñ!Õð 9Ü ð ×'Ñ'¨!Ò+Ð +Ð+Ø × Ò  AÑ %Õ ð×#Ñ# qÒ(Ø$(�Ô!Ø×+Ñ+¨qÒ0Ð0Ð0Ø×(Ò(ð—‘Õ!à#×3Ñ3°qÑ8‘ Ø × $Ñ $Ó &ˆØ �b �nÒ %ÙØB‘àB�Ü×(Ñ(¨Ó+Ð +Ù Ø �J‰J�r�Nð øð3 Ø �O‰OÔ Ø ûà×'Ñ'¨!Ò+Ð +Ð+Ø × Ò  AÑ %Õ ð×#Ñ# qÒ(Ø$(�Ô!Ø×+Ñ+¨qÒ0Ð0Ð0Ø×(Ò(ð—‘Õ!à#×3Ñ3°qÑ8‘ üs,‚C8IÃ;GÄCIÇGÇGÇA;IÉIc#ójK—|j|t«5}|–—ddd«y#1swYyxYw­wr)r‹ÚCHANGE_TYPE_PARENTS©rrÚcs rÚchanging_parentszdirstate.changing_parentsYs'èø€à �^‰^˜DÔ"5Ô 6¸!ØŠG÷7× 6Ñ 6üó‚3™'ž 3§0¬3c#ójK—|j|t«5}|–—ddd«y#1swYyxYw­wr)r‹ÚCHANGE_TYPE_FILESrŽs rÚchanging_fileszdirstate.changing_files^s'èø€à �^‰^˜DÔ"3Ô 4¸ØŠG÷5× 4Ñ 4ür‘có0—d}tj|«‚)NzJMercurial 6.4 and later requires call to `dirstate.changing_parents(repo)`)r r.rrs rÚ parentchangezdirstate.parentchangeds€ð 0ð ô×$Ñ$ SÓ)Ð)r có —|jdkDS)z~Returns true if the dirstate is in the middle of a set of changes. This returns True for any kind of change. r)rYrvs rrCzdirstate.is_changing_anyks€ð ×#Ñ# aÑ'Ð'r có"—|j«Sr)Úis_changing_parentrvs rÚpendingparentchangezdirstate.pendingparentchangess€Ø×&Ñ&Ó(Ð(r cóR—|jjdd«|jS)úsReturns true if the dirstate is in the middle of a set of changes that modify the dirstate parent. sdirstate.is_changing_parentsó6.5)rWÚ deprecwarnr9rvs rr™zdirstate.is_changing_parentvs%€ð �‰×ÑÐ;¸VÔDØ×'Ñ'Ð'r cóH—|jdkry|jtk(S)rœrF)rYrZr�rvs rr9zdirstate.is_changing_parents}s'€ð × Ñ  1Ò $ØØ× Ñ Ô$7Ñ7Ð7r cóH—|jdkry|jtk(S)z‚Returns true if the dirstate is in the middle of a set of changes that modify the files tracked or their sources. rF)rYrZr“rvs rr?zdirstate.is_changing_files†s'€ð × Ñ  1Ò $ØØ× Ñ Ô$5Ñ5Ð5r có�—|j|j|j|j|j|j «S)zAReturn the dirstate contents (see documentation for dirstatemap).)rarWrrQrOrMrvs rrnz dirstate._map�s<€ð�|‰|Ø �H‰HØ �L‰LØ �J‰JØ × Ñ Ø × !Ñ !ó  ð r có<—|j€y|j«S)a!The matcher for the sparse checkout. The working directory may not include every file from a manifest. The matcher obtained by this property will match a path if it is to be included in the working directory. When sparse if disabled, return None. N)rRrvs rÚ_sparsematcherzdirstate._sparsematcheršs$€ð × Ñ Ð &Øð×"Ñ"Ó$Ð$r óbranchcó"—d}d} tj|j|jd«\}}|j «j «}|�|j« |sy|S#t $rYŒ#wxYw#|�|j«wwxYw)Nr r¤sdefault)rÚ trypendingrQrÚreadÚstripÚFileNotFoundErrorÚclose)rÚfÚdataÚmodes rrmzdirstate._branch«sˆ€à ˆØˆð Ü×(Ñ(¨¯©°T·\±\À9ÓM‰GˆAˆtØ—6‘6“8—>‘>Ó#ˆDðˆ}Ø—‘• ÙØØˆ øô!ò Ù ð ûðˆ}Ø—‘• ðús$†A A*Á* A6Á3A9Á5A6Á6A9Á9Bcó6—|jj«Sr)rnrIrvs rruz dirstate._pl»s€à�y‰y× Ñ Ó"Ð"r có8—|jj|«Sr)rnÚ hastrackeddir)rÚds rÚhasdirzdirstate.hasdir¿s€Ø�y‰y×&Ñ& qÓ)Ð)r ó .hgignorecóì—|j«}|stj«S|D�cgc]}d|z‘Œ }}tj|jdg||j j ¬«Scc}w)Ns include:%sr ©Úwarn)Ú _ignorefilesÚmatchmodÚneverr rQrWr¶)rrJr«Úpatss rÚ_ignorezdirstate._ignoreÂsa€à×!Ñ!Ó#ˆÙÜ—>‘>Ó#Ð #á+0Ó1©5 a�  Ó!¨5ˆÐ1Ü�~‰~˜dŸj™j¨#¨r°4¸d¿h¹h¿m¹mÔLÐLùò2s« A1cód—|jjdd«xrtjdk7S)Nóuisslashó/)rWÚ configboolrÚosseprvs rÚ_slashzdirstate._slashËs'€à�x‰x×"Ñ" 5¨(Ó3ÒN¼¿¹È$Ñ8NÐNr có@—tj|j«Sr)rÚ checklinkrQrvs rÚ _checklinkzdirstate._checklinkÏs€ä�~‰~˜dŸj™jÓ)Ð)r cóR—ttj|j««Sr)r{rÚ checkexecrQrvs rÚ _checkexeczdirstate._checkexecÓs€ä”D—N‘N 4§:¡:Ó.Ó/Ð/r cóL—tj|jd«« S)Nó.hg)rÚfscasesensitiver*rvs rÚ _checkcasezdirstate._checkcase×s€ä×'Ñ'¨¯ © °6Ó(:Ó;Ð;Ð;r có —|j|zSr)rT)rr«s rr*zdirstate._joinÛs€ð�}‰}˜qÑ Ð r c󇇇—gŠˆˆˆfd„}|S)aSbuild a callable that returns flags associated with a filename The information is extracted from three possible layers: 1. the file system if it supports the information 2. the "fallback" information stored in the dirstate if any 3. a more expensive mechanism inferring the flags from the parents. cóR•—d}d} tj‰j|««}‰jrt j |«rSy‰j|«}|jr |jr)y‰s‰j‰««‰d|«}d|vry‰jrt j|«ryy|€‰j|«}|jr|jryy|€#‰s‰j‰««‰d|«}d|vryy#t$rYywxYw)Nr ólróx)ÚosÚlstatr*ÚOSErrorrÄrÚ statislinkÚ get_entryÚhas_fallback_symlinkÚfallback_symlinkÚappendrÇÚ statisexecÚhas_fallback_execÚ fallback_exec)ÚxÚentryÚfallback_valueÚstÚ buildfallbackÚ fallback_funcrs €€€rÚ get_flagsz$dirstate.flagfunc..get_flagsìs+ø€ØˆEØ!ˆNð Ü—X‘X˜dŸj™j¨›mÓ,�ð�ŠÜ—?‘? 2Ô&ØàŸ™ qÓ)�Ø×-Ò-Ø×-Ò-Ø#á(Ø%×,Ñ,©]«_Ô=Ø%5 ]°1Ñ%5°aÓ%8�Nؘ~Ñ-Ø#à�ŠÜ—?‘? 2Ô&Øðð�=Ø ŸN™N¨1Ó-�EØ×*Ò*Ø×*Ò*Ø#ðð &Ð-Ù,Ø)×0Ñ0±³ÔAØ)9¨°qÑ)9¸!Ó)<˜Ø˜~Ñ-Ø#ØøôEò Ùð ús‡$DÄ D&Ä%D&r&)rràrârás`` @rÚflagfunczdirstate.flagfuncàsú€ðˆ ö' ðRÐr cój—|jjdd«}|r|Stj«S)Nr½sforcecwd)rWÚconfigrÚgetcwd)rÚforcecwds rrbz dirstate._cwds-€ð—8‘8—?‘? 5¨+Ó6ˆÙ ؈OÜ�‰Ó Ð r cóä—|j}||jk(ry|j}tj|«s|tj z }|j |«r|t|«dS|S)aReturn the path from which a canonical path is calculated. This path should be used to resolve file patterns or to convert canonical paths back to file paths for display. It shouldn't be used to get real file paths. Use vfs functions instead. r N)rbrQrÚ endswithseprrÀÚ startswithÚlen)rÚcwdÚrootseps rræzdirstate.getcwdse€ð�i‰iˆØ �$—*‘*Ò Øà—*‘*ˆÜ×Ñ Ô(Ø ”x—~‘~Ñ %ˆGØ �>‰>˜'Ô "Ø”s˜7“|�~Ð&Ð &ðˆJr Ncó®—|€|j«}tj|j||«}|jrtj |«S|Sr)rærÚpathtorQrÁÚpconvert)rr«rìÚpaths rrïzdirstate.pathto3sC€Ø ˆ;Ø—+‘+“-ˆCÜ�{‰{˜4Ÿ:™: s¨AÓ.ˆØ �;Š;Ü—=‘= Ó&Ð &؈ r cóT—|jj|«}|€ t«S|S)z-return a DirstateItem for the associated path)rnÚgetÚ DirstateItem)rrñrÝs rrÕzdirstate.get_entry;s&€à— ‘ — ‘ ˜dÓ#ˆØ ˆ=Ü“>Ð !؈ r có—||jvSr)rn)rÚkeys rÚ __contains__zdirstate.__contains__Bs€Ø�d—i‘iÐÐr có>—tt|j««Sr)ÚiterÚsortedrnrvs rÚ__iter__zdirstate.__iter__Es€Ü”F˜4Ÿ9™9Ó%Ó&Ð&r có6—|jj«Sr)rnÚitemsrvs rrýzdirstate.itemsHs€Ø�y‰y�‰Ó Ð r có^—|jD�cgc]}|j|«‘Œc}Scc}wr)rurP)rÚps rrIzdirstate.parentsMs'€Ø+/¯8ª8Ó4©8 a�—‘˜qÕ!¨8Ñ4Ð4ùÒ4s�*có>—|j|jd«S)Nr©rPrurvs rÚp1z dirstate.p1Pó€Ø�~‰~˜dŸh™h q™kÓ*Ð*r có>—|j|jd«S)Nrrrvs rÚp2z dirstate.p2Srr cóN—|jd|jjk7S)zTrue if a merge is in progressr)rurOÚnullidrvs rÚin_mergezdirstate.in_mergeVs#€ð�x‰x˜‰{˜d×1Ñ1×8Ñ8Ñ8Ð8r có@—tj|j«Sr)rÚtolocalrmrvs rÚbranchzdirstate.branch[s€Ü×Ñ § ¡ Ó-Ð-r cóL—|€|jj}|jdk(r td«‚d|_|j d}|j €|j |_|jj}||k7xr||k(}|jj|||¬«S)zñSet dirstate parents to p1 and p2. When moving from two parents to one, "merged" entries a adjusted to normal and previous copy records discarded and returned by the call. See localrepo.setparents() rsOcannot set dirstate parent outside of dirstate.changing_parents context managerTr)Úfold_p2) rOrrYÚ ValueErrorrUrur`rnÚ setparents)rrrÚoldp2rr s rrzdirstate.setparents^s¤€ð ˆ:Ø×$Ñ$×+Ñ+ˆBØ × Ñ  1Ò $Üð=óð 𠈌 Ø—‘˜‘ ˆØ �<‰<Ð ØŸ8™8ˆDŒLØ×$Ñ$×+Ñ+ˆà˜6‘/Ò2 b¨F¡lˆØ�y‰y×#Ñ# B¨°GÐ#Ó<ÐØ ؈Œ Ø Ð Ø × Ñ ˜vÔ &Ø&,ˆD�I‰I× Ñ ˜dÒ #à �I‰I× Ñ × !Ñ ! $¨Õ -r cóN—|jjj|d«Sr)rnr.ró)rÚfiles rÚcopiedzdirstate.copied¸s€Ø�y‰y× Ñ ×$Ñ$ T¨4Ó0Ð0r có.—|jjSr)rnr.rvs rÚcopieszdirstate.copies»s€Ø�y‰y× Ñ Ð r có —d|_|jj|«}|� |js|j |«|jj |«}|r&|jj j|d«|rd|_|S)aUa "public" method for generic code to mark a file as tracked This function is to be called outside of "update/merge" case. For example by a command like `hg add X`. if reset_copy is set, any existing copy information will be dropped. return True the file was previously untracked, False otherwise. TN) rUrnróÚtrackedÚ_check_new_tracked_filenameÚ set_trackedr.r/rV)rÚfilenameÚ reset_copyrÝÚ pre_trackeds rr;zdirstate.set_tracked¾sx€ðˆŒ Ø— ‘ — ‘ ˜hÓ'ˆØ ˆ= § ¢ Ø × ,Ñ ,¨XÔ 6Ø—i‘i×+Ñ+¨HÓ5ˆ Ù Ø �I‰I× Ñ × !Ñ ! (¨DÔ 1Ù Ø&*ˆDÔ #ØÐr có\—|jj|«}|rd|_d|_|S)a a "public" method for generic code to mark a file as untracked This function is to be called outside of "update/merge" case. For example by a command like `hg remove X`. return True the file was previously tracked, False otherwise. T)rnÚ set_untrackedrUrV)rr<Úrets rr@zdirstate.set_untrackedÔs/€ð�i‰i×%Ñ% hÓ/ˆÙ ؈DŒKØ&*ˆDÔ #؈ r có®—d|_|j|js|j|«|\}}}|jj ||||«y)zFrecord that the current state of the file on disk is known to be cleanTN)rUrnr9r:Ú set_clean)rr<Úparentfiledatar­ÚsizeÚmtimes rrCzdirstate.set_cleanãsO€ðˆŒ Ø�y‰y˜Ñ"×*Ò*Ø × ,Ñ ,¨XÔ 6Ø,шˆt�UØ � ‰ ×јH d¨D°%Õ8r cóH—d|_|jj|«y)z|jj |«�6|jj |«d|_n|s|r|� |jry|jj |||d¬«y)a4Set a file as tracked in the parent (or not) This is to be called when adjust the dirstate to a new parent after an history rewriting operation. It should not be called during a merge (p2 != nullid) and only within a `with dirstate.changing_parents(repo):` context. s7update_file_reference should not be called when mergingNFT)Úhas_meaningful_mtime) rr r.rnrór9Ú reset_staterUÚadded)rr<Ú p1_trackedr2rÝÚ wc_trackeds rÚupdate_file_p1zdirstate.update_file_p1òs°€ð �=Š=ØLˆCÜ×(Ñ(¨Ó-Ð -Ø— ‘ — ‘ ˜hÓ'ˆØ ˆ=؉JàŸ™ˆJÙ™jà�y‰y�}‰}˜XÓ&Ð2Ø— ‘ ×%Ñ% hÔ/Ø"�• Ù¡*ØÐ  U§[¢[Øà � ‰ ×ÑØ Ø Ø ð"'ð õ r có2—|j||||||¬«y)aäupdate the information about a file in the dirstate This is to be called when the direstates parent changes to keep track of what is the file situation in regards to the working copy and its parent. This function must be called within a `dirstate.changing_parents` context. note: the API is at an early stage and we might need to adjust it depending of what information ends up being relevant and useful to other processing. )r<rNrMÚp2_infoÚpossibly_dirtyrDN)Ú _update_file)rr<rNrMrQrRrDs rÚ update_filezdirstate.update_files)€ð* ×ÑØØ!Ø!ØØ)Ø)ð õ r có’—|jdkDs&|jdkDsd}tj|«‚|j|i|¤Žy)a!NEVER USE THIS, YOU DO NOT NEED IT This function is a variant of "update_file" to be called by a small set of extensions, it also adjust the internal state of file, but can be called outside an `changing_parents` context. A very small number of extension meddle with the working copy content in a way that requires to adjust the dirstate accordingly. At the time this command is written they are : - keyword, - largefile, PLEASE DO NOT GROW THIS LIST ANY FURTHER. This function could probably be replaced by more semantic one (like "adjust expected size" or "always revalidate file content", etc) however at the time where this is writen, this is too much of a detour to be considered. rzrequires a changes contextN)rYrGr r.rS)rr0r1r2s rÚhacky_extension_update_filez$dirstate.hacky_extension_update_file8sP€ð&×$Ñ$ qÒ(¨D×,@Ñ,@À1Ò,DØ.ˆCÜ×(Ñ(¨Ó-Ð -؈×ÑØ ð àó r cóÆ—d|_|jj|«}|€d}n |j}||k7rd|_|jj ||||| |¬«y)NTF)rQrJrD)rUrnrór9rVrK) rr<rNrMrQrRrDÚ old_entryÚ prev_trackeds rrSzdirstate._update_fileSso€ðˆŒ Ø—I‘I—M‘M (Ó+ˆ Ø Ð Ø ‰Là$×,Ñ,ˆLØ ˜:Ò %Ø&*ˆDÔ #à � ‰ ×ÑØ Ø Ø ØØ%3Ð!3Ø)ð õ r cóR—tj|«|jj|«r8t d«}|t j |«z}tj|«‚tj|«D]–}|jj|«rny|jj|«}|€Œ>|jrŒKt d«}|t j |«t j |«fz}tj|«‚|j|«y)Ns directory %r already in dirstates#file %r in dirstate clashes with %r)rÚ checkfilenamernr°rrÚbytestrr ÚAbortr ÚfinddirsróÚremovedr-)rr<r2r±rÝs rr:z$dirstate._check_new_tracked_filenamessè€Ü×јhÔ'Ø �9‰9× "Ñ " 8Ô ,ÜÐ7Ó8ˆCØ ”8×#Ñ# HÓ-Ñ -ˆCÜ—+‘+˜cÓ"Ð "ä×"Ñ" 8Ö,ˆAØ�y‰y×&Ñ& qÔ)ÙØ—I‘I—M‘M !Ó$ˆEØÑ ¨¯«ÜÐ>Ó?�Øœ×(Ñ(¨Ó+¬X×-=Ñ-=¸hÓ-GÐHÑH�Ü—k‘k #Ó&Ð&ð-ð ×ј8Õ$r có´—|j}|�J|j«s9||«s0td«}td«}tj||z|¬«‚yyy)z2Check that a filename is inside the sparse profileNs3cannot add '%s' - it is outside the sparse checkoutswinclude file with `hg debugsparse --include ` or use `hg add -s ` to include file directory while adding)Úhint)r£Úalwaysrr r])rr<Ú sparsematchr2ras rr-zdirstate._check_sparse„sf€à×)Ñ)ˆ Ø Ð "¨;×+=Ñ+=Ô+?Ù˜xÔ(ÜÐNÓO�ÜðQó�ô—k‘k #¨¡.°tÔ<Ð<ð )ð,@Ð "r có—|€Gtjjtjj|j|««}|s=|s7d|vr3|j dd«\}}|j |d|d«}|dz|z}|S|}|Sd|vrX|j dd«\}}|j |d|d«}|jdz|z} |dztj|| «z}n tj||j«}|||<|S)Nr¾rFT) rÑrñÚlexistsrrQÚrsplitÚ _normalizerÚfspath) rrñÚnormedÚ ignoremissingÚexistsÚstoremapr±r«ÚfoldedÚrs rÚ _discoverpathzdirstate._discoverpath�s€Ø ˆ>Ü—W‘W—_‘_¤R§W¡W§\¡\°$·*±*¸dÓ%CÓDˆFÙá  T¨T¡\Ø—{‘{ 4¨Ó+‘��1Ø—O‘O A u¨m¸TÓB�ؘT™ A™�ð ˆ ð�ðˆ ð�v‰~Ø—}‘} T¨1Ó-‘��1Ø—O‘O A u¨m¸TÓB�Ø—J‘J Ñ%¨Ñ)�ؘT™¤D§K¡K°°1Ó$5Ñ5‘䟙 V¨T¯Z©ZÓ8�Ø%ˆH�VÑ àˆ r cóÞ—tj|«}|jjj |d«}|€/|r|}|S|j |||||jj«}|Sr)rÚnormcasernÚ filefoldmapróro©rrñÚisknownrjrkrirms rÚ_normalizefilezdirstate._normalizefileªsn€Ü—‘˜tÓ$ˆØ—‘×&Ñ&×*Ñ*¨6°4Ó8ˆØ ˆ>ÙØ�ð ˆ ð×+Ñ+ؘ& -°¸¿¹×9NÑ9Nó�ðˆ r có.—tj|«}|jjj |d«}|€&|jj j |d«}|€/|r|}|S|j |||||jj «}|Sr)rrqrnrrróÚ dirfoldmaprorss rrgzdirstate._normalize¶s�€Ü—‘˜tÓ$ˆØ—‘×&Ñ&×*Ñ*¨6°4Ó8ˆØ ˆ>Ø—Y‘Y×)Ñ)×-Ñ-¨f°dÓ;ˆFØ ˆ>ÙØ�ðˆ ð×+Ñ+ؘ& -°¸¿¹×9MÑ9Mó�ðˆ r cóD—|jr|j|||«S|S)aL normalize the case of a pathname when on a casefolding filesystem isknown specifies whether the filename came from walking the disk, to avoid extra filesystem access. If ignoremissing is True, missing path are returned unchanged. Otherwise, we try harder to normalize possibly existing path components. The normalized case is determined based on the following precedence: - version of name already stored in the dirstate - version of name stored on disk - version provided via command arguments )rËrg)rrñrtrjs rÚ normalizezdirstate.normalizeÆs#€ð$ �?Š?Ø—?‘? 4¨°-Ó@Ð @؈ r cóF—|jj«d|_y)NT)rnÚclearrUrvs rr{zdirstate.clearßs€à � ‰ �‰Ô؈� r cóv—|j}|�m|j«s]|D�cgc] }||«sŒ |‘Œ}}|r|D�cgc] }||«sŒ |‘Œ}}|�)|D�chc] }||«rŒ |’Œ}}|j|«}|€|}g}|j«n_t |«dkr3g}g}|D])}||vr|j |«Œ|j |«Œ+nt |«} | t |«z}| |z }|j€|j|_|jj||jj«|D]>}|jr|j|«Œ!|jj|dd¬«Œ@|D]}|jj|«Œd|_ycc}wcc}wcc}w)Né T)rNrM)r£rbÚunionr{rërØrr`rurnrrOrrr;rKrU) rÚparentÚallfilesÚ changedfilesÚmatcherr«ÚdirstatefilestoremoveÚ to_lookupÚto_dropÚchangedfilessets rÚrebuildzdirstate.rebuildäs±€à×%Ñ%ˆØ Ð  w§~¡~Ô'7á#+Ó:¡8˜a©w°q­zš 8ˆHÐ:ÙÙ+7ÓF©< a¹7À1½:¢¨<� ÐFàÐ'ñ59Ó(K±D¨qÁÈÅ ª°DÐ%Ð(KØ4×:Ñ:¸<ÓH� à Ð à ˆI؈GØ �J‰J�LÜ �Ó  Ò #ðˆI؈GÛ!�ؘ‘=Ø×$Ñ$ QÕ'à—N‘N 1Õ%ñ "ô " ,Ó/ˆOØ'¬#¨h«-Ñ7ˆIØ%¨ Ñ1ˆGà �<‰<Ð ØŸ8™8ˆDŒLØ � ‰ ×јV T×%8Ñ%8×%?Ñ%?Ô@ãˆAØ�}Š}Ø× Ñ  Õ#à— ‘ ×%Ñ%ØØ#Ø#ð&õð óˆAØ �I‰I× !Ñ ! !Õ $ððˆ� ùò];ùâFùò )Ls!£ F,±F,½ F1Á F1Á F6Á%F6cóT‡—|€yˆfd„}|jd‰jz|«y)z3make sure we invalidate the current change on abortNcó4•—d‰_‰j«y©NF)r[rq)r‚rs €rÚon_abortz*dirstate._setup_tr_abort..on_abortsø€Ø.3ˆDÔ +Ø �O‰OÕ r sdirstate-invalidate%s)Úaddabortr )rr‚r‹s` rrzdirstate._setup_tr_aborts/ø€à ˆ:Ø ô ð � ‰ Ø $ t×':Ñ':Ñ :Ø õ r cól‡‡—‰jsy‰jrJ‚‰jxr ‰j}‰r�‰j ‰«d‰_ˆˆfd„}‰j d‰jz‰jf|dd¬«|r2‰j d‰jz‰jfˆˆfd„dd¬«yˆfd„}|‰j«5}‰j‰|«ddd«|r.|‰j«5}‰j‰|«ddd«yy#1swYŒ:xYw#1swYyxYw) NTcó:•—d‰_‰j‰|«fyrŠ)r[Ú_writedirstate©r«rr‚s €€rÚ on_successz"dirstate.write..on_success4sø€Ø27�Ô/Ø×#Ñ# B¨Ó*Ò+r sdirstate-1-main%srrsdirstate-2-key-post%scó(•—‰j‰|«Sr)Ú_write_tracked_hintr�s €€rÚz dirstate.write..Dsø€˜d×6Ñ6°r¸1Ô=r có.•—‰j|ddd¬«S)NrTr)r)r«rs €rr”z dirstate.write..Jsø€˜Ÿ™ a¨¸$È4˜ÔPr ) rUr-rNrVrr[rr r\r]r�r“)rr‚Ú write_keyr‘r4r«s`` rr}zdirstate.write's4ù€Ø�{Š{Ø ð×,Ò,Ð,Ð,à×*Ñ*ÒF¨t×/FÑ/Fˆ Ù à × Ñ  Ô $Ø.2ˆDÔ +õ ,ð × Ñ Ø$ t×':Ñ':Ñ:Ø—‘Ð!ØØ!Ø"ð ô ñØ×#Ñ#Ø,¨t×/BÑ/BÑBØ×&Ñ&Ð(Ü=Ø%Ø"&ð $ôð ãPˆÙ �$—.‘.Ô ! QØ × Ñ   AÔ &÷"á ñ�d×'Ñ'Ô(¨AØ×(Ñ(¨¨QÔ/÷)Ð(ð ÷"Ð !ú÷ )Ð(úsÃDÄD*ÄD'Ä*D3có\—|jj|j«d|_y)zOremove the tracked_hint file To be used by format downgrades operationFN)rÚunlinkr]rNrvs rÚdelete_tracked_hintzdirstate.delete_tracked_hintSs$€ð � ‰ ×јD×-Ñ-Ô.Ø!&ˆÕr có"—||j|<y)a%add a callback to be called when the wd parents are changed Callback will be called with the following arguments: dirstate, (oldp1, oldp2), (newp1, newp2) Category is a unique identifier to allow overwriting an old callback with a newer callback. N)r_)rÚcategoryÚcallbacks rÚaddparentchangecallbackz dirstate.addparentchangecallbackZs€ð-5ˆ×Ñ Ò)r có^—|jrJ‚|j�i|j|jk7rPt|jj ««D]#\}}|||j|j«Œ%d|_|j j||«d|_d|_ yrŠ) r-r`rurúr_rýrnr}rUrV)rr‚rßr�rœs rr�zdirstate._writedirstatees‰€à×,Ò,Ð,Ð,à �<‰<Ð #¨¯ © ¸¿¹Ò(@Ü% d×&=Ñ&=×&CÑ&CÓ&EÖF‘ ��8Ù˜˜tŸ|™|¨T¯X©XÕ6ð GàˆDŒLØ � ‰ �‰˜˜BÔØˆŒ Ø"'ˆÕr cóŽ—tjtj«j«}|j d|z«y)Ns1 %s )r ÚhexÚuuidÚuuid4Úbytesr})rr‚r«rös rr“zdirstate._write_tracked_hintqs-€Ü�h‰h”t—z‘z“|×)Ñ)Ó*ˆØ �‰� ˜SÑ Õ!r có‚—|j|«rytj|«D]}|j|«sŒyy)NTF)r»r r^)rr«rÿs rÚ _dirignorezdirstate._dirignoreus8€Ø �<‰<˜Œ?ØÜ×"Ñ" 1Ö%ˆAØ�|‰|˜A�Ùð&ðr c ó²—g}tjj|jd««r |j |jd««|j j d«D]h\}}|dk(s|jd«sŒ|j tjj|jtj|«««Œj|S)Nr³r½signoresignore.) rÑrñrkr*rØrWÚ configitemsrêrrTrÚ expandpath)rrJÚnamerñs rr·zdirstate._ignorefiles}s–€ØˆÜ �7‰7�>‰>˜$Ÿ*™* \Ó2Ô 3Ø �L‰L˜Ÿ™ LÓ1Ô 2ØŸ(™(×.Ñ.¨uÖ5‰JˆD�$Ø�yÒ  D§O¡O°JÕ$?ð— ‘ œRŸW™WŸ\™\¨$¯-©-¼¿¹ÈÓ9NÓOÕPð 6ð ˆ r có—tj|j««}t«}|r×|j «}t j ||jjd¬«}|D]‚\}}}t j|d«\} } | dk(r| |vr|j| «Œ;t j|jdg|g|jj¬«} | |«sŒ}|||fcS|j|«|rŒ×y)NT)Ú sourceinfosglobs subincluder rµ)Néÿÿÿÿr )Ú collectionsÚdequer·rÚpopleftr¸ÚreadpatternfilerWr¶Ú _patsplitrØr rQÚadd) rr«rJÚvisitedÚiÚpatternsÚpatternÚlinenoÚlineÚkindrÿrŠs rÚ_ignorefileandlinezdirstate._ignorefileandlineˆsê€Ü×!Ñ! $×"3Ñ"3Ó"5Ó6ˆÜ“%ˆÙØ— ‘ “ˆAÜ×/Ñ/Ø�4—8‘8—=‘=¨TôˆHó*2Ñ%�˜ Ü"×,Ñ,¨W°gÓ>‘��aؘ=Ò(Ø Ñ'ØŸ ™  QœØÜ—N‘NØ—J‘J  R¨'¨¸¿¹¿¹ô�ñ�Q•4ؘv tÐ,Ò,ð*2ð �K‰K˜ŒNò!ð"r c óh—d„}|j}|j}tj}tj }tj }tj} tj} |j} g} | j} g}|j}|j«s|jr |j}nd}t|j««}|j!«d\}}|t#|«krŽ|t#|«kr€||dz}|||kr|dz }Œ2|t#|«kr:||j%|«r&||=|t#|«kr||j%|«rŒ&|dz }|t#|«kr|t#|«krŒ€|rd|vrdg}d}t&j)|«}d|d<|D]x}|r ||dd «}n|}||vrŒ || |««}||j*«}||k(r||vrd||<| ||f«n(|| k(s|| k(r|||<n||||««||vrd||<Œz|j7«r&t9|«D]}|dk(s||vrŒ ||«rŒ||=Œ|j«rÓ|jrÇi}|j;«D]P\}}|€Œ t=j>|«}|jA|«}|€tC«}|||<|jE|«ŒR|j;«D]O\}}t#|«dkDsŒ|D]6} |jG| |d d|jjH«}!| |!k7sŒ2d|| <Œ8ŒQ|| |fS#t,$r_}||vrd||<nJ|jj/|«r ||«n&||t1j2|j4««Yd}~�Œüd}~wwxYw) a²Get stat data about the files explicitly specified by match. Return a triple (results, dirsfound, dirsnotfound). - results is a mapping from filename to stat result. It also contains listings mapping subrepos and .hg to None. - dirsfound is a list of files found to be directories. - dirsnotfound is a list of files that the dirstate thinks are directories and that were not found.có|—td«}tj|«r td«}nƒtj|«r td«}nbtj|«r td«}nAtj |«r td«}n tj |«r td«}td«|zS)Nsunknownscharacter devices block devicesfifossockets directorys"unsupported file type (type is %s))rÚstatÚS_ISCHRÚS_ISBLKÚS_ISFIFOÚS_ISSOCKÚS_ISDIR)r­r¹s rÚbadtypez'dirstate._walkexplicit..badtype¨sˆ€Ü�Z“=ˆDÜ�|‰|˜DÔ!ÜÐ,Ó-‘Ü—‘˜dÔ#ܘÓ)‘Ü—‘˜tÔ$ܘ“z‘Ü—‘˜tÔ$ܘ“|‘Ü—‘˜dÔ#ܘ“�ÜÐ:Ó;¸dÑBÐ Br N)rrr¾rr rÉFT)%ÚbadrnrÑrÒr½ÚS_IFMTÚS_IFDIRÚS_IFREGÚS_IFLNKr*rØÚisexactrËrgrúrJÚsortrërêÚdictÚfromkeysÚst_moderÓr²rÚ strtolocalÚstrerrorÚanypatsÚlistrýrrqrórr²rorw)"rr ÚsubreposrÃÚbadfnÚdmaprÒÚgetkindÚdirkindÚregkindÚlnkkindrÚ dirsfoundÚfoundaddÚ dirsnotfoundÚ notfoundaddryrJr´ÚjÚsubpathÚresultsÚffÚnfrßr¹Úinstr«riÚncÚpathsÚnormrñrms" rÚ _walkexplicitzdirstate._walkexplicitžs�€ò Cð— ‘ ˆØ�y‰yˆÜ—‘ˆÜ—+‘+ˆÜ—,‘,ˆÜ—,‘,ˆÜ—,‘,ˆØ�z‰zˆØˆ Ø×#Ñ#ˆØˆ Ø"×)Ñ)ˆ à�}‰}Œ 4§?¢?ØŸ™‰IàˆIä�u—{‘{“}Ó%ˆØ� ‰ ŒØ‰ˆˆ1Ø”#�e“*Šn ¤S¨£]Ò!2ؘq‘k DÑ(ˆGØ�Q‰x˜'Ò!Ø�Q‘�ØØ”c˜%“j’. U¨1¡X×%8Ñ%8¸Ô%Aؘ!�Hð”c˜%“j’. U¨1¡X×%8Ñ%8¸Õ%Aà �‰FˆAð”#�e“*Šn ¤S¨£]Ó!2ñ˜˜u™ Ø�EˆEðˆIÜ—-‘- Ó)ˆØˆ�‰ãˆBÙÙ˜r 5¨$Ó/‘à�Ø�W‰}Øð FÙ™4 ›8“_�Ù˜rŸz™zÓ*�ؘ7’?ؘT‘zà&*˜ ™ Ù˜b "˜XÕ&ؘW’_¨°ªØ"$�G˜B’Ká˜"™g d›mÔ,ؘT‘zØ&*˜ ™ øð+ðF �=‰=Œ?ܘ'–]�ؘ’; ! x¡-àÙ˜Q•xØ ™ ð #ð �=‰=Œ?˜tŸšØˆFà Ÿ™ž‘��2Ø�:Øä—]‘] 1Ó%�ØŸ ™  2›�à�=Ü›E�EØ!&�F˜2‘Jà— ‘ ˜!• ð)ð &Ÿ|™|ž~‘ ��eÜ�u“: “>Û %˜Ø!%×!3Ñ!3Ø  $¨¨d°D·I±I×4HÑ4Hó"˜ð  6›>Ø,0˜G DšMñ !&ð .𘠠<Ð/Ð/øôeò Fà˜‘:Ø"&�G˜B’Kà—y‘y×'Ñ'¨Ô+Ù# B�á˜b¤(×"5Ñ"5°d·m±mÓ"DÔEÿùð FúsÇA!M Í N1ÍAN,Î,N1có2‡‡‡‡‡‡‡‡‡ ‡!‡"‡#‡$‡%‡&—|r!tjŠtj}n;|r‰jЉj}n tjŠtj}‰j �Zt j‰j««}t j‰j|g«}t j‰|«Š‰jŠ!‰j «Š ‰jŠ"‰jŠtjŠt j"} t$j&Št$j(Š%t$j*Љj,Šdx} } ‰j/«rd} tj}n‰j1«rd} | s'‰j2r‰j4Š#‰j6Š$d} n‰j4Š#dŠ$‰j9‰|«\Š&} } ‰"r!| D] }‰"|d«Œ| D] }‰"|«Œ | xr| xs| } | D�cgc]}||d«rŒ|‘Œ} }ˆˆˆˆˆˆˆˆ ˆ!ˆ"ˆ#ˆ$ˆ%ˆ&ˆfd„}| D]\}}‰# xs||k(}||g|«Œ|D]}‰&|=Œ‰&d=| sü| sú‰&s‰ r‰D�cgc]}|‘Œ}}n‰D�cgc]}|‰&vsŒ‰!|«sŒ|‘Œ}}|j;«|rpt=j>‰j@d¬«}tC|«D]?}‰$r‰$|dd«‰&vrd‰&|<Œ|jE|«r | ‰|««‰&|<Œ;d‰&|<ŒA‰&StC|«}tjH|D�cgc] }‰|«‘Œ c}«D]}|‰&tK|«<Œ‰&Scc}wcc}wcc}w#tF$rd‰&|<YŒ¬wxYwcc}w)a3 Walk recursively through the directory tree, finding all files matched by match. If full is False, maybe skip some known-clean files. Return a dict mapping filename to stat-like object (either mercurial.osutil.stat instance or return value of os.stat()). NFTrcó°•—|j}|�r_tjdt|««|j «}‰j |«}|sŒF|dk(s|dk(rd}d}|dk7rd} tj d|«5‰‰|«d|¬«}ddd«D]Ì\}} } |r||vrŒ‰r‰|xr|d z|zxs|dd«} n|xr|d z|zxs|} | ‰vsŒ>| ‰ k(r0‰| «s‰r‰| «|| «| ‰ vsŒb‰s ‰| «sŒmd‰| <Œs| ‰k(s| ‰k(r;| ‰ vr‰s ‰| «sŒŒ| ‰| <Œ’‰s ‰| «sŒ�‰| «rŒ¦|s ‰| d d«} | ‰| <Œ¸| ‰ vsŒ½‰s ‰| «sŒÈd‰| <ŒÎ|r�Œ^yy#1swYŒàxYw#ttf$rI}‰j‰j|«tj|j««Yd}~�ŒÂd}~wwxYw) Nzdirstate.walk worksthissallr rÉz!dirstate.walk.traverse listdir %sT)r½Úskipr¾F)rØrÚcounterrër/ÚvisitchildrensetÚlogÚPermissionErrorr©rÄrïrrÎrÏ)ÚworkÚ alreadynormedÚwaddÚndÚ visitentriesréÚentriesrâr«r¹rßrárÖrÔÚignorerÚlistdirrØr Ú matchalwaysÚmatchfnÚ matchtdirryÚ normalizefiler×rßrs €€€€€€€€€€€€€€€rÚtraversezdirstate.walk..traverseksõø€Ø—;‘;ˆDÚÜ—‘Ð 4´c¸$³iÔ@Ø—X‘X“Z�Ø$×5Ñ5°bÓ9� Ù#ØØ 7Ò*¨l¸fÒ.DØ#'�LØ�ؘ’9Ø!�DðÜ Ÿ™Ð%HÈ"ÕMÙ")©$¨r«(¸ÀDÔ"I˜÷Nó$+‘K�A�t˜Rñ$¨°Ñ(=Ø Ù$ñ+ØÒ2 B¨¡I°¡MÒ7°a¸¸tó™ð Ò3 R¨$¡Y°¡]Ò8°q˜Ø Ò(Ø 7š?Ù#)¨"¤:Ù#,Ù$-¨b¤MÙ $ R¤Ø! Tšz©{¹gÀb½kØ.2 ¨¢ Ø! Wš_°¸²Ø! T™zÙ#.±'¸"µ+Ø24 G¨B¢KÙ"-±¸µÁfØ "õGñ(5Ù)2°2°u¸dÓ)C BØ.0 ¨¢ Ø 4šZ©[¹GÀB½KØ*.˜G BšKðQ$+õ'÷NÐMûä'Ô):Ð;òØ—I‘IØŸ ™  B›¬×)<Ñ)<¸T¿]¹]Ó)Kôõûð ús0Á*E=ÂE1ÂE=Å1E:Å6E=Å=GÆ >GÇGrÉ)Úcached)&rr¹r»r¥rbrRr¸ÚexactrJÚ unionmatcherr£Úintersectmatchersr÷Ú traversedirrnrõrÑrÒr½rÆrÇrÈr*rÉÚprefixrËrgrurærÊr Ú pathauditorrQrùÚcheckrÓÚ statfilesÚnext)'rr rÒÚunknownÚignoredÚfullÚ dirignoreÚemÚsmrÒrüÚ skipstep3rîrÛr±rúrñrïÚsr«ÚvisitÚ audit_pathráÚivr´rßrÖrÔrôrrõrØrör÷røryrùr×rßs'`` @@@@@@@@@@@@@rÚwalkz dirstate.walk&s[ÿþ€ñ Ü—Z‘ZˆFÜŸ ™ ‰IÙ Ø—\‘\ˆFØŸ™‰Iô—[‘[ˆFÜŸ ™ ˆIà × Ñ Ð *Ü—‘ § ¡ £ Ó.ˆBÜ×&Ñ&¨×(;Ñ(;¸RÐ'@ÓAˆBÜ×.Ñ.¨u°bÓ9ˆEà—-‘-ˆØ—l‘l“nˆ Ø×%Ñ%ˆ Ø�y‰yˆÜ—,‘,ˆÜ—‘ˆÜ—,‘,ˆÜ—,‘,ˆÜ—,‘,ˆØ�z‰zˆà!Ð!ˆ� Ø �=‰=Œ?؈EÜŸ ™ ‰IØ �\‰\Œ^؈Iá˜ŸšØŸ™ˆIØ ×/Ñ/ˆM؉IàŸ™ˆIØ ˆMð'+×&8Ñ&8¸ÀÓ&IÑ#ˆ��|Ù Û�Ù˜!˜A™$•ðã!�Ù˜!• ð"ðÒ< tÒ';¨|Ð"<ˆ ÙÓ7™4�a¡y°°1±¥’˜4ˆÐ7÷= /÷= /ò= /ó~‰EˆB�ð!*˜MÒ4¨R°1©WˆMÙ �a�S˜-Õ (ð ó ˆAؘ‘ ðà �FˆOñ¡ñ™{Ù$(Ó)¡D˜qš D�Ñ)á$(ÓL¡D˜q¨A°WÒ,<ÁÈÅš D�ÐLØ �J‰JŒLáô &×1Ñ1°$·*±*ÀTÔJ� ä˜už+�Bñ &Ù)¨"¨d°DÓ9¸WÑDà&*˜ š ð$×)Ñ)¨"Ô-ð/Ù*/±°R³«/˜G BšKð'+˜ š ð-&ð:ˆô˜%“[�ÜŸ.™.¹5Ó)A¹5°a©$¨q­'¸5Ñ)AÖB�BØ(*�GœD ›HÒ%ðCàˆùòw8ùòd*ùâLøô4 'ò/à*.˜G B›Kð/üò*Bs<ÈM1È-M1É= M6Ê M;ÊM;Ê M;Ì NÍNÎNÎNc óD—|j�Ztj|j««}tj|j |g«}tj ||«}|jjdd«}|�#tjjdd|z«|jjddd«}|sdtjd<tj|jj||j |j#«|j$t'|«t'|«t'|«t'|j(«« \ } } } } } }}}}}}}|xj*|zc_|j(r|D]}|j)|«Œ|jj,rœ|D]—}t/|t0«r1|\}}t3d«||fz}|jj-|«ŒDt3d «}|jj-|t5j6|j |j |«d fz«Œ™|D]*\}}|j9|tj:|««Œ,t=j| | | | |||¬ «}| |fS) NsworkersnumcpussRAYON_NUM_THREADSs%dsenabledTó1s!%s: ignoring invalid syntax '%s' s*skipping unreadable pattern file '%s': %s sNo such file or directory)ÚmodifiedrLr_ÚdeletedrrÚclean)rRr¸rürJrýr£rþrWÚ configintrÚenvironÚ setdefaultr¿ÚrustmodÚstatusrnrTr·rÇr{rÿrUr¶Ú isinstanceÚtuplerr Ú canonpathrÄrÎr)rr‚Ú list_cleanÚ list_ignoredÚ list_unknownr r ÚnumcpusÚworkers_enabledÚlookuprrLr_rrrrÚwarningsrÄÚ traversedÚdirtyÚdirÚitemÚ file_pathÚsyntaxr2ÚfnÚmessagers rÚ _rust_statuszdirstate._rust_statusåsh€Ø × Ñ Ð *Ü—‘ § ¡ £Ó0ˆBÜ×&Ñ&¨×(;Ñ(;¸RÐ'@ÓAˆBÜ×0Ñ0°¸"Ó=ˆGð—(‘(×$Ñ$ Y° Ó;ˆØ Ð Ü × Ñ × 'Ñ 'Ð(<¸eÀg¹oÔ NàŸ(™(×-Ñ-¨i¸ÀTÓJˆÙØ59ŒH× Ñ Ð1Ñ 2ô �N‰NØ �I‰I�N‰NØ Ø �M‰MØ × Ñ Ó Ø �O‰OÜ �Ó Ü �Ó Ü �Ó Ü �×$Ñ$Ó %ó ñ Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø ð � Š �uÑ� à × Ò Û �Ø×#Ñ# CÕ(ð!ð �8‰8�=Š=Û �ܘd¤EÔ*Ø(,Ñ%�I˜vÜÐAÓBØ!ØðFñ�Cð—H‘H—M‘M #Õ&äÐJÓK�CØ—H‘H—M‘MØä$×.Ñ.Ø $§ ¡ ¨t¯}©}¸dóð9ð ñõð!ó(‰KˆB�Ø �K‰K˜œH×/Ñ/°Ó8Õ 9ðô—‘ØØØØØØØô ˆð˜ÐÐr c óH—|jsd}tj|«‚|||} }}gggggf\} } } }}ggg}}} |j}|j «d}t j t jt jt jt jt jt jf}t€d}n"|jrd}n|rd}nt||«sd} t!j"|j$«}|r |j)|||| «}||fzSd„}|j,}|j.}| j0}| j0}| j0}| r |j0n|}|r |j0n|}| j0}|j0}|r |j0n|}|j2}|j4} |j6}!|j8}"|jj:}#|xs|j<du}$|j?||| ||$¬«jA«D�]£\}%}&||%«s&|s||%«r| |%«r |r||%«n||%«Œ5||%«}'|'jB}(|'jD})|&s|'jFr ||%«Œl|'jHr ||%«Œ�|'jJr ||%«Œ–|'jLr ||%«Œ«|'jFsŒ¸|"s|'jNr ||%«ŒÏ|!s|'jPr ||%«Œæ|)dk\r9|)|&jRk7r|)|&jRtTzk7s|(|&jVz dzr|!s|%|#vrBtYjZ|&jV«r|)|&jRk7r ||%«�Œ`||%«�Œj|'j]t!j^|&««s ||%«�Œ˜|s�Œœ||%«�Œ¦tajb| | | ||||«}*| |*|fS#t&$rd}Y�ŒõwxYw#tj*$rY�ŒòwxYw) a|Determine the status of the working copy relative to the dirstate and return a pair of (unsure, status), where status is of type scmutil.status and: unsure: files that might have been modified since the dirstate was written, but need to be read to be sure (size is the same but mtime differs) status.modified: files that have definitely been modified since the dirstate was written (different size or mode) status.clean: files that have definitely not been modified since the dirstate was written z3Calling `status` outside a `running_status` contextTNFcó—yrr&)r«s rÚnoopzdirstate.status..noopys€Ø r )rré@)2rGr r.rnÚpreloadr¸Ú alwaysmatcherÚdifferencematcherÚ exactmatcherÚincludematcherÚintersectionmatcherÚ nevermatcherrýrrËrrÚ get_fs_nowrrÓr-Ú FallbackErrorr÷Ú __getitem__rØrür¥rÇrÄr.rÿrrýr­rEr9rQrLr_rÖrÚÚst_sizeÚ _rangemaskrÍr½ÚS_ISLNKÚmtime_likely_equal_toÚmtime_ofrr)+rr rÒrrrr2Ú listignoredÚ listcleanÚ listunknownr#rrLr_rrÔÚuse_rustÚallowed_matchersÚmtime_boundaryÚresr0Ú dcontainsÚdgetÚladdÚmaddÚaaddÚuaddÚiaddÚraddÚdaddÚcaddÚmexactrrÆrÃr.rr+rßÚtr­rErs+ rrzdirstate.status7sÆ€ð ×#Ò#ØGˆCÜ×(Ñ(¨Ó-Ð -Ø.5°u¸g  �Yˆ Ø46¸¸BÀÀBÐ4FÑ1ˆ�˜% ¨'Ø"$ b¨"˜%�ˆà�y‰yˆØ � ‰ Œàˆô × "Ñ "Ü × &Ñ &Ü × !Ñ !Ü × #Ñ #Ü × (Ñ (Ü × !Ñ !Ü × !Ñ !ð Ðô ˆ?؉HØ �_Š_à‰H٠؉HܘEÐ#3Ô4àˆHð "Ü&×1Ñ1°$·,±,Ó?ˆNñ ð Ø×'Ñ'ؘ9 k°;ó�ð˜nÐ.Ñ.Ð.ò ð×%Ñ%ˆ Ø×шØ�}‰}ˆØ�‰ˆØ�|‰|ˆÙ!,ˆw�~Š~°$ˆÙ!,ˆw�~Š~°$ˆØ�~‰~ˆØ�~‰~ˆÙ(ˆu�|Š|¨dˆØ—‘ˆØ—O‘Oˆ Ø—O‘Oˆ Ø—O‘Oˆ Ø—)‘)×#Ñ#ˆð Ò9˜E×-Ñ-°TÐ9ˆØ—i‘iØ �8˜[¨+¸Dð ó ç ‰%‹'ó‰FˆB�ñ˜R”=Ù¡6¨"¤:±9¸R´=Ù"Ù˜R�ᘔHØá�R“ˆAØ—6‘6ˆDØ—6‘6ˆDá˜!Ÿ)š)Ù�R•Ø—’Ù�R•Ø—’Ù�R•Ø—’Ù�R•Ø—“Ù  Q×%;Ò%;ñ˜•HÙ" q×':Ò':ñ˜•Hà˜A’Ià §¡Ò+°¸¿ ¹ ÄZÑ8OÒ0OØ! B§J¡JÑ.°%Ò7¹Ià˜W‘}ä—|‘| B§J¡JÔ/°D¸B¿J¹JÒ4Fñ˜Ržá˜RžØ×0Ñ0´×1CÑ1CÀBÓ1GÔHñ ˜–HÛÙ˜–Hðoôp—‘Ø �e˜W g¨w¸Àó ˆð˜ Ð/Ð/øôAò "à!‹Nð "ûô×(Ñ(ò Úð ús$Ã2O8ÄP Ï8 PÐPÐ P!Ð P!c󢇗|jŠt�|jjŠ|j«r‰j«S|j «}|j «r|D�cgc] }|‰vsŒ|‘Œ c}S|j «rtˆfd„|D««r t|«S‰D�cgc] }||«sŒ |‘Œc}Scc}wcc}w)zT return files in the dirstate (in whatever state) filtered by match c3ó&•K—|]}|‰v–—Œ y­wrr&)Ú.0r+rÔs €rÚ z#dirstate.matches..Ýsøèø€Ð!=±u° "¨¤*±uùsƒ) rnrrbÚkeysrJrÉrÚallrÑ)rr rJr«rÔs @rÚmatcheszdirstate.matchesÎs®ø€ð�y‰yˆÜ Ð Ø—9‘9—>‘>ˆDà �<‰<Œ>Ø—9‘9“;Ð Ø— ‘ “ ˆØ �=‰=Œ?ñ %Ó2™u˜!¨¨Tª ’A˜uÑ2Ð 2Ø �<‰<Œ>œcÓ!=±uÓ!=Ô=ô˜“;Ð ÙÓ,™4�a¡5¨¥8’˜4Ñ,Ð,ùò 3ùò -sÁ. CÁ8CÂ2 C ÃC có—dg}|jj|j«rZ|j|j«|jr3|j|j j j««t|«S)z‹list all filename currently used by this dirstate This is only used to do `hg rollback` related backup in the transaction r¤) rrkr\rØrMrnÚdocketÚ data_filenamer)rrJs rÚall_file_nameszdirstate.all_file_namesãsc€ð � ˆØ �<‰<× Ñ ˜tŸ~™~Ô .Ø �L‰L˜Ÿ™Ô (Ø×$Ò$Ø— ‘ ˜TŸY™Y×-Ñ-×;Ñ;Ó=Ô>Ü�U‹|Ðr c#óîK—td«}td«}td«}td«}|j«D]f\} } | jr<| jr| |vr | |vr|| z–—n | |vr|| t j |«fz–—| j sŒ[| |vsŒ`|| z–—Œh|D]G} |� || «sŒ|j| «} | jrŒ,|| t j |«fz–—ŒIy­w)zZ check the dirstate contents against the parent manifest and yield errors s5%s marked as tracked in p1 (%s) but not in manifest1 s*%s marked as added, but also in manifest1 s2%s marked as modified, but not in either manifest s6%s in manifest1, but not marked as tracked in p1 (%s) N)rrýrMrr ÚshortrLrÕ) rÚm1Úm2rÚnarrow_matcherÚmissing_from_p1Úunexpected_in_p1Úmissing_from_psÚmissing_from_dsr«rÝs rÚverifyzdirstate.verifyïsþèø€ôØ Eó ˆôÐKÓLÐÜØ Bó ˆôØ Fó ˆðŸ ™ ž ‰HˆAˆuØ×ÒØ—>’> a¨r¡k°a¸r±kØ)¨AÑ-Ó-ؘb‘[Ø)¨Q´· ± ¸2³Ð,?Ñ?Ò?Ø�{‹{˜q BšwØ&¨Ñ*Ó*ð%óˆAØÐ)±.ÀÔ2CØØ—N‘N 1Ó%ˆEØ×#Ó#Ø%¨¬D¯J©J°r«NÐ(;Ñ;Ó;ñ ùs‚BC5ÂC5Â6C5ÃC5)Fr)FFN)FN)FF)T)]r"r#r$r rkrsrwÚ contextlibÚcontextmanagerr6r‡r‹r�r”r–ÚpropertyrCršr™r9r?Ú propertycachernr£rrmrur²r(r»rÁrÄrÇrËr*rãrbrærïrÕr÷rûrýÚ iteritemsrIrrrr r;rrr%r!rqrDr2r5r7r@r;r@rHrCrHrOrTrVrSr:r-rorurgryr{r‡rr}r™r�r�r“r¥r·rºrærr-rrZr^rhr&r rrr�s™„ð€Nðó5òn òð×ÑØñ@"óóð@"ðD×ÑØñ4óóð4ðl×Ññóðð×Ññóðò *ðñ(óð(ò)ò(ðñ8óð8ðñ6óð6ðñ óð ðñ%óð%ñ ˆyÓñ óð ðñ#óð#ò*ñˆ|ÓñMóðMðñOóðOðñ*óð*ðñ0óð0ðñ<óð<ò!ò 5ðnñ!óð!òó(òò ò'ò!ð€Iò5ò+ò+ðñ9óð9ò.ðò=óð=ð4-5óò:-òð&ñ .óð .ò1ò!ðòóðð*ñ óð ð'ñ9ó'ð9ð'ñ/ó'ð/ð ñ% óð% ðNð ØØò óð ò: ð@ØØó ò@%ò" =òó4 óó ð2ñóððò2óð2òh  ò*0òX'ò 5ò (ò"òò òò,F0óP}ò~P òdU0òn-ò* ôr}sðóÛÛ Û Û åÝå"÷ ÷ ÷ ñ õ÷ð ˆ&× Ñ ˜9Ó %€Ø ˆ&× Ñ ˜JÓ '€ñ ‹8€à dÐ*Ðà×"Ñ"€ Ø × Ñ € Ø × "Ñ "€ à×'Ñ'€ ô'� ô'ô � ô òò$#ò#ò#ò #ð ÐØÐð€×ј;×0Ñ0Ó1÷|<ð|<ó2ñ|