HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/mercurial/upgrade_utils/__pycache__/engine.cpython-310.pyc
o

�]LbvW�@s
ddlmZddlZddlZddlmZddlmZddlm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZddlmZmZmZmZdd	lmZd
d�Zdd
�Zdd�ZdZ dZ!dZ"e#e e!e"g�Z$dd�Z%dd�Z&dd�Z'dd�Z(dd�Z)dd�Z*dd �Z+d!d"�Z,d#d$�Z-dS)%�)�absolute_importN�)�_)�getattr)�	changelog�error�filelog�manifest�metadata�pycompat�requirements�scmutil�store�util�vfs)�	constants�flagutil�nodemap�sidedata�)�actionscCsT|j�dd�}tjp|}|s#|jtjtjtjft	�
||�tjdd�t�
||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�
sequential�r(�@/usr/lib/python3/dist-packages/mercurial/upgrade_utils/engine.pyr"%s
�r"cCs�|tj@rt�|j�S|tj@r(d}d|vr|�dd�d}tj|j|j|d�S|�dd�d�	dd�}t
|�dkrGtd�}||;}t�
|��|d}t�|j|�S)	z]Obtain a revlog from a repo path.

    An instance of the appropriate class is returned.
    ��/rr)�tree�.rs)cannot recognize revlog from filename: %s)r�FILEFLAGS_CHANGELOGr�svfs�FILEFLAGS_MANIFESTLOG�rsplitr	�manifestrevlog�
nodeconstants�split�lenrr�Abortr)�repo�rl_type�path�mandir�	path_part�msgr(r(r)�_revlogfrompath4s 


�
r=c
Cs�t|d|�}t|||�}t|d|�}|j}|j}|�|j�}|�|j�}	|�|j�}
|�|j�}||jd��Wd�n1sAwYt�||	�|j�|j�}|r[t�|
|�|t	j
@rx|jj�
|�|rz|jj�
|dd�d�dSdSdS)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)rr=�opener�join�
_indexfile�	_datafiler�copyfile�existsr�FILEFLAGS_FILELOGr/�fncache�add)
�tr�destrepo�oldrlr8�
unencodedname�newrl�oldvfs�newvfs�oldindex�newindex�olddata�newdata�copydatar(r(r)�_copyrevlogMs,�
�rVs	changelogsmanifestsall-filelogscCs:|tj@r	t|vS|tj@rt|vS|tj@sJ�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)rr.�UPGRADE_CHANGELOGr0�UPGRADE_MANIFESTrG�UPGRADE_FILELOGS)�revlogfilterr8r(r(r)�matchrevlogvs

r[c	Cs�d}	t|j|�r*|�td�t|�|f�t|||�}	|j||	||j|j|d�|	Std�}
|�|
|t|�f�t	|||||�t|||�}	|	S)z%returns the new revlog object createdNscloning %d revisions from %s
)�
addrevisioncb�
deltareuse�forcedeltabothparents�sidedata_helperss+blindly copying %s containing %i revisions
)
r[�revlogs_to_process�noterr5r=�clone�delta_reuse_mode�force_re_delta_both_parentsrV)rr%rJ�
old_revlogr8�	unencoded�
upgrade_opr_�oncopiedrevisionrNr<r(r(r)�_perform_clone�s(���ric'sPd}d}d}d}d}	d}
d}d}d}
d}d}d}d}d}d}d}d}d}t|j���}i}i}i}|D]�\}}}|tj@s>q3d}||vrEq3t|||�}|jddddd�} || dpZd7}| dpad}!| dpgd}"||!7}||"7}|tj@r�||f||<|t|�7}||!7}||"7}q3|tj@r�||f||<|d7}|t|�7}||!7}||"7}q3|tj	@r�||f||<|	d7}	|
t|�7}
||!7}||"7}q3t
�d	�q3|s�d
S|�t
d�||
||f�|�t
d�t�|�t�|�f�d
��fd
d�}#t||�}$|�t
d�|	|
t�|�t�|�f�|jjt
d�|
d��t|���D]"\}\}}%t||||%||||$|#�	}&|&jdd�} |
| d�p=d7}
�q|�t
d�|
|	t�|
|�f�|�t
d�||t�|�t�|�f���rl���|jjt
d�|d��t|���D]"\}\}}%t||||%||||$|#�	}&|&jdd�} || d�p�d7}�q||�t
d�||t�||�f�|�t
d�|t�|�t�|�f���rɈ��|jjt
d�|d��t|���D]"\}\}}%t||||%||||$|#�	}&|&jdd�} || d�p�d7}�qو��|�t
d�|t�||�f�|
||}|�t
d�|t�||�f�d
S)zCopy revlogs between 2 repos.r)sundo.backup.00changelog.isundo.backup.00manifest.iT)�exclusivefiles�revisionscount�trackedsize�
storedsizesrevisionscounts
storedsizestrackedsizersunknown revlog typeNsPmigrating %d total revisions (%d in filelogs, %d in manifests, %d in changelog)
s'migrating %s in store; %s tracked data
cs���dS)N)�	increment)�rl�rev�node��progressr(r)rhsz'_clonerevlogs.<locals>.oncopiedrevisionsMmigrating %d filelogs containing %d revisions (%s in store; %s tracked data)
sfile revisions)�total)rmsOfinished 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�FILEFLAGS_REVLOG_MAINr=�storageinfor.r5r0rGr�ProgrammingError�statusrr�	bytecountr"r�makeprogress�sorted�itemsri�complete)'rr$r%rJrg�revcount�srcsize�
srcrawsize�dstsize�fcount�	frevcount�fsrcsize�frawsize�fdstsize�mcount�	mrevcount�msrcsize�mrawsize�mdstsize�	crevcount�csrcsize�crawsize�cdstsize�alldatafiles�	manifests�
changelogs�filelogsr8rf�size�	skip_undoro�info�datasize�rawsizerhr_rLrNr(rrr)�
_clonerevlogs�s|
�





