Ë ½4æ.•q‘„ãó—ddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z mZmZmZmZmZmZmZmZmZmZmZmZmZej:Zej>Z d „Z!d.d „Z"Gd „d «Z#d „Z$d„Z%d„Z&d„Z'd„Z(d„Z)Gd„d«Z* d/d„Z+d„Z, d0d„Z-d„Z.d„Z/d„Z0d„Z1ejdd¬«Gd„d««Z3 d.d „Z4d!„Z5d"Z6d#Z7d$Z8d%Z9 d1d&„Z:d2d'„Z;d3d(„Z d4d+„Z?d3d,„Z@ d5d-„ZAy)6éNé)Ú_)Únullrev)Úattr)Ú stringutil)Ú timestamp)ÚcopiesÚencodingÚerrorÚ filemergeÚmatchÚ mergestateÚobsutilÚpathutilÚpolicyÚpycompatÚscmutilÚ subrepoutilÚutilÚworkercóô—|jj||«}gd¢}||vrNdj|D�cgc] }d|zdz‘Œ c}«}td«}|||||fz}t j |«‚|Scc}w)N)óabortsignoreówarns, ó's$%s.%s not valid ('%s' is none of %s))ÚuiÚconfigÚjoinrr Ú ConfigError)ÚrepoÚsectionÚnamerÚvalidÚvÚvalidstrÚmsgs ú3usr/lib/python3.12/site-packages/mercurial/merge.pyÚ_getcheckunknownconfigr'&s�€Ø �W‰W�^‰^˜G TÓ *€FÚ *€EØ �UÑØ—:‘:¹Ó>¹°1˜t a™x¨$›¸Ñ>Ó?ˆÜÐ7Ó8ˆØ �˜˜v xÐ0Ñ0ˆÜ×Ñ Ó$Ð$Ø €Mùò ?s´A5có¬—|j«ry|€|}|j||«xr,|j|«|vxr||j||«S©NF)Ú isinmemoryÚisfileorlink_checkdirÚ normalizeÚcmp)ÚdirstateÚwvfsÚdircacheÚwctxÚmctxÚfÚf2s r&Ú_checkunknownfiler51sa€Ø ‡�Ôð à €zØ ˆà ×"Ñ" 8¨QÓ/ò "Ø × Ñ ˜qÓ !¨Ð 1ò "à �‰H�L‰L˜˜a™Ó !ðócó—eZdZdZd„Zd„Zy)Ú_unknowndirscheckeray Look for any unknown files or directories that may have a path conflict with a file. If any path prefix of the file exists as a file or link, then it conflicts. If the file itself is a directory that contains any file that is not tracked, then it conflicts. Returns the shortest path at which a conflict occurs, or None if there is no conflict. có@—t«|_t«|_y©N)ÚsetÚ_unknowndircacheÚ_missingdircache©Úselfs r&Ú__init__z_unknowndirschecker.__init__Ns€ô!$£ˆÔô !$£ˆÕr6cóЗ|j«rytttj|«««D]à}||j vry||j vrŒ"|jjj|«sŒH|jj|«r+|jj|«|jvr|cS|jj|«s|j j|«y|j j|«Œâ|jjj|«r¦|jj|«r‹|jj!|«D]m\}}}|D]b}t#j$|jj'||««}|jj|d¬«}||jvsŒ^|ccSŒoy)NFT)Úisknown)r*ÚreversedÚlistrÚfinddirsr=r<r/ÚauditÚcheckÚ isfileorlinkr.r,ÚlexistsÚaddÚisdirÚwalkrÚpconvertÚreljoin) r?rr1r3ÚpÚdirsÚfilesÚfnÚrelfs r&Ú__call__z_unknowndirschecker.__call__Yss€Ø �?‰?Ô àôœ$œx×0Ñ0°Ó3Ó4Ö5ˆAØ�D×)Ñ)Ñ)ÙØ�D×)Ñ)Ñ)ØØ�y‰y�‰×$Ñ$ QÕ'à—I‘I×*Ñ*¨1Ô-ØŸ ™ ×/Ñ/°Ó2¸$¿-¹-ÑGà’HØ—y‘y×(Ñ(¨Ô+Ø×)Ñ)×-Ñ-¨aÔ0ÙØ×%Ñ%×)Ñ)¨!Õ,ð6ð" �9‰9�?‰?× Ñ  Ô #¨¯ © ¯©¸Ô(:à"&§)¡)§.¡.°Ö"3‘��4˜Û�BÜŸ=™=¨¯©×):Ñ):¸1¸bÓ)AÓB�DØŸ=™=×2Ñ2°4ÀÐ2ÓF�DØ 4§=¡=Ò0Ø œñ  ð#4ð r6N)Ú__name__Ú __module__Ú __qualname__Ú__doc__r@rT©r6r&r8r8Cs„ñò &ór6r8c ó$‡‡‡‡—t«Št«Št«Št«Št|dd«}t|dd«}|jjdd«}t «} |j } |j } |�s$ˆˆfd„} t«} |jtjtjf«D]J}t| | | |||«r‰j|«Œ%|sŒ(||vsŒ-| |||«}|€Œ:‰j|«ŒL|jtjg«D],\}}}t| | | ||||d«sŒ‰j|«Œ.‰‰z}|D�chc] }|j j!|«sŒ|’Œ"}}||z }| ||«| ||«�nt#|jtj$g««D]â\}}}|\}}t| | | |||«}|j j!|«r|}n|}|s%|j'|tj(|d fd «Œc|s|d k(r(|j'|tj*||dd |fd «Œ’|d k(r‰j|«Œ©|d k(r‰j|«|j'|tj(|dfd «Œät-‰«D]u}|jj.}|‰vrE|j j1|«r|t3d«|z«ŒM|t3d«|z«Œb|t3d«|z«Œw‰rt5j6t3d««‚t-‰«D]l}|j j1|«r(|jj/t3d«|z«ŒF|jj/t3d«|z«Œnˆˆfd„}|j9tjtj(|«ycc}w)z¼ Considers any actions that care about the presence of conflicting unknown files. For some actions, the result is to abort; for others, it is to choose a different action. ómerges checkunknowns checkignoredó experimentalómerge.checkpathconflictscób•—|dk(r‰j|«y|dk(r‰j|«yy)Nrr)Úupdate)Ú conflictsrÚabortconflictsÚ warnconflictss €€r&Úcollectconflictsz,_checkunknownfiles..collectconflicts�s4ø€Ø˜Ò!Ø×%Ñ% iÕ0ؘ7Ò"Ø×$Ñ$ YÕ/ð#r6NrFóremote createdrs#remote differs from untracked localrTs,%s: untracked file conflicts with directory s,%s: untracked directory conflicts with file s%s: untracked file differs sLuntracked files in working directory differ from files in requested revisions%s: replacing untracked file s+%s: replacing untracked files in directory có‚•—|‰vxs1‰xr-|‰vxs'tˆfd„tj|«D««}|\}||fS)Nc3ó&•K—|]}|‰v–—Œ y­wr:rY)Ú.0rOÚ pathconflictss €r&Ú z<_checkunknownfiles..transformargs..ÿsøèø€ÐHÑ3G¨a�q˜MÔ)Ñ3Gùsƒ)ÚanyrrE)r3ÚargsÚbackupÚflagsÚ fileconflictsrhs €€r&Ú transformargsz)_checkunknownfiles..transformargsùsWø€à �Ð ò Øòà�]Ð"òIÜÓH´8×3DÑ3DÀQÔ3GÓHÓHð ð‰ˆØ�vˆÐr6)r;r'rÚ configboolÚdictr.r/r8rQÚ mergestatemodÚACTION_CREATEDÚACTION_DELETED_CHANGEDr5rJÚ getactionsÚACTION_LOCAL_DIR_RENAME_GETÚ_ignorerDÚACTION_CREATED_MERGEÚaddfileÚ ACTION_GETÚ ACTION_MERGEÚsortedÚwarnrHrr Ú StateErrorÚ mapaction) rr1r2ÚforceÚmresultÚ mergeforceÚ unknownconfigÚ ignoredconfigÚ pathconfigr0r.r/rcÚcheckunknowndirsr3Úpathrkr%Ú allconflictsÚcÚignoredconflictsÚunknownconflictsÚfl2ÚancÚ differentrr}rorarnrhrbs @@@@r&Ú_checkunknownfilesr�{sÞû€ô “E€MÜ“E€MÜ“E€MÜ“U€NÜ*¨4°¸?ÓK€MÜ*¨4°¸?ÓK€MØ—‘×#Ñ#ØÐ4ó€Jô‹v€HØ�}‰}€HØ �9‰9€DÚ õ 0ô /Ó0ÐØ—‘ä×,Ñ,Ü×4Ñ4ð ö ˆAô ! ¨4°¸4ÀÀqÔIØ×!Ñ! !Õ$Ú ¨¢ Ù'¨¨d°AÓ6�ØÑ#Ø!×%Ñ% dÕ+ð ð$×.Ñ.Ü × 6Ñ 6Ð 7ö ‰LˆAˆt�Sô!ؘ$ ¨$°°a¸¸a¹õð×!Ñ! !Õ$ð  ð% }Ñ4ˆ Ù'3ÓP¡| !°t·}±}×7LÑ7LÈQÕ7OšA |ÐÐPØ'Ð*:Ñ:ÐÙÐ)¨=Ô9ÙÐ)¨=Ö9ä Ø × Ñ ¤ × BÑ BÐCÓ Dö ‰LˆAˆt�Sð‰HˆC�Ü)ؘ$ ¨$°°aóˆIð�}‰}×$Ñ$ QÔ'Ø&‘à&�ñØ—‘ØÜ!×,Ñ,ؘ%�LØ%õ ñ ˜v¨Ò1Ø—‘ØÜ!×.Ñ.ؘ˜4 ¨Ð,Ø:õ ð ˜8Ò#Ø×"Ñ" 1Õ%à˜WÒ$Ø!×%Ñ% aÔ(Ø—‘ØÜ!×,Ñ,ؘ$�KØ%õ ðW ôd�NÖ #ˆØ�w‰w�|‰|ˆØ � Ñ Ø�y‰y×%Ñ% aÔ(Ù”QÐGÓHÈ1ÑLÕMá”QÐGÓHÈ1ÑLÕMá ”Ð2Ó3°aÑ7Õ 8ð$ñÜ×ÑÜ ð;ó ó ð ô�MÖ "ˆØ �9‰9× !Ñ ! !Ô $Ø �G‰G�L‰LœÐ<Ó=ÀÑAÕ Bà �G‰G�L‰LœÐJÓKÈaÑOÕ Pð #õ ð ×ÑÜ×$Ñ$¤m×&>Ñ&>À õùòuQs Å, P Æ P có"—tj}|rtj}|j«D]}||vsŒ|j ||dd«Œ|s=|j «D])}||vsŒ|j |tjdd«Œ+yy)aÌ Forget removed files If we're jumping between revisions (as opposed to merging), and if neither the working directory nor the target rev has the file, then we need to remove it from the dirstate, to prevent the dirstate from listing the file when it is no longer in the manifest. If we're merging, and the other revision has removed a file that is not present in the working directory, we need to mark it as removed. Nsforget deletedsforget removed)rrÚ ACTION_FORGETÚ ACTION_REMOVEÚdeletedryÚremoved)r1r2Ú branchmerger�Úmr3s r&Ú_forgetremovedr— s†€ô ×#Ñ#€AÙÜ × 'Ñ 'ˆØ �\‰\Ž^ˆØ �DŠ=Ø �O‰O˜A˜q $Ð(9Õ :ðñ Ø—‘–ˆAؘŠ}Ø—‘ØÜ!×/Ñ/ØØ%õ ñ ð r6cóÈ—|j«}|j«sUt|j|««}|rDt |j ««D]}||«rŒ |j |«Œn t|«}|�r’|j tjtjtjtjtjtjf«D]}|j|«Œ|j tjf«D]}|j!|«Œ|j#tj$g«D]-\}}}|\}} |j!|«|j|«Œ/|j tj&f«D]}|j|«Œ|j#tj(g«D]2\}}}|\} }} } } | r|j!| «|j|«Œ4i}|D]J}t+j,|«}||vr*t/d«}||||fz}t1j2|«‚|||<ŒLdx}x}}t5|j7««D]Z\}}|j9|«r8|j9|«s't/d«}|||fz}t1j2|«‚|dz}|dz}|}Œ\y)z, Check for case-folding collisions. s(case-folding collision between %s and %sr6s5case-folding collision between %s and directory of %só/N)Ú narrowmatchÚalwaysr;rLrDrQÚ removefilerrÚ ACTION_ADDÚACTION_ADD_MODIFIEDr‘rzÚACTION_CHANGED_DELETEDrtrJr’ÚdiscardruÚACTION_DIR_RENAME_MOVE_LOCALrvr{rÚnormcaserr r~r|ÚitemsÚ startswith)rÚwmfr�ršÚpmmfr3rkr%r4rmÚf1ÚfaÚmover�ÚfoldmapÚfoldÚ foldprefixÚ unfoldprefixÚlastfulls r&Ú_checkcollisionr¯+s’€ð ×"Ñ"Ó$€KØ × Ñ Ô Ü�3—8‘8˜KÓ(Ó)ˆÙ ܘ'Ÿ-™-›/Ö*�Ù" 1•~Ø×&Ñ& qÕ)ñ+ô �3‹xˆâà—‘ä×(Ñ(Ü×1Ñ1Ü×+Ñ+Ü×(Ñ(Ü×4Ñ4Ü×4Ñ4ð  ö  ˆAð �H‰H�Q�Kð  𗑤 × ;Ñ ;Ð=Ö>ˆAØ �L‰L˜�Oð?à#×.Ñ.Ü × 7Ñ 7Ð 8ö ‰LˆAˆt�Sð‰IˆB�Ø �L‰L˜Ô Ø �H‰H�Q�Kð  ð —‘¤ × IÑ IÐKÖLˆAØ �H‰H�Q�KðMà#×.Ñ.´ ×0JÑ0JÐ/KÖL‰LˆAˆt�SØ$(Ñ !ˆB��B˜˜cÙØ— ‘ ˜RÔ Ø �H‰H�Q�Kð Mð€GÛ ˆÜ�}‰}˜QÓˆØ �7‰?ÜÐ?Ó@ˆCØ �A�w˜t‘}Ð%Ñ %ˆCÜ×"Ñ" 3Ó'Ð '؈�Š ð ð,/Ð.€JÐ.� Ü˜'Ÿ-™-›/Ö*‰ˆˆaØ �?‰?˜:Ô &¨q¯|©|¸LÔ/IäÐLÓMˆCØ �H˜a�=Ñ ˆCÜ×"Ñ" 3Ó'Ð 'ؘD‘[ˆ ؘ4‘xˆ ؉ñ+r6c#ófK—|D](}tj|«D]}||vsŒ||f–—Œ(Œ*y­w)z« Generator that yields pairs of all the files in the manifest that are found inside the directories listed in dirs, and which directory they are found in. N)rrE)rÚmanifestrPr3rOs r&Ú _filesindirsr²os:èø€ó ˆÜ×"Ñ" 1Ö%ˆAØ�DŠyؘ�d’ Ùñ&ñùs‚"1¥ 1c óŠ—|j«}t«}t«}t«}t«}t«} |jtjtj tj tjf«D]I} |jtj| ««|j| «sŒ9|j| «ŒK|jtjf«D]} | j| «Œ|jtj f«D]"\} } } | \} }}}}|sŒ| j| «Œ$|jtjf«D]\} } } | \}}| j|«Œ|D]–}||vr'||vr|j|«n|j|«|j!|«}|sŒB|dtjtj tj tjfvsŒ†|j|«Œ˜|D]¯}|| vsŒt#|«j%d«}t'j(|||t|j«««}||j+«xs|}|j-|tj.||fd«|j-|tj0|dfd«Œ±|�rt#|«j%d«}t3|||«D]ä\} }| | vsŒ |j!|«\}} } t'j(|||t|j«««}|tj tj fvr|j-||| | «n)| d}|j-|tj4||fd«|j-|tj0|dfd«|j7|«n|rL|D])}|j8j;t=d«|z«Œ+t?j@t=d ««‚y ) z’ Check if any actions introduce path conflicts in the repository, updating actions to record or handle the path conflict accordingly. ró+slocal path conflictóls path conflictsremote path conflictórs#%s: is both a file and a directory s,destination manifest contains path conflictsN)!r±r;rQrrrsrtr{rxr_rrEÚhasdirrJr’rur¡ÚgetfileÚbytesÚrstriprÚsafenameÚ copysourceryÚACTION_PATH_CONFLICT_RESOLVEÚACTION_PATH_CONFLICTr²rvÚremoverr}rr r~)rr1r2r�ÚmfÚlocalconflictsÚremoteconflictsÚinvalidconflictsÚcreatedfiledirsÚ deletedfilesr3rkr%r§r4r¨r©r�rmrOÚpdÚctxnameÚpnewÚporigr–Úfls r&ÚcheckpathconflictsrË|sã€ð �‰‹€Bô“U€Nô“e€Oô “uÐô“e€Oô“5€Là �]‰]ä × (Ñ (Ü × 0Ñ 0Ü × &Ñ &Ü × .Ñ .ð  öˆð ×Ñœx×0Ñ0°Ó3Ô4Ø �9‰9�Q�<ð × Ñ  Õ "ðð �]‰]œM×7Ñ7Ð9Ö :ˆØ×јÕð;à!×,Ñ,¬m×.HÑ.HÐ-JÖK‰ˆˆD�#Ø $шˆB��D˜#Ú Ø × Ñ ˜RÕ ðLð"×,Ñ,Ü × 3Ñ 3Ð5ö‰ˆˆD�#ð‰ ˆˆEØ×јÕð óˆØ �‰7Ø�D‰yð!×$Ñ$ QÕ'ð×"Ñ" 1Ô%Ø �_‰_˜QÓ ˆÚ �"�Q‘%Ü × (Ñ (Ü × 0Ñ 0Ü × &Ñ &Ü × .Ñ .ð  ò ð × Ñ  Õ #ð+ó0ˆØ �LÒ Ü˜D“k×(Ñ(¨Ó.ˆGÜ—=‘=  G¨T´3°w·}±}³Ó3GÓHˆDؘ‘G×&Ñ&Ó(Ò-¨AˆEØ �O‰OØÜ×:Ñ:Ø�E� Ø&ô  ð �O‰OØÜ×2Ñ2Ø�t� Ø õ  ðò$䘓+×$Ñ$ TÓ*ˆÜ   r¨?Ö;‰DˆAˆqؘ Ò$Ø&Ÿ™¨qÓ1‘ ��4˜Ü—}‘} Q¨°´s¸7¿=¹=»?Ó7KÓL�ØÜ!×8Ñ8Ü!×.Ñ.ðñð —O‘O D¨!¨T°3Õ7ð˜a™�BØ—O‘OØÜ%×AÑAؘB˜Ø/ô ð —‘ØÜ!×6Ñ6ؘ4�LØ$ô ð  ×&Ñ& qÔ)Ùð5<ñ8Û!ˆAØ �G‰G�L‰LœÐBÓCÀaÑGÕ Hð"ä×ÑÜ Ð=Ó >ó ð ðr6cóø—|j«D]ç\}}||«rŒ|s|j|«Œ#|djr|j|«ŒD|djrs|j d«s2|j|«|j |d|dj «Œ–td«}td«}tj||z|¬«‚td«}tj||z«‚y) z§ Filters out actions that can ignored because the repo is narrowed. Raise an exception if the merge cannot be completed because the repo is narrowed. rr™soutside-narrow-merge-actionsBmerge affects file '%s' outside narrow, which is not yet supporteds'merging in the other direction may work©Úhints-conflict in file '%s' is outside narrow cloneN) ÚfilemaprœÚno_opÚ narrow_safeÚendswithÚ addcommitinfoÚchangesrr ÚAbortr~)ršr•r�r3Úactionr%rÎs r&Ú_filternarrowactionsr×sç€ð—_‘_Ö&‰ ˆˆ6Ù �qŒ>Ø ÙØ × Ñ ˜qÕ !Ø �A‰Y�_Š_Ø × Ñ ˜qÕ !Ø �A‰Y× "Ò "Ø—:‘:˜dÔ#Ø×"Ñ" 1Ô%à×%Ñ%ØÐ5°v¸a±y×7HÑ7Hõôð2ó�ôÐCÓD�Ü—k‘k #¨¡'°Ô5Ð5äÐFÓGˆCÜ×"Ñ" 3¨¡7Ó+Ð +ñ/'r6có¨—eZdZdZd„Zd„Zd„Zd„Zdd„Zdd„Z d „Z dd „Z dd „Z dd „Z d „Zed„«Zed„«Zed„«Zed„«Zd„Zd„Zy)Ú mergeresultz¶An object representing result of merging manifests. It has information about what actions need to be performed on dirstate mapping of divergent renames and other such cases.có¦—i|_i|_i|_tjt «|_tjt «|_y)aY filemapping: dict of filename as keys and action related info as values diverge: mapping of source name -> list of dest name for divergent renames renamedelete: mapping of source name -> list of destinations for files deleted on one side and renamed on other. commitinfo: dict containing data which should be used on commit contains a filename -> info mapping actionmapping: dict of action names as keys and values are dict of filename as key and related data as values N)Ú _filemappingÚ_divergeÚ _renamedeleteÚ collectionsÚ defaultdictrqÚ _commitinfoÚ_actionmappingr>s r&r@zmergeresult.__init__,sA€ðˆÔ؈Œ ؈ÔÜ&×2Ñ2´4Ó8ˆÔÜ)×5Ñ5´dÓ;ˆÕr6có —||_||_yr:)rÜrÝ)r?ÚdivergeÚ renamedeletes r&Ú updatevalueszmergeresult.updatevalues>s€ØˆŒ Ø)ˆÕr6có²—||jvr#|j|\}}}|j||=|||f|j|<||f|j||<y)aadds a new file to the mergeresult object filename: file which we are adding action: one of mergestatemod.ACTION_* data: a tuple of information like fctx and ctx related to this merge message: a message about the merge N©rÛrá)r?ÚfilenamerÖÚdataÚmessageÚaÚdr–s r&ryzmergeresult.addfileBsk€ð �t×(Ñ(Ñ (Ø×'Ñ'¨Ñ1‰GˆAˆq�!Ø×#Ñ# AÑ& xÐ0à'-¨t°WÐ&=ˆ×ј(Ñ#Ø15°w°ˆ×јFÑ# HÒ-r6cóÔ—|j|}|j|=|j|}|j«D]*\}\}}|||«}|||f|j|<||f||<Œ,y)z…changes all occurrences of action `actionfrom` into `actionto`, transforming its args with the function `transform`. N)rár£rÛ) r?Ú actionfromÚactiontoÚ transformÚorigÚdestr3rér%s r&rzmergeresult.mapactionSsz€ð×"Ñ" :Ñ.ˆØ × Ñ   Ð +Ø×"Ñ" 8Ñ,ˆØ"Ÿj™jžl‰NˆA‰{��cÙ˜Q Ó%ˆDØ$,¨d°CÐ#8ˆD× Ñ ˜aÑ Ø˜S�kˆD�ŠGñ+r6Ncó@—||jvr|j|S|S)zfreturns (action, args, msg) about this file returns default_return if the file is not present)rÛ)r?rèÚdefault_returns r&r¸zmergeresult.getfile_s)€ð �t×(Ñ(Ñ (Ø×$Ñ$ XÑ.Ð .ØÐr6c#ózK—|€|jD]}|–—Œy|D]}|j|D]}|–—ŒŒy­w)zvreturns files on which provided action needs to perfromed If actions is None, all files are returned Nrç)r?Úactionsr3rës r&rQzmergeresult.filesgsHèø€ð ˆ?Ø×&Ô&�Ø“ñ'ó�Ø×,Ñ,¨QÔ/�AØ“Gñ0ñùs‚9;cód—|j|\}}}|j|=|j||=y)zXremoves a file from the mergeresult object as the file might not merging anymoreNrç)r?rèrÖrérês r&rœzmergeresult.removefilews<€ð!%× 1Ñ 1°(Ñ ;ш��gØ × Ñ ˜hÐ 'Ø × Ñ  Ñ '¨Ñ 1r6c#óðK—|D]m}|r:t|j|«D]}|j||\}}|||f–—Œ Œ?|j|j«D]\}\}}|||f–—ŒŒoy­w)zÉget list of files which are marked with these actions if sort is true, files for each action is sorted and then added Returns a list of tuple of form (filename, data, message) N)r|rár£)r?röÚsortrër3rkr%s r&ruzmergeresult.getactions~s‰èø€ó ˆAÙÜ × 3Ñ 3°AÑ 6Ö7�AØ $× 3Ñ 3°AÑ 6°qÑ 9‘I�D˜#ؘT 3˜,Ó&ñ8ð'+×&9Ñ&9¸!Ñ&<×&BÑ&BÖ&D‘N�A‘{˜˜cؘT 3˜,Ó&ñ'Eñ ùs‚A4A6cóZ‡—|€t‰j«Stˆfd„|D««S)z‹returns number of files which needs actions if actions is passed, total of number of files in that action only is returnedc3óN•K—|]}t‰j|«–—Œy­wr:)Úlenrá)rgrër?s €r&riz"mergeresult.len..–s"øèø€Ð@¹°1”3�t×*Ñ*¨1Ñ-×.¹ùsƒ"%)rürÛÚsum)r?rös` r&rüzmergeresult.len�s,ø€ð ˆ?Ü�t×(Ñ(Ó)Ð )äÓ@¹Ó@Ó@Ð@r6c#óÌK—tr2t|jj««D] \}}||f–—Œ y|jj«D] \}}||f–—Œ y­wr:)r|rÛr£)r?rùÚkeyÚvals r&rÏzmergeresult.filemap˜s\èø€Ý Ü" 4×#4Ñ#4×#:Ñ#:Ó#<Ö=‘��Sؘ3�h“ñ>ð!×-Ñ-×3Ñ3Ö5‘��Sؘ3�h“ñ6ùs‚A"A$có(—||j||<y)zdadds key-value information about filename which will be required while committing this mergeN©rà)r?rèrÿÚvalues r&rÓzmergeresult.addcommitinfo s€ð+0ˆ×јÑ" 3Ò'r6có—|jSr:)rÜr>s r&rãzmergeresult.diverge¥s €à�}‰}Ðr6có—|jSr:)rÝr>s r&räzmergeresult.renamedelete©s€à×!Ñ!Ð!r6có—|jSr:rr>s r&Ú commitinfozmergeresult.commitinfo­s€à×ÑÐr6cóà—tjt«}|jj «D]7\}}|j «D]\}\}}||j |||f«Œ!Œ9|S)z}returns a dictionary of actions to be perfomed with action as key and a list of files and related arguments as values)rÞrßrDrár£Úappend)r?Úresrërìr3rkr%s r&Ú actionsdictzmergeresult.actionsdict±sf€ô×%Ñ%¤dÓ+ˆØ×'Ñ'×-Ñ-Ö/‰DˆAˆqØ"#§'¡'¦)‘�‘;�D˜#Ø�A‘— ‘ ˜q $¨˜nÕ-ñ#,ð0ðˆ r6có—||_tjt«|_|jj «D]\}\}}}||f|j||<Œyr:)rÛrÞrßrqrár£)r?rör3Úactrér%s r&Ú setactionszmergeresult.setactions»s[€Ø#ˆÔÜ)×5Ñ5´dÓ;ˆÔØ#'×#4Ñ#4×#:Ñ#:Ö#<Ñ ˆAÑ��T˜3Ø*.°¨)ˆD× Ñ  Ñ $ QÒ 'ñ$=r6có—|jj«D]a}|tjtjtj tj fvsŒD|j|sŒT|jrŒayy)z^tells whether this merge resulted in some actions which can result in conflicts or notTF)ráÚkeysrrrzÚ ACTION_EXECr’r½rÐ)r?rës r&Ú hasconflictszmergeresult.hasconflictsÁsm€ð×$Ñ$×)Ñ)Ö+ˆAàä!×,Ñ,Ü!×-Ñ-Ü!×/Ñ/Ü!×>Ñ>ð òð×'Ñ'¨Ó*ØŸ›áð,ðr6r:©F)rUrVrWrXr@råryrr¸rQrœrurürÏrÓÚpropertyrãrärr rrrYr6r&rÙrÙ&sš„ñ:ò <ò$*ò@ò" "óóò 2ó 'ó Aóò0ð ñóððñ"óð"ðñ óð ðñóðò4ó r6rÙc ó~‡—t«} |�|j«rd}t‰j«||gztj ¬«D� cgc]} | j «‘Œc} tj«} tj«} i}|rtj|‰||«\} } }tjt|««}tjt|««}tjt|««}|jjtd««|jj!d|||fz«|jj!d|‰|fz«‰j «|j «|j «}}}t#| j$j'««}|j)| j*j'««t#| j$j'««}|j)| j*j'««d|vrG‰j-«€7t/ˆfd„‰j0D««r|j2j4|d<|‰|g‰j«zvrÛ| sÙ|jj7dd «s½|j8d k(s®t#|j;|«j=««}| j$j?«D]\}}||vsŒ |jA|«Œ| j*D]}|jA|«Œt jB||«}tEjF||«}|j;||¬ «}|j?«D�]Š\}\\}}\} }!|�r±| �r®||vr–| j$jI|d«xs| j$jI|d«}"d \}#}$|"�|||"d |jK«f}#d|"z}$n||dd |jK«f}#d}$| jM|tNjP|#|$«Œ°|| j$vrI| j$|}"| jM|tNjP||"|"d |jK«fd|"z«�Œ|| j$vrI| j$|}"| jM|tNjP|"||"d |jK«fd|"z«�Œ^||}%|jS|«}&d||!z|&zv}'| |%k(r)|!|&k(r$| jM|tNjTdd«�Œ¬||%k(rl||&k(rg|| k(r%| jM|tNjV|!fd«�Œà| jM|tNjX|!d fd«|s�Œ| j[|dd«�Œ|'r*| |%k(r%| jM|tNjV|!fd«�ŒI|'rB||%k(r=| jM|tNjX|d fd«|s�Œx| j[|dd«�Œ�| jM|tNjP|||d |jK«fd«�ŒÄ|�rú||vr�ŒÍ|| j*vrs| j*|}(|(|vr7| jM|(tNjP||(dd|jK«fd«�Œ%| jM|(tNj\||fd|z«�ŒN|| j$vrI| j$|}(| jM|tNjP||(|(d |jK«fd|(z«�Œ¥||vrô|||k7rt|r$| jM|tNj^dd«�Œ×| jM|tNj`|d|d |jK«fd«|s�Œ| j[|d d!«�Œ%||j2jbk(r$| jM|tNjddd"«�Œb| jM|tNj^dd#«|s�Œˆ| j[|d d!«�Œ�| jM|tNjfdd$«�ŒÁ| s�ŒÅ||vr�ŒË|| j*vrs| j*|}(|(|vr7| jM|(tNjP|(|dd |jK«fd%«�Œ#| jM|(tNjh||!fd&|z«�ŒL|| j$vrq| j$|}(d \}$}#|(|vr|(||(d |jK«f}#d'|(z}$n|(||(d|jK«f}#d(|(z}$| jM|tNjP|#|$«�ŒË||vr‚|s%| jM|tNjj|!fd)«�Œö|s%| jM|tNjj|!fd)«�Œ| jM|tNjl|!|jK«fd*«�ŒQ| ||k7rùd})| jnD]3}*|jq|*«sŒ| jn|*|ts|*«dz})n|)�>|)|vr:| jM|)tNjP|)||d |jK«fd+|z«�ŒÝ|r%| jM|tNjj|!fd,«�Œ| jM|tNjtd||d |jK«fd-«|s�Œ=| j[|d d!«�ŒR| jM|tNjvdd.«|s�Œx| j[|d d!«�Œ�|jj7dd/«rty|‰|| «|j{«}+|+j«s t}|+|| «| j~},|,j)| j~«| j�||,«| Scc} w)0a Merge wctx and p2 with ancestor pa and generate merge action list branchmerge and force are as passed in to update matcher = matcher to filter file lists acceptremote = accept the incoming changes without prompting Returns an object of mergeresult class N)rÿsresolving manifests s) branchmerge: %s, force: %s, partial: %s s% ancestor: %s, local: %s, remote: %s ó .hgsubstatec3ó\•K—|]#}‰j|«j«–—Œ%y­wr:)ÚsubÚdirty)rgÚsr1s €r&riz manifestmerge..s#øèø€Ð:©M qˆt�x‰x˜‹{× Ñ ×"©Mùsƒ),r\smerge-track-salvagedschangeset-sidedata)r ©NNFsboth renamed from %ss both createdslocal replaced from %ssother replaced from %srµrYsremote unchangedsupdate permissionssremote is newersfilenode-sourcesothersversions differTs%remote directory rename, both createds&remote directory rename - move from %sslocal copied/moved from %ss remote deletesprompt changed/deletedsmerge-removal-candidateóyessremote deleteds other deleteds ancestor missing, remote missings$local directory rename, both createds$local directory rename - get from %ssremote copied from %ssremote moved from %srdsremote created, get or merges-local directory rename - respect move from %ssremote recreatingsprompt deleted/changeds#local not present, remote unchangedr])ArÙr›r|ÚparentsrÚintrevr±r Ú branch_copiesÚ mergecopiesrÚbytestrÚboolrÚnoterÚdebugr;ÚcopyÚvaluesr_Ú movewithdirÚrevrjÚsubstateÚ nodeconstantsÚmodifiednodeidrpÚfilecopiesmodeÚdiffrr£rJÚ matchfilesÚmatchmodÚintersectmatchersÚgetÚnoderyrrr{rmÚ ACTION_KEEPrrzrÓr¡r’rŸÚ addednodeidr‘ÚACTION_KEEP_NEWrvrsrxÚdirmover¤rürtÚACTION_KEEP_ABSENTrËršr×rärå)-rr1Úp2Úpar•r€ÚmatcherÚ acceptremoteÚ followcopiesÚ forcefulldiffr�ÚxÚbranch_copies1Úbranch_copies2rãÚboolbmÚboolfÚboolmÚm1Úm2ÚmaÚcopied1Úcopied2Ú relevantfilesÚcopykeyÚ copyvalueÚ movedirkeyÚ filesmatcherr-r3Ún1Úfl1Ún2rŒr¨rkr%rëÚflaÚnolr4Údfrìršräs- ` r&Ú manifestmergerTÕs ø€ô*‹m€GØÐ˜wŸ~™~Ô/؈ô ˜Ÿ ™ ›¨"¨b¨Ñ1´w·~±~ÕFóáFˆAð � ‰ � ØFòô ×)Ñ)Ó+€NÜ×)Ñ)Ó+€NØ€GñÜ28×2DÑ2DØ �$˜˜Bó3 Ñ/ˆ˜¨ô× Ñ œd ;Ó/Ó 0€FÜ × Ñ œT %›[Ó )€EÜ × Ñ œT '›]Ó +€E؇G�G‡L�L”Ð+Ó,Ô-؇G�G‡M�MØ5¸ÀÈÐ8NÑNôð ‡G�G‡M�MÐ;¸rÀ4ȸnÑLÔMà—‘“ "§+¡+£-°·±³ˆBˆ€BÜ�.×%Ñ%×,Ñ,Ó.Ó/€GØ ‡N�N�>×-Ñ-×4Ñ4Ó6Ô7Ü�.×%Ñ%×,Ñ,Ó.Ó/€GØ ‡N�N�>×-Ñ-×4Ñ4Ó6Ô7à˜Ñ §¡£ Ð 2ô Ó:¨D¯MªMÓ:Ô :Ø!%×!3Ñ!3×!BÑ!BˆBˆ~Ñ ð �D˜"�: § ¡ £Ñ.Ñ/Ùà �G‰G× Ñ ˜Ð0GÔ HØ×"Ñ"Ð&;Ò;ô ˜BŸG™G B›K×,Ñ,Ó.Ó/ˆ ð#1×"5Ñ"5×";Ñ";Ö"=Ñ ˆG�YؘMÒ)Ø×!Ñ! 'Õ*ð#>ð)×4Ô4ˆJØ × Ñ ˜jÕ )ð5ä×)Ñ)¨$° Ó>ˆ Ü×,Ñ,¨W°lÓCˆà �7‰7�2˜Wˆ7Ó %€Dà%)§Z¡Z§\Ñ!ˆÑ !‰IˆR�‘y˜˜CÚ ’"ؘ‰{à#×(Ñ(×,Ñ,Ø�tóò6à#×(Ñ(×,Ñ,¨Q°Ó5ðð'‘ ��cØ�>ؘq " e¨R¯W©W«YÐ7�DØ1°BÑ6‘Cà˜q $¨¨r¯w©w«yÐ9�DØ)�CØ—‘ ¤=×#=Ñ#=¸tÀSÕIØ�n×)Ñ)Ñ)Ø#×(Ñ(¨Ñ+�Ø—‘ØÜ!×.Ñ.ؘ˜B  r§w¡w£yÐ1Ø-°Ñ2ö ð �n×)Ñ)Ñ)Ø#×(Ñ(¨Ñ+�Ø—‘ØÜ!×.Ñ.ؘ˜B  r§w¡w£yÐ1Ø-°Ñ2ö ð�q‘E�Ø—h‘h˜q“k�Ø #¨¡)¨c¡/Ð1�ؘ’7˜s cšzØ—O‘OØÜ%×1Ñ1ØØ+ö ð ˜1’W ¨¢Ø˜R’xØŸ™ØÜ)×5Ñ5Ø ˜FØ1ö ð Ÿ™ØÜ)×4Ñ4Ø  %˜LØ.ô ó 'Ø#×1Ñ1Ø !Ð#5°xöñ˜R 1šWØ—O‘OØÜ%×1Ñ1ؘØ-ö ñ ˜R 1šWØ—O‘OØÜ%×0Ñ0ؘe˜ Ø*ô ó #Ø×-Ñ-¨aÐ1CÀXÖNà—O‘OØÜ%×2Ñ2ؘA˜q %¨¯©«Ð3Ø*ö ò Ø�G‰|Ùà�^×/Ñ/Ñ/à#×/Ñ/°Ñ2�ؘ‘8Ø—O‘OØÜ%×2Ñ2ؘB  d¨B¯G©G«IÐ6Ø@ö ð—O‘OØÜ%×BÑBؘC˜ØAÀAÑEö ð �n×)Ñ)Ñ)Ø#×(Ñ(¨Ñ+�Ø—‘ØÜ!×.Ñ.ؘ˜B  r§w¡w£yÐ1Ø1°BÑ6ö ð �b‘ؘ˜A™’;Ù#ØŸ™ØÜ)×7Ñ7Ø Ø,ö ð Ÿ™ØÜ)×@Ñ@Ø  a¨°·±³ Ð:Ø5ô ó 'Ø#×1Ñ1Ø !Ð#=¸vöð˜4×-Ñ-×9Ñ9Ò9ð—O‘OØÜ%×3Ñ3ØØ)ö ð—O‘OØÜ%×3Ñ3ØØ(ô ó #ð  ×-Ñ-ØÐ9¸6öð —‘ØÜ!×1Ñ1ØØ7ö óØ�G‰|ÙØ�n×0Ñ0Ñ0Ø#×/Ñ/°Ñ2�ؘ‘8Ø—O‘OØÜ%×2Ñ2ؘQ  e¨R¯W©W«YÐ7Ø?ö ð—O‘OØÜ%×AÑAؘC˜Ø?À!ÑCö ð �n×)Ñ)Ñ)Ø#×(Ñ(¨Ñ+�Ø&‘ ��Tؘ‘8Ø  2 u¨b¯g©g«iÐ8�DØ2°RÑ7‘Cà  2 t¨R¯W©W«YÐ7�DØ1°BÑ6�CØ—‘ ¤=×#=Ñ#=¸tÀSÖIؘ"‘ñØ—O‘OØÜ%×4Ñ4ؘØ)ö ñ %Ø—O‘OØÜ%×4Ñ4ؘØ)ö ð—O‘OØÜ%×:Ñ:ؘbŸg™g›iÐ(Ø7ö ð �r˜!‘u’Ø�Ø'×/Ô/�AØ—|‘| A•à+×3Ñ3°AÑ6¸¼3¸q»6¸8¸ÑD˜Ùð 0ð �> b¨B¡hØ—O‘OØÜ%×2Ñ2ؘQ  5¨"¯'©'«)Ð4ð#Ø%&ñ'ö ñ"Ø—O‘OØÜ%×4Ñ4ؘØ,ö ð—O‘OØÜ%×<Ñ<ؘq ! U¨B¯G©G«IÐ6Ø1ô ó #Ø×-Ñ-ØÐ9¸6öð—‘ØÜ!×4Ñ4ØØ:ô ó ð ×)Ñ)¨!Ð-GÈÖPðc&2ðf ‡w�w×ј/Ð+FÔGä˜4  r¨7Ô3à×"Ñ"Ó$€KØ × Ñ Ô ä˜[¨+°wÔ?à!×.Ñ.€LØ×ј×3Ñ3Ô4à ×ј ,Ô/Ø €NùòI sÁn:có–—t|jtjf««D]A}||vsŒ||j ||«rŒ |j |tj dd«ŒCt|jtjf««D]0}||vsŒ||j ||«rŒ |j|«Œ2y)zXResolves false conflicts where the nodeid changed but the content remained the same.Ns prompt same) rDrQrrrŸr-ryr’rtrœ)rr1r2Úancestorr�r3s r&Ú_resolvetrivialrWVs§€ô �'—-‘-¤×!EÑ!EÐ GÓHÖ IˆØ �Š=  a¡§¡¨X°a©[Õ!9à �O‰OØ”=×.Ñ.°°nõ ðJô�'—-‘-¤×!EÑ!EÐ GÓHÖ IˆØ �Š=  a¡§¡¨X°a©[Õ!9à × Ñ ˜qÕ !ñJr6c ó&‡‡—ddlm} d} t|«dk(rPt||||d|||||« } t ||||| | «|j j dd«�rðtd«�nã|j jtd«||td«jd „|D««fz«i} t«} d \} }|D�]R}|j jtd «|z«t|||||||||d ¬ « }t |||||| «| �!t|j«t| «kr |j} |�!t|«t|j«kr |j}| jj|j«|j!d ¬«D]k\}}|\}}}|j j#d|||j%«fz«|| vr%| |}||vr||j'|«Œ]|g||<Œd||gi| |<Œm�ŒU|j jtd«t|«z«t)| j+««D�]®\}}|j j,rx|j j#d|z«t)|j+««D]>\}ЉD]4\}}}|j j#d||j%«fz«Œ6Œ@t|«dk(r…t/|j+««d\}Št1ˆfd„‰ddD««rO|j jtd«||j%«fz«| j2|g‰d¢­Ž�Œ(t4j6|vrP|j jtd«|z«| j2|g|t4j6d¢­Ž�ŒŠt4j8|vrP|j jtd«|z«| j2|g|t4j8d¢­Ž�Œìt4j:|vrbt4j<|vrP|j jtd«|z«| j2|g|t4j:d¢­Ž�Œ`t4j<|vrP|j jtd«|z«| j2|g|t4j<d¢­Ž�ŒÂt4j>|vrbt4j@|vrP|j jtd«|z«| j2|g|t4j>d¢­Ž�Œ6t4j@|vrz|t4j@dŠt1ˆfd„|t4j@ddD««r<|j jtd«|z«| j2|g‰¢­Ž�ŒÂ|j jtd«|z«t)|j+««D]>\}ЉD]4\}}}|j jd||j%«fz«Œ6Œ@t/|j+««d\}Š|j jCtd«||j%«fz«| j2|g‰d¢­Ž�Œ±|j jtd««| jE| |«|jG«€tI|||| «| jK||||| «tM||||d| «| S) aŠ Calculate the actions needed to merge mctx into wctx using ancestors Uses manifestmerge() to merge manifest and get list of actions required to perform for merging two manifests. If there are multiple ancestors, uses bid merge if enabled. Also filters out actions which are unrequired if repository is sparse. Returns mergeresult object same as manifestmerge(). r©ÚsparseNrsdevelsdebug.abort-updates5note: merging %s and %s using bids from ancestors %s s and c3óFK—|]}tj|«–—Œy­wr:)rr!)rgr�s r&riz#calculateupdates..™sèø€Ð LÁ)¸3¤×!1Ñ!1°#×!6Á)ùs‚!rs" calculating bids for ancestor %s T)r=©rùó %s: %s -> %s s/ auction for merging merge bids (%d ancestors) s list of bids for %s: s %s -> %s c3ó.•K—|] }|‰dk(–—Œy­w)rNrY)rgrëÚls €r&riz#calculateupdates..àsøèø€Ð0©% Q�q˜A˜a™D•y©%ùsƒs %s: consensus for %s s %s: picking 'keep' action s" %s: picking 'keep absent' action s& %s: picking 'changed/deleted' action s %s: picking 'keep new' action s% %s: picking 'delete/changed' action c3ó(•K—|] }|‰k(–—Œ y­wr:rY)rgrëÚga0s €r&riz#calculateupdates..søèø€ÐLÑ)K A�q˜C•xÑ)Kùsƒs %s: picking 'get' action s% %s: multiple bids for merge action: s %s -> %s s( %s: ambiguous merge - picked %s action send of auction )'ÚrZrürTr�rrpÚexitr#rrrÙrãräràr_rÏr$Ú __bytes__r r|r£Ú debugflagrDÚallryrrr3r7rŸr5rtrzr}rår(r—ÚfilterupdatesactionsrW)rr1r2Ú ancestorsr•r€r;r<r:r‚rZr�ÚfbidsrãrärVÚmresult1r3rër–rkr%rìÚbidsÚ_frar_s @@r&ÚcalculateupdatesrmhsÅù€õ0à€GÜ ˆ9ƒ~˜ÒÜØ Ø Ø Ø �a‰LØ Ø Ø Ø Ø ó  ˆô ˜4  t¨U°G¸ZÔHØ �7‰7× Ñ ˜hÐ(=Õ >Ü �ŽGð �‰� ‰ Ü ÐGÓ HàØÜ�(“ × Ñ Ñ LÁ)Ó LÓLðñ ô ðˆÜ“-ˆØ *ш�Ü!ˆHØ �G‰G�L‰LœÐBÓCÀhÑNÔ OÜ$ØØØØØØØØØØ"ô ˆHô ˜t T¨4°¸À*Ô Mðˆ¤# h×&6Ñ&6Ó"7¼#¸g»,Ò"FØ"×*Ñ*�ØÐ#¤s¨<Ó'8¼3Ø×%Ñ%ó<ò(ð (×4Ñ4� ð × Ñ × &Ñ & x×';Ñ';Ô <à ×(Ñ(¨dÐ(Ö3‘��1Ø ‘ ��4˜Ø—‘— ‘ Ð0°A°s¸A¿K¹K»MÐ3JÑJÔKؘ‘:ؘa™�AؘA‘vؘ!™Ÿ ™  A�à !˜s˜˜!šà ! A 3˜x�E˜!’Hò4ð?"ðZ �‰� ‰ Ü ÐBÓ CÜ�)‹nñ ô ô˜eŸk™k›m×,‰GˆAˆtØ�w‰w× Ò Ø—‘— ‘ Ð8¸1Ñ<Ô=Ü" 4§:¡:£<Ö0‘D�A�qÛ)*™ ˜˜D #ØŸ™Ÿ ™ Ð&6¸#¸q¿{¹{»}Ð9MÑ&MÕNñ*+ð1ô �4‹y˜AŠ~ܘDŸJ™J›LÓ)¨!Ñ,‘��1ÜÓ0¨!¨A¨B©%Ó0Ô0Ø—G‘G—L‘LÜÐ4Ó5¸¸A¿K¹K»MÐ8JÑJôð$�G—O‘O AÐ-¨¨!©Ó-Ùä×(Ñ(¨DÑ0Ø—‘— ‘ œQÐ>Ó?À!ÑCÔDØ�—‘ ÐG D¬×)BÑ)BÑ$CÀAÑ$FÓGÙä×/Ñ/°4Ñ7Ø—‘— ‘ œQÐEÓFÈÑJÔKØ�—‘ ÐN D¬×)IÑ)IÑ$JÈ1Ñ$MÓNÙô×4Ñ4¸Ñ<Ü!×1Ñ1°TÑ9à—‘— ‘ œQÐIÓJÈQÑNÔOØ�—‘ØðØœ]×AÑAÑBÀ1ÑEóñä×,Ñ,°Ñ4Ø—‘— ‘ œQÐBÓCÀaÑGÔHØ�—‘ ÐK D¬×)FÑ)FÑ$GÈÑ$JÓKÙô×4Ñ4¸Ñ<Ü!×,Ñ,°Ñ4à—‘— ‘ œQÐHÓIÈAÑMÔNØ�—‘ØðØœ]×AÑAÑBÀ1ÑEóñä×'Ñ'¨4Ñ/Øœ=×3Ñ3Ñ4°QÑ7�ÜÓL¨¬m×.FÑ.FÑ)GÈÈÑ)KÓLÔLØ—G‘G—L‘L¤Ð#AÓ!BÀQÑ!FÔGØ#�G—O‘O AÐ,¨Ó,Ùð �G‰G�L‰LœÐDÓEÈÑIÔ JܘtŸz™z›|Ö,‘��1Û%&‘M�B˜˜cØ—G‘G—L‘L °C¸¿¹»Ð3GÑ!GÕHñ&'ð-ô˜Ÿ ™ › Ó% aÑ(‰DˆAˆqØ �G‰G�L‰LÜÐ>Ó?Ø�a—k‘k“mÐ$ñ%ô ð ˆG�O‰O˜AÐ %  !¡Ó %Ù ð_-ð` �‰� ‰ ”QÐ,Ó-Ô.Ø×јW lÔ3à ‡x�xƒzÐÜ�t˜T ;°Ô8à ×Ñ  d¨D°+¸wÔGÜ�D˜$  i°¡l°GÔ<à €Nr6cóJ— tj«S#t$rYywxYwr:)r ÚgetcwdÚFileNotFoundErrorrYr6r&Ú_getcwdrq2s&€ðÜ�‰Ó Ð øÜ òÙðús ‚– "¡"c #óºK—|jj}t«}d}|D]Š\}}}|jjd||fz«|r'|jj t d«|z«||j « ||jd¬«|dk(r||f–—d}|d z }ŒŒ|dkDr|f–—|r=t«s2|jjt d «|jz«yyy#t$rP} |jjt d«|tj| j«fz«Yd} ~ Œ³d} ~ wwxYw­w) zSapply removes to the working directory yields tuples for progress updates rs %s: %s -> r ó removing %s T)Ú ignoremissings update failed to remove %s: %s! NédrsCcurrent directory was removed (consider changing to repo root: %s) )rÚverboserqr$r#rrFr¿ÚOSErrorr}rÚ forcebytestrÚstrerrorÚroot) rr1rörvÚcwdÚir3rkr%Úinsts r&Ú batchremover~9sEèø€ð �g‰g�o‰o€GÜ ‹)€CØ €AÛ‰ ˆˆ4�Ø �‰� ‰ Ð'¨1¨c¨(Ñ2Ô3Ù Ø �G‰G�L‰LœÐ+Ó,¨qÑ0Ô 1Ø ˆQ‰� ‰ Œð Ø �‰G�N‰N¨ˆNÔ .ð �Š8Ø�Q�$ŠJ؈AØ ˆQ‰‰ð ð  ˆ1‚uØ�ˆdŠ á ”7”9ð �‰� ‰ Ü ð:ó ð�i‰iñ  õ ð€søôò Ø �G‰G�L‰LÜÐ6Ó7Ø”j×-Ñ-¨d¯m©mÓ<Ð=ñ>÷ ñ ûð üs2‚BE C? AEÃ? EÄAEÅEÅEÅEc#ó\K—i}|jj}|j}|j}d} |jj |t |«¬«5|D�]¡\} \} } } |jj d| | fz«|r'|jjtd«| z«| r­| }|jj| «s9tj| «D]!}|jj|«sŒ|}n|jj|«r g s getting %s r\supdate.atomic-fileT)ÚbackgroundcloseÚ atomictempruFrN)rrvÚfilectxr/Úbackgroundclosingrür$r#rrIrrErHrÚ backuppathrÚrenameÚwjoinÚ clearunknownrpÚwriteréÚlstatÚst_moderÚmtime_of)rr2r1Ú wantfiledataröÚfiledatarvÚfctxrr|r3rmrlr%Ú conflictingrOrñÚwfctxr‚ÚsizerÚmodeÚmtimes r&Úbatchgetr•`sèø€ð€HØ�g‰g�o‰o€GØ �<‰<€DØ �‰€BØ €AØ �‰× $Ñ $ R´s¸7³|Ð $Õ DÜ'.Ñ #ˆA‰��v Ø �G‰G�M‰MÐ+¨q°#¨hÑ6Ô 7ÙØ—‘— ‘ œQ˜Ó/°!Ñ3Ô4áð � Ø—y‘y×(Ñ(¨Ô+Ü%×.Ñ.¨qÖ1˜ØŸ9™9×1Ñ1°!Õ4Ø*+˜KÙ!ð2ð—9‘9×$Ñ$ [Ô1Ü"×-Ñ-¨b°$¸ ÓD�DÜ—K‘K § ¡ ¨;Ó 7¸Ô>ؘ‘GˆEØ × Ñ Ô ØŸ™ Ð8MÓNˆJØ—;‘;Ù�Q“— ‘ “ØØ $Ø%ð óˆDñ ð:—K‘K“M�Ø—y‘y�Ü!×*Ñ*¨1Ó-�à# T¨5Ð1�˜‘ Ø�CŠxؘa ˜V�mÒ#Ø�Ø �‰FŠAñA(/÷ EðD ˆ1‚uØ�a˜�VˆmÒØ �ˆ.Ó÷I EÐ Düs&‚AH,ÁB)H ÄC>H ÈH,È H)È%H,có —|jtjtjtjtj g«}t j}t j}|||j«|||«fg«y)z„Invoke ``scmutil.prefetchfiles()`` for the files relevant to the dict of merge actions. ``ctx`` is the context being merged in.N) rQrrrzrtrvr{rÚ prefetchfilesr.r()rÚctxr�rQÚprefetchr.s r&Ú_prefetchfilesrš¶s}€ð �M‰Mä × $Ñ $Ü × 0Ñ 0Ü × 5Ñ 5Ü × &Ñ &ð  ó €Eô×$Ñ$€HÜ×#Ñ#€JÙ Ø ð—‘“ Ù˜4 Ó'ð ð õr6T)Úfrozencóš—eZdZej«Zej«Zej«Zej«Zd„Z y)Ú updateresultcóp—|jxs(|jxs|jxs |j Sr:)Ú updatedcountÚ mergedcountÚ removedcountÚunresolvedcountr>s r&Úisemptyzupdateresult.isemptyÚsA€à × Ñ ò $Ø×Ñò $à× Ñ ò $ð×#Ñ#ð  ð r6N) rUrVrWrÚibrŸr r¡r¢r£rYr6r&r�r�Ós;„à�4—7‘7“9€LØ�$—'‘'“)€KØ�4—7‘7“9€LØ�d—g‘g“i€Oó r6r�c ó€—t|||«d\}}} |jd¬«} | j|j«j «|j «|«|j j «D]\} } | j| | «Œ|jtjj«} |j«| z }|jjtd«td«|¬«}d|jtj vrt#j$||||||«|j'tj(gd¬«D]œ\} }}|\}}|jj*}|td «| z«|d k(r|td «|z«n|td «|z«|td «| z«| j-| ||«|j/| ¬«Œž|j1«rdnd}t3j2|j|t4||ft7|j'tj gd¬«««}|D]\}}|j/||¬«Œ|jtj f«} |j'tj8gd¬«D]î\} }}|jj;d| |fz«|\}}||j=«rž|jj?td«|| fz«|| jA«|| jC|jE|«jG«|jE|«jI««||jK«|j/| ¬«Œð|jjMdd«}t3j2|j|tN||||ft7|j'tjPgd¬««|d¬«}i}|D]"\}}|r|}Œ |\}}|j/||¬«Œ$d|jtjPvrt#j$||||||«|j'tjRfd¬«D]8\} }}|jj;d| |fz«|j/| ¬«Œ:|j'tjTfd¬«D]8\} }}|jj;d| |fz«|j/| ¬«Œ:|j'tjVfd¬«D]8\} }}|jj;d| |fz«|j/| ¬«Œ:tjjD]N}|j'|fd¬«D]5\} }}|jj;d| ||jY«fz«Œ7ŒP|j'tjZfd¬«D]¾\} }}|jj;d| |fz«|j/| ¬«|\}} |jj?td«|| fz«|| jA«|| jC|jE|«jG«| «||jK«ŒÀ|j'tj\fd¬«D]˜\} }}|jj;d| |fz«|j/| ¬«|\}} |jj?td«|| fz«|| jC|jE|«jG«| «Œš|j'tj^fd¬«D]h\} }}|jj;d| |fz«|j/| ¬«|\} || jA«|| jad | vd| v«Œjg}!t7|j'tjbtjdtjfgd¬««}"|"D]Ä\} }}|\}}#}$}%}&| dk(rŒ|€tijj||$«}'n%|jj;d || fz«||}'|#€tijj||$«}(n||#}(||&})|$|)vr|)|$}*n|jE|tl¬!«}*| jo|'|(|*| «|| k7sŒ±|%sŒ´|!jq|«ŒÆ|!D]Z} || j=«sŒ|jj;d"| z«|| jA«|| jK«Œ\|jtjPtj^tj\tjZf«} |"D] \} }}|jj;d#| |fz«| j| d$d%i«|j/| ¬«| dk(r*t#j$||||js|«||«Œ||| jA«| ju| |«Œ¢ | j{«| j}«}+| j«\},}-}.||,z }||-z }| |.z } | j�«}/|jƒ«t…||| |+«||/fS#tvjx$rYŒ‰wxYw#| j{«wxYw)&aºapply the merge action list to the working directory mresult is a mergeresult object representing result of the merge wctx is the working copy context mctx is the context to be merged into the working copy Return a tuple of (counts, filedata), where counts is a tuple (updated, merged, removed, unresolved) that describes how many files were affected by the update, and filedata is as described in batchget. )rrrT)Úcleansupdatingsfiles)ÚunitÚtotalrr\sD%s: path conflict - a file or link has the same name as a directory rµs&the local file has been renamed to %s s'the remote file has been renamed to %s s1resolve manually then use 'hg resolve --mark %s' )Úitemrgü©ñÒMbP?)Ústepr©s %s: %s -> pr smoving %s to %s r\sworker.wdir-get-thread-safe)Ú threadsafeÚ hasretvals %s: %s -> f s %s: %s -> a s %s: %s -> am r]s %s: %s -> dm s %s: %s -> dg sgetting %s to %s s %s: %s -> e óxs! preserving %s for resolve of %s )Úfileidrss %s: %s -> m smergedr)CršrÚstartÚp1r2rr£rÓrürrÚ MergeActionÚ NO_OP_ACTIONSrÚ makeprogressrrár’rÚsubmergerur¾ÚstatusÚaddpathconflictÚ incrementr*rr~rDr½r$rIr#rFr‰rƒrérmr¿rpr•rzr‘r�ržrdr¡rvrÚsetflagsrŸrtr{r Ú absentfilectxrrJr rVÚresolver ÚInterventionRequiredÚcommitr¢ÚcountsröÚcompleter�)0rr�r1r2Ú overwriter�ÚlabelsÚupdatedÚmergedr”Úmsr3ÚopÚ num_no_opÚ numupdatesÚprogressrkr%r§ÚforÚcostÚprogr|r©Úf0Úorigf0r«Ú getfiledataÚfinalr rërmÚmovesÚ mergeactionsr4r¨r©r�ÚfclÚfcoÚactxÚfcaÚ unresolvedÚ msupdatedÚmsmergedÚ msremovedÚ extraactionss0 r&Ú applyupdatesrÚãs€ €ô*�4˜˜wÔ'à&Ñ€GˆV�WØ �‰˜tˆÓ $€B؇H�HˆT�W‰W‹Y�^‰^Ó ˜tŸy™y›{¨FÔ3à×#Ñ#×)Ñ)Ö+‰ˆˆ2ð ×ј˜BÕð,ð — ‘ œM×5Ñ5×CÑCÓD€IØ—‘“ Ñ*€JØ�w‰w×#Ñ#Ü ˆ+‹œQ˜x›[° ð$ó€Hð˜×/Ñ/´ ×0KÑ0KÑLÑLÜ×јT 4¨¨t°YÀÔGð ×*Ñ*Ü × +Ñ +Ð,°4ð+ö‰ ˆˆ4�ð‰ˆˆBØ �G‰G�N‰NˆÙ Ü ðó ðñ  ô ð �Š:Ù ŒaÐ:Ó;¸bÑ@Õ Aá ŒaÐ;Ó<¸rÑAÔ BÙ Œ!Ð AÓ BÀQÑ FÔGØ ×ј1˜b "Ô%Ø×Ñ ÐÕ"ð%ð,—‘Ô!‰1 u€Dô �=‰=Ø �‰Ø ÜØ ˆtˆ Ü ˆW× Ñ ¤×!<Ñ!<Ð =ÀDÐ Ó IÓJó  €D󉈈4Ø×Ñ ¨ÐÕ-ðà�k‰kœ=×6Ñ6Ð8Ó9€Gð ×*Ñ*Ü × 3Ñ 3Ð4¸4ð+ö‰ ˆˆ4�ð �‰� ‰ Ð(¨A¨s¨8Ñ3Ô4؉ ˆˆVØ �‰8× Ñ Ô Ø �G‰G�L‰LœÐ/Ó0°B¸°7Ñ:Ô ;Ø �‰G�M‰MŒOØ �‰G�M‰M˜$Ÿ,™, rÓ*×/Ñ/Ó1°4·<±<ÀÓ3C×3IÑ3IÓ3KÔ LØ �‰H�O‰OÔ Ø×Ñ ÐÕ"ðð—‘×#Ñ#ØÐ7ó€Jô �=‰=Ø �‰Ø ÜØ ˆt�T˜<Ð(Ü ˆW× Ñ ¤×!9Ñ!9Ð :ÀÐ Ó FÓGØØô €Dð€KÛ‰ ˆˆs٠؉Kà‰GˆAˆtØ × Ñ  A¨DÐ Õ 1ð ð˜×/Ñ/´ ×0HÑ0HÑIÑIÜ×јT 4¨¨t°YÀÔGð ×*Ñ*Ü × $Ñ $Ð&¨Tð+ö‰ ˆˆ4�ð �‰� ‰ Ð'¨1¨c¨(Ñ2Ô3Ø×Ñ ÐÕ"ð ð ×*Ñ*Ü × !Ñ !Ð#¨$ð+ö‰ ˆˆ4�ð �‰� ‰ Ð'¨1¨c¨(Ñ2Ô3Ø×Ñ ÐÕ"ð ð ×*Ñ*Ü × *Ñ *Ð,°4ð+ö‰ ˆˆ4�ð �‰� ‰ Ð(¨A¨s¨8Ñ3Ô4Ø×Ñ ÐÕ"ð ô× &Ñ &× 4Ô 4ˆØ#×.Ñ.°¨t¸$Ð.Ö?‰LˆAˆt�SØ �G‰G�M‰MÐ,°°3¸¿ ¹ » Ð/FÑFÕ Gñ@ð5ð  ×*Ñ*Ü × 3Ñ 3Ð5¸Dð+ö‰ ˆˆ4�ð �‰� ‰ Ð(¨A¨s¨8Ñ3Ô4Ø×Ñ ÐÔ"؉ ˆˆEØ �‰� ‰ ”QÐ+Ó,°°A¨wÑ6Ô7Ø ˆQ‰� ‰ ŒØ ˆQ‰� ‰ �d—l‘l 2Ó&×+Ñ+Ó-¨uÔ5Ø ˆR‰�‰Õðð ×*Ñ*Ü × 2Ñ 2Ð4¸4ð+ö‰ ˆˆ4�ð �‰� ‰ Ð(¨A¨s¨8Ñ3Ô4Ø×Ñ ÐÔ"؉ ˆˆEØ �‰� ‰ ”QÐ,Ó-°°Q°Ñ7Ô8Ø ˆQ‰� ‰ �d—l‘l 2Ó&×+Ñ+Ó-¨uÕ5ðð ×*Ñ*Ü × "Ñ "Ð$¨4ð+ö‰ ˆˆ4�ð �‰� ‰ Ð'¨1¨c¨(Ñ2Ô3Ø×Ñ ÐÔ"؉ˆØ ˆQ‰� ‰ ŒØ ˆQ‰×ј ˜¨°¨ Õ6ðð €EôØ×Ñä×4Ñ4Ü×4Ñ4Ü×*Ñ*ð ð ð ó ó €Ló%‰ ˆˆ4�Ø $шˆB��D˜#Ø �Ò Ø Ø ˆ:Ü×)Ñ)¨$°Ó3‰Cà �G‰G�M‰MÐ?À2ÀqÀ'ÑIÔ JØ�r‘(ˆCØ ˆ:Ü×)Ñ)¨$°Ó3‰Cà�r‘(ˆCØ�C‰yˆØ �‰:Ø�r‘(‰Cð—,‘,˜r¬'�,Ó2ˆCØ �‰ˆs�C˜˜aÔ Ø �‹7’tØ �L‰L˜Õ ð+%ó0ˆØ �‰7�?‰?Õ Ø �G‰G�M‰MÐ*¨QÑ.Ô /Ø �‰G�M‰MŒOØ �‰G�N‰NÕ ð ð�k‰kä × $Ñ $Ü × %Ñ %Ü × 5Ñ 5Ü × 6Ñ 6ð  ó€GðÛ(‰LˆAˆt�SØ �G‰G�M‰MÐ+¨q°#¨hÑ6Ô 7Ø × Ñ ˜Q ¨FÐ 3Ô 4Ø × Ñ  AÐ Ô &Ø�NÒ"Ü×$Ñ$ؘ$  d§m¡m°DÓ&9¸9ÀfôðØ �‰G�M‰MŒOØ �J‰J�q˜$Õ ñ)ð" � ‰ Œ à×#Ñ#Ó%€Jà%'§Y¡Y£[Ñ"€Iˆx˜Ø ˆyÑ€GØ ˆhÑ€FØ ˆyÑ€Gà—:‘:“<€Là ×ÑÔä�W˜f g¨zÓ:ØØð ðøô# × %Ñ %ò ñ ð ûð � ‰ � ús+ç8B%lêl+ìl(ì%l+ì'l(ì(l+ì+l=có*—|jjdd«}|jjdd«}tjd«}|�|jjdd«} ddlm}|jd«|jjdd«d k7}|r^|s[||jk(rK||k\rEtjjd «r%|jjtd ««yyyyyy#t$rd }YŒnwxYw) Ns fsmonitorswarn_when_unusedswarn_update_file_countr.swarn_update_file_count_rustr)Ú extensionssmodesoffF)slinuxsdarwins�(warning: large working directory being used without fsmonitor enabled; enable fsmonitor to improve performance; see "hg help -e fsmonitor") )rrpÚ configintrÚ importrustrbrÜÚfindrÚKeyErrorÚnullidrÚ sysplatformr¤r}r)rÚnum_getsÚp1nodeÚfsmonitorwarningÚfsmonitorthresholdÚdirstate_rustmodrÜÚfsmonitorenableds r&Ú_advertisefsmonitorréës€ð—w‘w×)Ñ)¨,Ð8KÓLÐØŸ™×*Ñ*ØÐ/óÐô×(Ñ(¨Ó4ÐàÐ#à!ŸW™W×.Ñ.Ø Ø *ó Ðð !å à�‰˜ Ô%ØŸ7™7Ÿ>™>¨,¸Ó@ÀFÑJÐñ Ù Ø �d—k‘kÒ !Ø Ð*Ò *Ü × Ñ × +Ñ +Ð,AÔ Bà �‰� ‰ Ü ð1ó õ ð Cð +ð "ð!ð øô ò!Ø Òð!úsÁ-6DÄ DÄDrsnoneslinears noconflictc óà—ddlm} |€J‚|s3|s1| €t} tttf} | | vrd}|| | fz}t |«‚| �%| j «rtj«}n|j«}|5| €|d} | j«}|d}||}|�||g}n—|jjdd«dgk(rc|jj|j«|j««}t!|«xs |j"gD�cgc]}||‘Œ }}n|j%||¬ «g}|j«|j«t'|«t'|«f\}}}}|xr| }|syt)|«dkDrt+j,t/d ««‚| j1«}|j3«r-t/d «}t/d «}t+j,||¬ «‚|�rt/d«}||gk(rt+j4|«‚||gk(rP|sN| j7«|j7«k(r-t/d«}t/d«}t+j4||¬ «‚|sM| j9«s| j;«r-t/d«}t/d«}t+j,||¬ «‚| j «�st!| j<«D]!}| j?|«jA«Œ#nÖ|sÔ||k(rA|jCdd|d¬«|jCd|dd¬«tEdddd«cddd«S| tk(r…||g|gfvr}| jGd¬«}|rhtIjJ||j«g«} ||j«| vrn.t/d«}t/d«}t+jL||¬ «‚ |r| g}n|s|g}|jjOdd«}!|rd}!n|dsd}!|s| jGd¬«sd}!tQ|| ||||||!||¬« }"| tk(r=|"jS«r-t/d«}t/d«}t+j,||¬ «‚|"jUd«}#|#�rYd}$|#\}%}&}tWjX|«}'|$|'d <|%tZj\k(r•|jj_t/d!«|'zd«r#|"ja|$tZjbdd"«nÙ|$|vr#|"ja|$tZjddd#«n²|"ja|$tZjfdd#«n�|%tZjhk(r||&\}(})}*}+}||)jk«},|jj_t/d$«|'zd«dk(r%|"ja|$tZjl|,dfd%«n|"jo|$«tjp|jr«sN|s1|s| jGdd¬&«stu||jw«d«ntu|| jw«|"«t!|"jxj{««D]Z\}$}-|jj}t/d'«|$z«t!|-«D] }.|jj}d(|.z«Œ"Œ\t!|"j~j{««D]Z\}$}-|jj}t/d)«|$z«t!|-«D] }.|jj}d(|.z«Œ"Œ\|s||j"|df\}}}}|duxs|j�«}/| xr|/xr| j « } | r?|jCdd||¬«|j‚j…d*|j‡««t‰||"j)tZjlf«|j««| xr| }0t‹||"| |||0|¬+«\}1}2}3| �rå|3r_|3j{«D]L\}4}5|5D]}6|"j`|6d|4g|6dd¢­ŽŒ|4tZjlk(sŒ;|0sŒ>|5D] }6d|2|6d<Œ ŒNt)|2«|0r |"j)tZjlf«ndk(sJ‚|jŒj�|«5|2r}i}7t‘j’|j‚«}8|8€d}2nW|8d}9|2j{«D]"\}$}%|%€Œ |%d,d|9k\sŒ|%d|%ddf|7|$<Œ$|7j{«D] \}$}%|%|2|$<Œ |j•||«t[j–||"j˜||2«tjš|j‚j�d*««|s8|jŒjŸ|j7«|j¡««|s| j£|«ddd«ddd«| r|jCd1j2¬«1Scc}w#1swYŒ9xYw#1swYŒ=xYw)-a� Perform a merge between the working directory and the given node node = the node to update to branchmerge = whether to merge between branches force = whether to force branch merging or file overwriting matcher = a matcher to filter file lists (dirstate not updated) mergeancestor = whether it is merging with an ancestor. If true, we should accept the incoming changes for any prompts that occur. If false, merging with an ancestor (fast-forward) is only allowed between different named branches. This flag is used by rebase extension as a temporary fix and should be avoided in general. labels = labels to use for local, other, and base mergeforce = whether the merge was run with 'merge --force' (deprecated): if this is True, then 'force' should be True as well. The table below shows all the behaviors of the update command given the -c/--check and -C/--clean or no options, whether the working directory is dirty, whether a revision is specified, and the relationship of the parent rev to the target rev (linear or not). Match from top first. The -n option doesn't exist on the command line, but represents the experimental.updatecheck=noconflict option. This logic is tested by test-update-branches.t. -c -C -n -m dirty rev linear | result y y * * * * * | (1) y * y * * * * | (1) y * * y * * * | (1) * y y * * * * | (1) * y * y * * * | (1) * * y y * * * | (1) * * * * * n n | x * * * * n * * | ok n n n n y * y | merge n n n n y y n | (2) n n n y y * * | merge n n y n y * * | merge if no conflict n y n n y * * | discard y n n n y * * | (3) x = can't happen * = don't-care 1 = incompatible options (checked in commands.py) 2 = abort: uncommitted changes (commit or update --clean to discard changes) 3 = abort: uncommitted changes (checked in commands.py) The merge is performed inside ``wc``, a workingctx-like objects. It defaults to repo[None] if None is passed. Return the same tuple as applyupdates(). rrYNz&Invalid updatecheck %r (can accept %r)rr[spreferancestoró*)r}soutstanding uncommitted mergesoutstanding merge conflictssuse 'hg resolve' to resolverÍs7merging with a working directory ancestor has no effectsnothing to merges#use 'hg update' or check 'hg heads'suncommitted changessuse 'hg status' to list changess preupdateTr6)ÚthrowÚparent1Úparent2supdate)rírîr )Úmissings+commit or update --clean to discard changess followcopiesF)r:r‚sconflicting changesrófsjlocal%(l)s changed %(f)s which other%(o)s deleted use (c)hanged version or (d)elete?$$ &Changed $$ &Deletes prompt deletes prompt keepsrother%(o)s changed %(f)s which local%(l)s deleted use (c)hanged version or leave (d)eleted?$$ &Changed $$ &Deletedsprompt recreating)rïÚbranchs<note: possible conflict - %s was renamed multiple times to: s %s s9note: possible conflict - %s was deleted and renamed to: s updatestate)rÀé)RrbrZÚUPDATECHECK_LINEARÚUPDATECHECK_NONEÚUPDATECHECK_NO_CONFLICTÚ ValueErrorr*rÚnullcontextmanagerÚwlockrrÚ configlistÚ changelogÚcommonancestorsheadsr2r|rárVr¹rür r~rrr¢rÕrñrQr“r)rÚ bailifchangedÚhookr�rrÚ foregroundÚ UpdateAbortrprmrr¸r Ú partextrasrrrŸÚ promptchoiceryr’ržr�rtrmrzrœÚfscasesensitiver‡r¯r±rãr£r}rär›Úvfsr‰ÚhexrérÚr.Úchanging_parentsrÚ get_fs_nowÚ setparentsÚ recordupdatesr ÚunlinkrÚ setbranchÚcurrenttransactionÚprunetemporaryincludes):rr2r•r€rVÚ mergeancestorrÀr:r‚ÚupdatedirstateÚ updatecheckÚwcrZÚokayr%Ú maybe_wlockÚplr°r8ÚpasÚcahsr�Úfp1Úfp2Úxp1Úxp2r¿rÃrÎÚm_arrrþr<r�Úvalsr3r–rkÚpromptsr§r4r¨r©rmrÊÚnfr›r�ÚstatsrÍrÙÚkÚactsrëÚambiguous_mtimeÚnowÚnow_secs: r&Ú_updater$&s÷ €õFð Ð ÐÐ Ù ™uð Ð Ü,ˆKÜ Ô"4Ô6MÐNˆØ ˜dÑ "Ø;ˆCØ �K Ð&Ñ &ˆCܘS“/Ð !Ø €~˜"Ÿ-™-œ/Ü×-Ñ-Ó/‰ à—j‘j“lˆ Ú Ø ˆ:Ø�d‘ˆBØ �Z‰Z‹\ˆØ �‰UˆØ �$‰ZˆØ Рؘ‘>Ð"‰Cà�w‰w×!Ñ! (Ð,=Ó>À4À&ÒHØ—~‘~×:Ñ:¸2¿7¹7»9ÀbÇgÁgÃiÓP�Ü-3°D«\Ò-J¸d¿k¹k¸]Ð-JÓLÑ-J S�t˜C“yÐ-J�ÑLà—{‘{ 2¨K�{Ó8Ð9�àŸW™W›Y¨¯©« ´5¸³9¼eÀB»iÐGшˆS�#�sàÒ- +˜oˆ áÜ�2‹w˜Š{Ü×&Ñ&¤qÐ)IÓ'JÓKÐKØ—‘“ˆBØ×!Ñ!Ô#ÜÐ6Ó7�ÜÐ7Ó8�Ü×&Ñ& s°Ô6Ð6Ú ÜÐNÓOˆCØ�r�dŠ{Ü—k‘k #Ó&Ð&ؘ˜’Ù$¨¯©«¸¿ ¹ » Ò)CÜÐ/Ó0�CÜÐCÓD�DÜŸ+™+ c°Ô5Ð5Ù˜bŸh™hœj¨B¯J©J¬LÜÐ.Ó/�ÜÐ;Ó<�Ü×&Ñ& s°Ô6Ð6Ø—=‘=•?Ü § ¡ Ö,�AØ—F‘F˜1“I×+Ñ+Õ-ñ-ñØ�RŠxà— ‘ ˜,¨d¸CÈ� ÔMØ— ‘ ˜)¨S¸#ÀQ� ÔGÜ# A q¨!¨QÓ/÷c ‰ðfÔ0Ò0°SØ�Ø�ðAñ6🙨˜Ó.�Ùô")×!3Ñ!3°D¸2¿7¹7»9¸+Ó!F�Jà˜D‘z—‘Ó(¨JÑ6ØäÐ 6Ó7˜Ü Ð!OÓP˜Ü#×/Ñ/°¸$Ô?Ð?ðá Ø�$‰CÙØ�$ˆCð—w‘w×)Ñ)¨(°OÓDˆ Ù Ø ‰LØ�Q’Ø ˆLÙ 2§8¡8°D 8Ô#9Ø ˆLô#Ø Ø Ø Ø Ø Ø Ø Ø ØØ!ô  ˆð Ô1Ò 1Ø×#Ñ#Ô%ÜÐ.Ó/�ÜÐGÓH�Ü×&Ñ& s°Ô6Ð6ð �‰˜~Ó.ˆÚ ؈A؉LˆAˆt�SÜ×*Ñ*¨6Ó2ˆG؈G�D‰MØ”M×8Ñ8Ò8Ø—7‘7×'Ñ'Üð2óð ñ ð ôð—O‘OØÜ%×3Ñ3ØØ(õ ð ˜"‘WØ—O‘OØÜ%×9Ñ9ØØ&õ ð—O‘OØÜ%×0Ñ0ØØ&õ ð ”m×:Ñ:Ò:Ø(,Ñ%��B˜˜D #ؘ2™Ÿ ™ ›�à—G‘G×(Ñ(Üð7óð "ñ "ð óðò ð—O‘OØÜ%×0Ñ0Ø ˜Ø,õ ð×&Ñ& qÔ)ä×#Ñ# D§I¡IÔ.áÙ˜RŸX™X¨d¸5˜XÔAä  b§k¡k£m°TÕ:ä  b§k¡k£m°WÔ=ô˜GŸO™O×1Ñ1Ó3Ö4‰EˆAˆrØ �G‰G�L‰LÜð,óðñ ô ô˜R–j�Ø—‘— ‘ ˜X¨™]Õ+ñ!ð5ô˜G×0Ñ0×6Ñ6Ó8Ö9‰EˆAˆrØ �G‰G�L‰LÜð)óðñ ô ô˜R–j�Ø—‘— ‘ ˜X¨™]Õ+ñ!ð:ñØ!$ d§k¡k°3¸Ð!;Ñ ˆC��c˜3ð˜D�Ò4 G§N¡NÓ$4ˆØ'ÒJ¨FÒJ¸2¿=¹=»?Ð7JˆÙ Ø �I‰I�l¨$¸ÀSˆIÔ Ià �H‰H�N‰N˜>¨2¯6©6«8Ô 4äØ �'—+‘+œ}×7Ñ7Ð9Ó:¸B¿G¹G»Iô ð&Ò9¨k¨/ˆ Ü+7Ø Ø Ø Ø Ø Ø Øô, Ñ(ˆˆ{˜Lò ÙØ+×1Ñ1Ö3‘G�A�tÛ!˜Ø'˜Ÿ™¨¨!©¨aÐ8°!°A°B°%Ô8ð"àœM×4Ñ4Ó4ºã!%˜AØ04˜K¨¨!©Ò-ñ"&ð 4ô�{Ó#Ùôñ #Ø×1Ñ1°$Ô7÷c6÷c ñH Ø � ‰ Ø ˜s¨C°u×7LÑ7Lð ô ð €Lùò{ M÷L6Ð5ú÷c ˆúsZÁ9Bi$Ä iÄ$H)i$ÍT8i$âi$âAi$ã1Aiä8 iåCiè i$éi$éi! éi$é$i-c ó^—t|j«|j«|d|||¬«S)z…Merge another topological branch into the working copy. force = whether the merge was run with 'merge --force' (deprecated) T)rÀr•r€r‚r©r$rr()r˜rÀr€rs r&Úmerger'Ès2€ô Ø �‰‹ Ø �‰‹ ØØØØØ ô ðr6c ób—t|j«|j«ddgd¢||¬«S)a³Do a regular update to the given commit, aborting if there are conflicts. The 'updatecheck' argument can be used to control what to do in case of conflicts. Note: This is a new, higher-level update() than the one that used to exist in this module. That function is now called _update(). You can hopefully replace your callers to use this new update(), or clean_update(), merge(), revert_to(), or graft(). F)s working copys destinationsworking copy parent)r•r€rÀrrr&)r˜rrs r&r_r_Ùs2€ô Ø �‰‹ Ø �‰‹ ØØÚHØØ ô ðr6cóZ—t|j«|j«dd|¬«S)z‰Do a clean update to the given commit. This involves updating to the commit and discarding any changes in the working copy. FT)r•r€rr&)r˜rs r&Ú clean_updater*ïs#€ô �3—8‘8“:˜sŸw™w›y°eÀ4ÈBÔ OÐOr6c ó^—t|j«|j«ddd||¬«S)z¤Revert the working copy to the given commit. The working copy will keep its current parent(s) but its content will be the same as in the given commit. FT)r•r€rr:rr&)r˜r:rs r&Ú revert_tor,øs2€ô Ø �‰‹ Ø �‰‹ ØØØØØ ô ðr6c óL—|xs|d}|j«}|xs|j«}|jj|j«|j««xs!|j «|j «k(}t ||j«dd|j«|||¬«} |r| j r|j«} nT|j} |j«} |r6t| «dk(r(|| vr$| j|«| dj«} | |j«k(r |j} |j«r9|j|j«| «tj|||«| S|jj!|«5|j|j«| «|jj#|j%««tj|||«ddd«| S#1swY| SxYw)aIDo a graft-like merge. This is a merge where the merge ancestor is chosen such that one or more changesets are grafted onto the current changeset. In addition to the merge, this fixes up the dirstate to include only a single parent (if keepparent is False) and tries to duplicate any renames/copies appropriately. ctx - changeset to rebase base - merge base, or ctx.p1() if not specified labels - merge labels eg ['local', 'graft'] keepparent - keep second parent if any keepconflictparent - if unresolved, keep parent used for the merge NT)r rÀrròr)r°rúÚ isancestorr2r(r$r¢rárrür¿r*rr Ú graftcopiesr.rr‰r ) rr˜ÚbaserÀÚ keepparentÚkeepconflictparentr1Úpctxr rÚpotherrs r&Úgraftr5 s´€ð@ Ò �4˜‘:€DØ �7‰7‹9€DØ Ò �3—6‘6“8€Dà �‰×!Ñ! $§)¡)£+¨s¯x©x«zÓ:ò $Ø �8‰8‹:˜Ÿ™›Ñ #ðô Ø Ø �‰‹ Ø Ø Ø � ‰ ‹ Ø#ØØ ô €Eñ˜e×3Ò3Ø—‘“‰à—‘ˆØ—+‘+“-ˆÙ œ#˜g›,¨!Ò+°¸±Ø �N‰N˜4Ô Ø˜Q‘Z—_‘_Ó&ˆFà �—‘“ÒØ—‘ˆà ‡�ÔØ �‰˜Ÿ ™ ›  VÔ,ä×ј4  dÔ+ð €Lð �]‰]× +Ñ +¨DÕ 1Ø �O‰O˜DŸI™I›K¨Ô 0Ø �M‰M× Ñ  × 7Ñ 7Ó 9Ô :ä × Ñ ˜t S¨$Ô /÷ 2ð €L÷ 2ð €Lús Æ.A!HÈH#cóΗ|€7|j«�d}tj|«‚|j«}t |j «|dd|j «d¬«S)Ns/must specify parent of merge commit to back outTF)r•r€rVr )r8r ÚProgrammingErrorr°r$rr2)r˜Úparentrr%s r&Úback_outr9V s_€Ø €~Ø �6‰6‹8Ð ØDˆCÜ×(Ñ(¨Ó-Ð -Ø—‘“ˆÜ Ø �‰‹ ØØØØ—‘“Øô  ðr6c ó̇‡—ˆˆfd„} |j} g} |rg} | j|_‰j|||¬«} |rþd}t| j«}t| j «}|r|rt d«}|||fz}nm|rt d«}||z}nZ|rt d«}||z}nG|rEd} D],}||«sŒ ‰jj|«rŒ(|dz }Œ.|rt d «}||z}|€ | | |_S|d z }‰jj|d¬ «dk(rtjt d ««‚|r~t| j | jz«D]Y}|sD‰jjt d «|z«| ‰jj|«| j|«Œ[|rŽt d¬«D]~}||«sŒ ‰jj|«rŒ(|sD‰jjt d«|z«| ‰jj |«| j|«Œ€| | |_S#| |_wxYw)aPurge the working directory of untracked files. ``matcher`` is a matcher configured to scan the working directory - potentially a subset. ``unknown`` controls whether unknown files should be purged. ``ignored`` controls whether ignored files should be purged. ``removeemptydirs`` controls whether empty directories should be removed. ``removefiles`` controls whether files are removed. ``abortonerror`` causes an exception to be raised if an error occurs deleting a file or directory. ``noop`` controls whether to actually remove files. If not defined, actions will be taken. ``confirm`` ask confirmation before actually removing anything. Returns an iterable of relative paths in the working directory that were or would be removed. cóΕ— ||«y#t$rOtd«|z}‰rtj|«‚‰jj td«|z«YywxYw)Ns%s cannot be removeds warning: %s )rwrr rÕrr})Úremovefnr‡r–Ú abortonerrorrs €€r&r¿zpurge..removeŠ sZø€ð 6Ù �T�NøÜò 6ÜÐ)Ó*¨TÑ1ˆAÙÜ—k‘k !“nÐ$à—‘— ‘ œQÐ/Ó0°1Ñ4Ö5ð  6úsƒ ŒAA$Á#A$)r ÚignoredÚunknownNs3permanently delete %d unknown and %d ignored files?s$permanently delete %d unknown files?s$permanently delete %d ignored files?rrs1permanently delete at least %d empty directories?s (yN)$$ &Yes $$ &No)Údefaultsremoval cancelledsremoving file %s T)Úreversesremoving directory %s )Ú traversedirr rµrür>r?rr/Úlistdirrrr Ú CanceledErrorr|r#r Úrmdir)rr:r?r>ÚremoveemptydirsÚ removefilesr=ÚnoopÚconfirmr¿Úoldtraversedirr Ú directoriesrµr%Ú nb_ignoredÚ nb_unknownÚ dir_countr3s` ` r&ÚpurgerOf s=ù€õH6ð×(Ñ(€Nà €Cð7-٠؈KØ"-×"4Ñ"4ˆGÔ à—‘ 7°GÀW�ÓMˆá ؈CܘVŸ^™^Ó,ˆJܘVŸ^™^Ó,ˆJÙ™jÜÐNÓO�ؘ  JÐ/Ñ/‘ÙÜÐ?Ó@�Ø�zÑ!‘ÙÜÐ?Ó@�Ø�zÑ!‘Ù Ø� Û$�AÙ˜q•z¨$¯)©)×*;Ñ*;¸AÕ*>Ø! Q™™ ð%ñÜØLó�Cð˜9Ñ$�C؈{Øð0-ˆÕð-Ð-Ñ-�Ø—7‘7×'Ñ'¨°QÐ'Ó7¸1Ò<Ü×-Ñ-¬aÐ0DÓ.EÓFÐFá ܘFŸN™N¨V¯^©^Ñ;Ö<�ÙØ—G‘G—L‘L¤Ð#8Ó!9¸AÑ!=Ô>Ù˜4Ÿ9™9×+Ñ+¨QÔ/Ø— ‘ ˜1• ð =ñ ܘK°×6�Ù˜1•: d§i¡i×&7Ñ&7¸Õ&:ÙØŸ™Ÿ ™ ¤QÐ'AÓ%BÀQÑ%FÔGÙ˜tŸy™yŸ™°Ô2Ø—J‘J˜q•Mð 7ðð-ˆÕø˜nˆÕús,˜B%IÂ>IÃIÃ>CIÇIÇ8AIÉ I#r:rr))NFNNFTNN)NFNr)NNFFN)TFTTFFF)BrÞÚstructÚi18nrr2rÚ thirdpartyrÚutilsrÚ dirstateutilsrrbr r r r r r/rrrrrrrrrrrÚpackÚ_packÚunpackÚ_unpackr'r5r8r�r—r¯r²rËr×rÙrTrWrmrqr~r•ršrr�rÚréÚUPDATECHECK_ABORTrôrórõr$r'r_r*r,r5r9rOrYr6r&ÚrZsƒðóÛ åÝÝÝÝ$÷÷÷÷ð" � ‰ €Ø �-‰-€òó÷$5ñ5òpLò^òBAòH òD òN ,÷Flñlðró~òB "ð6 ØóGòTò$ òNSòlð:€‡�ˆtÔ÷  ð  óð  ð, óEòP2 ðjÐØÐØÐØ'ÐðØØ Ø ØØØØ ó_óD ó"ó,Póð* Ø ØØØ óIóX ð& Ø ØØØØ Ø ôk-r6