Ë CÔr`Fÿ$ãóÔ—ddlZddlmZddlmZddlmZmZmZmZm Z m Z m Z m Z ddlmZmZmZmZddlmZd „Zd „Zd Zd Zd Zeeeeg«Zd„Zd„Zd„Z d„Z!d„Z"d„Z#d„Z$d„Z%d„Z&y)éNé)Ú_)Úgetattr)ÚerrorÚmetadataÚpycompatÚ requirementsÚscmutilÚstoreÚutilÚvfs)Ú constantsÚflagutilÚnodemapÚsidedataé)Úactionsc óp—|jjdd«}tjxs| }|sd|j t j tjtjftj||«tjd¬«tj||j«S)Ns experimentalsworker.repository-upgradeT)Úreplace)ÚuiÚ configboolrÚ iswindowsÚregister_sidedata_computerÚ revlogconstÚKIND_CHANGELOGÚ sidedatamodÚSD_FILESrÚ_get_worker_sidedata_adderrÚREVIDX_HASCOPIESINFOÚget_sidedata_helpersÚ_wanted_sidedata)ÚsrcrepoÚdstrepoÚuse_wÚ sequentials úBusr/lib/python3.12/site-packages/mercurial/upgrade_utils/engine.pyr r s–€Ø �J‰J× !Ñ ! /Ð3OÓ P€EÜ×#Ñ#Ò0¨5 y€JÙ Ø×*Ñ*Ü × &Ñ &Ü × Ñ Ü × !Ñ !Ð #Ü × /Ñ /°¸Ó AÜ × )Ñ )Øð +ô ô × +Ñ +¨G°W×5MÑ5MÓ NÐNócó:—t|d|«}|j|«}t|d|«}|j}|j}|j|j«}|j|j«}|j|j «} |j|j «} ||jd«5 ddd«t j||«|jj|j «} | rt j| | «|jrd|j«} |jjj| «| r,|jjj| dddz«yyy#1swYŒÍxYw)a copy all relevant files for `oldrl` into `destrepo` store Files are copied "as is" without any transformation. The copy is performed without extra checks. Callers are responsible for making sure the copied content is compatible with format of the destination repository. Ú_revlogówNéþÿÿÿs.d)rÚget_revlog_instanceÚopenerÚjoinÚ _indexfileÚ _datafiler ÚcopyfileÚexistsÚ is_filelogÚmain_file_pathÚsvfsÚfncacheÚadd) ÚtrÚdestrepoÚoldrlÚentryÚnewrlÚoldvfsÚnewvfsÚoldindexÚnewindexÚolddataÚnewdataÚcopydataÚ unencodednames r&Ú _copyrevlogrE/sH€ô �E˜9 eÓ ,€EØ × %Ñ % hÓ /€EÜ �E˜9 eÓ ,€Eà �\‰\€FØ �\‰\€FØ�{‰{˜5×+Ñ+Ó,€HØ�{‰{˜5×+Ñ+Ó,€HØ�k‰k˜%Ÿ/™/Ó*€GØ�k‰k˜%Ÿ/™/Ó*€Gá �× Ñ  $Õ 'Ø ÷ (ô ‡M�M�(˜HÔ%Ø�|‰|×"Ñ" 5§?¡?Ó3€HÙÜ � ‰ �g˜wÔ'à ×ÒØ×,Ñ,Ó.ˆ Ø� ‰ ×Ñ×!Ñ! -Ô0Ù Ø �M‰M× !Ñ !× %Ñ % m°C°RÐ&8¸5Ñ&@Õ Að ð÷ (Ð 'ús ÃFÆFs changelogsmanifests all-filelogscó~—|jrt|vS|jrt|vS|jsJ‚t |vS)zÐcheck if a revlog is selected for cloning. In other words, are there any updates which need to be done on revlog or it can be blindly copied. The store entry is checked against the passed filter)Ú is_changelogÚUPGRADE_CHANGELOGÚis_manifestlogÚUPGRADE_MANIFESTr3ÚUPGRADE_FILELOGS)Ú revlogfilterr;s r&Ú matchrevlogrMYsF€ð ×ÒÜ  LÐ0Ð0Ø × Ò Ü <Ð/Ð/Ø × Ò ÐÐ Ü ˜|Ð +Ð+r'có´—d}|j«} t|j|«rf|jt d«t |«| fz«|j |«}|j||||j|j|¬«|St d«} |j| | t |«fz«t||||«|j |«}|S)z%returns the new revlog object createdNscloning %d revisions from %s )Ú addrevisioncbÚ deltareuseÚforcedeltabothparentsÚsidedata_helperss+blindly copying %s containing %i revisions ) r4rMÚrevlogs_to_processÚnoterÚlenr,ÚcloneÚdelta_reuse_modeÚforce_re_delta_both_parentsrE) rr#r8Ú old_revlogr;Ú upgrade_oprRÚoncopiedrevisionr<Ú revlog_pathÚmsgs r&Ú_perform_cloner^hsá€ð €EØ×&Ñ&Ó(€KÜ�:×0Ñ0°%Ô8Ø �‰Ü Ð/Ó 0Ü�:‹  Ð,ñ -ô ð×)Ñ)¨'Ó2ˆØ×ÑØ Ø Ø*Ø!×2Ñ2Ø",×"HÑ"HØ-ð ô ð €Lô Ð?Ó@ˆØ �‰��{¤C¨ £OÐ4Ñ4Ô5Ü�B˜ ¨UÔ3à×)Ñ)¨'Ó2ˆØ €Lr'c óÔ ‡%—d}d}d}d}d} d} d} d} d} d}d}d}d}d}d}d}d}d}t|jj««}i}i}i}|D�]}|jsŒ|j |«}|j dddd¬«}||dxsdz }|dxsd}|dxsd}||z }||z }|j r(|||j<|t|«z }||z }||z }Œ“|jr-|||j<|dz }|t|«z }||z }||z }ŒÌ|jr.|||j<| dz } | t|«z } | |z } | |z } �Œtjd«�Œ|sy |jtd «|| ||fz«|jtd «tj |«tj |«fz«d Š%ˆ%fd „} t#||«}!|jtd «| | tj | «tj | «fz«|j$j'td«| ¬«Š%t)|j+««D]F\}"}|j |«}#t-||||#|||!| «}$|$j d¬«}| |dxsdz } ŒH|jtd«| | tj | | z «fz«|jtd«||tj |«tj |«fz«‰%r‰%j/«|j$j'td«|¬«Š%t)|j+««D]F\}"}|j |«}#t-||||#|||!| «}$|$j d¬«}||dxsdz }ŒH|jtd«||tj ||z «fz«|jtd«|tj |«tj |«fz«‰%r‰%j/«|j$j'td«|¬«Š%t)|j+««D]F\}"}|j |«}#t-||||#|||!| «}$|$j d¬«}||dxsdz }ŒH‰%j/«|jtd«|tj ||z «fz«| |z|z}|jtd«|tj ||z «fz«y )zCopy revlogs between 2 repos.rT)ÚexclusivefilesÚrevisionscountÚ trackedsizeÚ storedsizesrevisionscounts storedsizes trackedsizersunknown revlog typeNsPmigrating %d total revisions (%d in filelogs, %d in manifests, %d in changelog) s'migrating %s in store; %s tracked data có&•—‰j«y)N)Ú increment)ÚrlÚrevÚnodeÚprogresss €r&r[z'_clonerevlogs..oncopiedrevisionìsø€Ø×ÑÕr'sMmigrating %d filelogs containing %d revisions (%s in store; %s tracked data) sfile revisions)Útotal)rcsOfinished migrating %d filelog revisions across %d filelogs; change in size: %s sNmigrating %d manifests containing %d revisions (%s in store; %s tracked data) smanifest revisionssQfinished migrating %d manifest revisions across %d manifests; change in size: %s sKmigrating changelog containing %d revisions (%s in store; %s tracked data) schangelog revisionss>finished migrating %d changelog revisions; change in size: %s sFfinished migrating %d total revisions; total change in store size: %s )Úlistr ÚwalkÚ is_revlogr,Ú storageinforGÚ target_idrUrIr3rÚProgrammingErrorÚstatusrr Ú bytecountr rÚ makeprogressÚsortedÚitemsr^Úcomplete)&rr"r#r8rZÚrevcountÚsrcsizeÚ srcrawsizeÚdstsizeÚfcountÚ frevcountÚfsrcsizeÚfrawsizeÚfdstsizeÚmcountÚ mrevcountÚmsrcsizeÚmrawsizeÚmdstsizeÚ crevcountÚcsrcsizeÚcrawsizeÚcdstsizeÚ alldatafilesÚ manifestsÚ changelogsÚfilelogsr;rfÚinfoÚdatasizeÚrawsizer[rRror:r<ris& @r&Ú _clonerevlogsr�Œs+ø€ð€HØ€GØ€JØ€GØ €FØ€IØ€HØ€HØ€HØ €FØ€IØ€HØ€HØ€HØ€IØ€HØ€HØ€H䘟 ™ ×*Ñ*Ó,Ó-€Lð€IØ€JØ€HôˆØ�ŠØ à × &Ñ & wÓ /ˆà�~‰~ØØØØð ó ˆð �DÐ*Ñ+Ò0¨qÑ0ˆØ˜ Ñ&Ò+¨!ˆØ�~Ñ&Ò+¨!ˆà�8шØ�gш ð × Ò Ø*/ˆJ�u—‘Ñ 'Ø œ˜R›Ñ ˆIØ ˜Ñ ˆHØ ˜Ñ ‰HØ × !Ò !Ø).ˆI�e—o‘oÑ &Ø �a‰KˆFØ œ˜R›Ñ ˆIØ ˜Ñ ˆHØ ˜Ñ ‰HØ × Ò Ø(-ˆH�U—_‘_Ñ %Ø �a‰KˆFØ œ˜R›Ñ ˆIØ ˜Ñ ˆHØ ˜Ñ ŠHä × "Ñ "Ð#9Ö :ðOñR Øà‡I�IÜ ð "ó ð �Y  ¨9Ð 5ñ  6ôð‡I�IÜ Ð 5Ó6Ü �N‰N˜7Ó #¤T§^¡^°JÓ%?Ð @ñ Bôð €Hôô,¨G°WÓ=Ðð‡I�IÜ ð 0ó ð Ø Ü �N‰N˜8Ó $Ü �N‰N˜8Ó $ð  ñ ô ð�z‰z×&Ñ&¤qÐ):Ó';À9Ð&ÓM€HÜ" 8§>¡>Ó#3Ö4ш �5Ø×)Ñ)¨'Ó2ˆäØ Ø Ø Ø Ø Ø Ø Ø ó  ˆð× Ñ ¨DÐ Ó1ˆØ�D˜Ñ'Ò,¨1Ñ,‰ð5ð‡I�IÜ ð .ó ð �fœdŸn™n¨X¸Ñ-@ÓAÐ Bñ  Côð‡I�IÜ ð 0ó ð Ø Ü �N‰N˜8Ó $Ü �N‰N˜8Ó $ð  ñ ô ñØ×ÑÔØ�z‰z×&Ñ&Ü Ð Ó ¨ ð'ó€Hô# 9§?¡?Ó#4Ö5ш �5Ø×)Ñ)¨'Ó2ˆÜØ Ø Ø Ø Ø Ø Ø Ø ó  ˆð× Ñ ¨DÐ Ó1ˆØ�D˜Ñ'Ò,¨1Ñ,‰ð6ð‡I�IÜ ð /ó ð �fœdŸn™n¨X¸Ñ-@ÓAÐ Bñ  Côð‡I�IÜ ð 0ó ð Ü �N‰N˜8Ó $Ü �N‰N˜8Ó $ð ñ  ô ñØ×ÑÔØ�z‰z×&Ñ&Ü Ð Ó!¨ð'ó€Hô# :×#3Ñ#3Ó#5Ö6ш �5Ø×)Ñ)¨'Ó2ˆÜØ Ø Ø Ø Ø Ø Ø Ø ó  ˆð× Ñ ¨DÐ Ó1ˆØ�D˜Ñ'Ò,¨1Ñ,‰ð7ð ×ÑÔØ‡I�IÜ ð ó ð ”d—n‘n X°Ñ%8Ó9Ð :ñ  ;ôð˜Ñ! HÑ,€G؇I�IÜ ð ó ð ”T—^‘^ G¨gÑ$5Ó6Ð 7ñ  8õr'c#óK—t|jjjdd¬««D]K\}}}tj|«rŒ|j d«rŒ/|t jk7rŒC|dvrŒH|–—ŒMy­w)zOyields files which should be copied to destination after revlogs are clonedr'T)Ústatsundo)slocksfncacheN)rtr r ÚreaddirÚis_revlog_fileÚ startswithr’ÚS_IFREG)r"ÚpathÚkindÚsts r&Ú _files_to_copy_post_revlog_cloneršpszèø€ô! §¡×!2Ñ!2×!:Ñ!:¸3ÀTÐ!:Ó!JÖK‰ˆˆd�Bä × Ñ  Ô %Ø à �?‰?˜7Ô #Ø à ”4—<‘<Ò Ø à Ð(Ñ (Ø ð‹ ñLùs‚BBcó —|jr0tj|j|j d««n|j j dd¬«tj|j|j«y)aÒReplace the stores after current repository is upgraded Creates a backup of current repository store at backup path Replaces upgraded store files in current repo from upgraded one Arguments: currentrepo: repo object of current repository upgradedrepo: repo object of the upgraded data backupvfs: vfs object for the backup path upgrade_op: upgrade operation object to be used to decide what all is upgraded sstoreT)ÚforciblyN)Ú backup_storer ÚrenameÚspathr.r Úrmtree)Ú currentrepoÚ upgradedrepoÚ backupvfsrZs r&Ú_replacestoresr¤…s[€ð×ÒÜ � ‰ �K×%Ñ% y§~¡~°hÓ'?Õ@à�‰×јx°$ÐÔ7܇K�K� ×"Ñ" K×$5Ñ$5Õ6r'có—y)zÜHook point for extensions to perform additional actions during upgrade. This function is called after revlogs and store files have been copied but before the new store is swapped into the original location. N©)rr"r#r s r&Úfinishdatamigrationr§›s�r'có„—|j«sJ‚|j«sJ‚d}d}|jtd««tj|jvrR|jtd««t |||dd«|jj tj«tj|jvrR|jtd««t |||dd«|jj tj«tj|jvrS|jtd««t|||d¬ «|jj tj«nntj|jvrR|jtd ««t|||d ¬ «|jj tj«|js |jsy|jr<|jtd ««tj||j«|St|j«d k(rÚd|jvrÌ|jsÀ|jtd««|j!d«5}|j#«}|j$}t'j(||d¬«t'j(||j*j,j.d¬«ddd«tj||j«|St|j«d k(ró|jD� cgc]} | j0dk(r| ‘Œc} rÊ|js¾|jtd««|j!d«5}|j#«}|j$}t'j2|||«t'j2|||j*j,j.«ddd«tj||j«|S|j!d«5}t5|||||«ddd«t7|«D]‹} |j8jtd«| z«|j:j<j?| «} |j:j<j?| «} tAjB| | d¬«Œ�tE|||tF«|jtd««|jHrttKjLd|jN¬«}tQjR|«}tAjB|jRj?d«|j?d««|jtd««tj||jFdhz«|jtd««|jHr|jtd«|z«|jtd««tAjT«} tW||||«tAjT«| z }|jtd«|z«|jtd««tj||j«|jHr|€J‚|jYd «|S#1swY�ŒóxYwcc} w#1swY�ŒúxYw#1swY�Œ¼xYw)!ayDo the low-level work of upgrading a repository. The upgrade is effectively performed as a copy between a source repository and a temporary destination repository. The source repository is unmodified for as long as possible so the upgrade can abort at any time without causing loss of service for readers and without corrupting the source repository. NsP(it is safe to interrupt this process any time before data migration completes) s!upgrading to dirstate-v2 from v1 sv1óv2s#downgrading from dirstate-v2 to v1 s"create dirstate-tracked-hint file T)r7s"remove dirstate-tracked-hint file Fs"upgrading repository requirements rspersistent-nodemaps7upgrading repository to use persistent nodemap feature supgrade)Úforces=downgrading repository to not use persistent nodemap feature s copying %s )Úcopystats.data fully upgraded in a temporary repository óupgradebackup.©ÚprefixÚdirórequiress\marking source repository as being upgraded; clients will be unable to read from repository supgradeinprogresss*starting in-place swap of repository data ó'replaced files will be backed up at %s sreplacing store... sCstore replacement complete; repository was inconsistent for %0.1fs sBfinalizing requirements file and making repository readable again s store/lock)-Ú currentwlockrqrÚupgrade_actionsÚ dirstatev2Úupgrade_dirstateÚremoveÚremoved_actionsÚdirstatetrackedkeyÚupgrade_tracked_hintÚrequirements_onlyr ÚwritereporequirementsÚnew_requirementsrUÚupgrade_actions_namesÚ transactionÚ unfilteredÚ changelogrÚpersist_nodemapÚ manifestlogÚ _rootstorer)ÚnameÚdelete_nodemapr�ršrr Úrawvfsr.r r1r§r r�rÚmkdtempr—Úvfsmodr Útimerr¤Úunlink)rr"r#rZÚ backuppathr£r8ÚunfiÚclÚxÚpÚsrcÚdstÚtstartÚelapseds r&ÚupgraderÔ£s€ð × Ñ Ô !Ð!Ð !Ø × Ñ Ô !Ð!Ð !Ø€JØ€Ià‡I�IÜ ð +ó ôô×!Ñ! Z×%?Ñ%?Ñ?Ø � ‰ ”!Ð9Ó:Ô;ܘ˜W j°%¸Ô?Ø×"Ñ"×)Ñ)¬/×*DÑ*DÔEä×!Ñ! Z×%?Ñ%?Ñ?Ø � ‰ ”!Ð;Ó<Ô=ܘ˜W j°%¸Ô?Ø×"Ñ"×)Ñ)¬/×*DÑ*DÔEä×)Ñ)¨Z×-GÑ-GÑGØ � ‰ ”!Ð:Ó;Ô<ܘR ¨*¸$Õ?Ø×"Ñ"×)Ñ)¬/×*LÑ*LÕMÜ × +Ñ +¨z×/IÑ/IÑ IØ � ‰ ”!Ð:Ó;Ô<ܘR ¨*¸%Õ@Ø×"Ñ"×)Ñ)¬/×*LÑ*LÔMà × &Ò &¨*×*DÒ*DØà×#Ò#Ø � ‰ ”!Ð:Ó;Ô<Ü×%Ñ% g¨z×/JÑ/JÔKðD Ðô{ ˆJ× &Ñ &Ó'¨1Ò,Ø ! Z×%EÑ%EÑ EØ×*Ò*à � ‰ Ü ÐIÓ Jô ð× Ñ  Ô ,°Ø×%Ñ%Ó'ˆDØ—‘ˆBÜ × #Ñ # B¨°$Õ 7ô × #Ñ #Ø�D×$Ñ$×/Ñ/×7Ñ7¸tõ ÷-ô ×%Ñ% g¨z×/JÑ/JÔKðV ÐôS ˆJ× &Ñ &Ó'¨1Ò,ð ×/Ò/ó á/�Ø�v‰vÐ.Ò.ò Ø/ò ð ×*Ò*à � ‰ Ü ÐOÓ Pô ð× Ñ  Ô ,°Ø×%Ñ%Ó'ˆDØ—‘ˆBÜ × "Ñ " 2 w°Ô 3ä × "Ñ "Ø�G˜T×-Ñ-×8Ñ8×@Ñ@ô ÷ -ô ×%Ñ% g¨z×/JÑ/JÔKðl Ðði× Ñ  Ô ,°Ü ØØØØØô  ÷-ô2°'Ö:ˆAØ �J‰J× Ñ œa Ó0°1Ñ4Ô 5Ø—-‘-×&Ñ&×+Ñ+¨AÓ.ˆCØ—-‘-×&Ñ&×+Ñ+¨AÓ.ˆCÜ �M‰M˜#˜s¨TÖ 2ð ;ô ˜B ¨´,Ô?à � ‰ ”!ÐFÓGÔHà × "Ò "Ü!×)Ñ)Ø(¨g¯l©lôˆJôŸ ™  :Ó.ˆIô �M‰MØ— ‘ × Ñ  Ó-¨y¯~©~¸kÓ/Jô ð � ‰ Ü ð4ó ô ô ×%Ñ%Ø �W×)Ñ)Ð-AÐ,BÑBô ð � ‰ ”!ÐBÓCÔDØ × "Ò "Ø �I‰IÜÐ=Ó>ÀÑKô ð � ‰ ”!Ð+Ó,Ô-Ü—‘“ˆÜ�w ¨°JÔ?Ü—*‘*“, Ñ'ˆØ � ‰ Ü ðó ðñ  ô ð � ‰ Ü ðó ô ô ×%Ñ% g¨z×/JÑ/JÔKà × "Ò "ð Ð(Ð (Ð(Ø × Ñ ˜]Ô +à Ð÷m-Ñ ,üò ÷-Ñ ,ú÷-Ñ ,ús,Ê:A+\Í5\#ÏA)\(Ñ+\5Ü\ Ü(\2Ü5\?cóú—|jrÐtjd|j¬«}|j t d«|z«t j|«}tj|jjd«|jd«« tj|jjd«|jd««|jj|dk(k(sJ‚|dk(}|r tj||j «|jj"j%«||j_ ||jj"_ d|j_ |jj)d«|jj+d«|s!tj||j «yy#t$rY�Œ wxYw#t$rYŒZwxYw)Nr¬r­r±r°sdirstater©T)r�rrÇr—rqrrÈr r r1r.ÚFileNotFoundErrorÚdirstateÚ_use_dirstate_v2r r»r¼Ú_mapÚpreloadÚ_dirtyrÊÚwrite)rr"rZÚoldÚnewrËr£Úuse_v2s r&rµrµVs¢€Ø×ÒÜ×%Ñ%Ø$¨'¯,©,ô ˆ ð � ‰ ”!Ð?Ó@À:ÑMÔNÜ—J‘J˜zÓ*ˆ Ü � ‰ Ø �K‰K× Ñ ˜[Ó )¨9¯>©>¸+Ó+Fô ð Ü �M‰MØ— ‘ × Ñ  Ó-¨y¯~©~¸kÓ/Jô ð × Ñ × ,Ñ ,°¸±Ò >Ð>Ð >Ø �E‰\€FÙ ä×%Ñ% g¨z×/JÑ/JÔKà ×Ñ×Ñ×!Ñ!Ô#Ø(.€G×ÑÔ%Ø-3€G×Ñ×ÑÔ*Ø"€G×ÑÔð Ø� ‰ ×ј;Ô'ð  ×Ñ×ј4Ô Ù ä×%Ñ% g¨z×/JÑ/JÕKð øô/!ò ò ð ûô" ò ñ ð ús$Â>GÆG.Ç G+Ç*G+Ç. G:Ç9G:có—|rNd|j_d|j_d|j_|jj d«|s|jj «t j||j«y)NT) r×Ú_use_tracked_hintrÛÚ_dirty_tracked_setrÜÚdelete_tracked_hintr r»r¼)rr"rZr7s r&r¹r¹€sn€Ù Ø-1ˆ×ÑÔ*Ø"&ˆ×ÑÔØ.2ˆ×ÑÔ+Ø×Ñ×јtÔ$Ù Ø×Ñ×,Ñ,Ô.ä ×!Ñ! '¨:×+FÑ+FÕGr')'r’Úi18nrrrÚrrr r r r r rÈÚ revlogutilsrrrrrrrr³r rErHrJrKÚ frozensetÚUPGRADE_ALL_REVLOGSrMr^r�ršr¤r§rÔrµr¹r¦r'r&Úrés›ðó åÝ÷ ÷ ó ÷óõ )ò OòBðB!ÐØÐØ"ÐáØÐ(Ð*:Ð;óÐò ,ò!òHaòHò*7ò,òpòf'LóT Hr'