�
����
��������	���������	������������r�ccs`�t|jjjddd��D]!\}}}t�|�durq|�d�rq|tjkr%q|dvr*q|VqdS)zOyields files which should be copied to destination after revlogs
    are clonedr*T)�statNsundo)slocksfncache)r}rr�readdir�revlog_type�
startswithr��S_IFREG)r$r9�kind�str(r(r)� _files_to_copy_post_revlog_clone�s� 

�r�cCs@|jrt�|j|�d��n|jjddd�t�|j|j�dS)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�spathrBr�rmtree)�currentrepo�upgradedrepo�	backupvfsrgr(r(r)�_replacestores�sr�cCsdS)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.
    Nr()rr$r%rr(r(r)�finishdatamigration�sr�cCs8|��sJ�|��sJ�d}d}|�td��tj|jvr3|�td��t|||dd�|j�tj�tj|jvrO|�td��t|||dd�|j�tj�tj|jvrl|�td��t	|||dd	�|j�tj�ntj|jvr�|�td
��t	|||dd	�|j�tj�|js�|js�dS|j
r�|�td��t�||j
�|St|j�d
kr�d|jvr�|js�|�td��|�d��"}|��}|j}tj||dd�tj||jjjdd�Wd�n1s�wYt�||j
�|St|j�d
k�rDdd�|jD��rD|j�sD|�td��|�d�� }|��}|j}t�|||�t�|||jjj�Wd�n	1�s6wYt�||j
�|S|�d��}t|||||�Wd�n	1�s]wYt|�D]#}	|j�td�|	�|jj�|	�}
|jj�|	�}tj |
|dd��qft!|||t"�|�td��|j#�r�t$j%d|j&d�}t'�(|�}t� |j(�d�|�d��|�td��t�||j"dhB�|�td��|j#�r�|�td�|�|�td��t�)�}t*||||�t�)�|}
|�td �|
�|�td!��t�||j
�|j#�r|du�sJ�|�+d"�|S)#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)rIs"remove dirstate-tracked-hint file
Fs"upgrading repository requirements
r�persistent-nodemaps7upgrading repository to use persistent nodemap feature
supgrade)�forcecSsg|]	}|jdkr|�qS)r�)�name)�.0�xr(r(r)�
<listcomp>s

�zupgrade.<locals>.<listcomp>s=downgrading repository to not use persistent nodemap feature
scopying %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),�currentwlockrzr�upgrade_actions�
dirstatev2�upgrade_dirstate�remove�removed_actions�dirstatetrackedkey�upgrade_tracked_hint�requirements_onlyr
�writereporequirements�new_requirementsr5�upgrade_actions_names�transaction�
unfilteredrr�persist_nodemap�manifestlog�
_rootstorer>�delete_nodemapr�r�rr�rawvfsrBrrEr�rr�r�mkdtempr9�vfsmodr�timerr��unlink)rr$r%rg�
backuppathr�rJ�unfi�cl�p�src�dst�tstart�elapsedr(r(r)�upgrade�s�
���
����k�������V���
�
����
����
��
r�c
CsJ|jrQtjd|jd�}|�td�|�t�|�}t�	|j�
d�|�
d��zt�	|j�
d�|�
d��WnttfyP}z
|j
t
jkrF�WYd}~nd}~ww|jj|dkks[J�|jj��|dk|j_|jj|jj_d|j_z|j�d�Wnttfy�}z
|j
t
jkr��WYd}~nd}~ww|j�d�t�||j�dS)Nr�r�r�r�sdirstater�T)r�rr�r9rzrr�rrrErB�IOError�OSError�errno�ENOENT�dirstate�_use_dirstate_v2�_map�preload�_dirtyr��writer
r�r�)rr$rg�old�newr�r��er(r(r)r�|sD�
��������r�cCsH|rd|j_d|j_d|j_|j�d�|s|j��t�||j�dS)NT)	r��_use_tracked_hintr��_dirty_tracked_setr��delete_tracked_hintr
r�r�)rr$rgrIr(r(r)r��s
r�).�
__future__rr�r��i18nrrr�rrrr	r
rr
rrrr��revlogutilsrrrrrrrr�r"r=rVrWrXrY�	frozenset�UPGRADE_ALL_REVLOGSr[rir�r�r�r�r�r�r�r(r(r(r)�<module>s84
 �#o4&