403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /lib64/python3.9/site-packages/mercurial/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /lib64/python3.9/site-packages/mercurial/__pycache__/changegroup.cpython-39.opt-1.pyc
a

�+�b��@s2ddlmZddlZddlZddlZddlmZddlmZm	Z	m
Z
ddlmZddl
mZmZmZmZmZmZmZmZddlmZdd	lmZdd
lmZddlmZe�d�Z e�d
�Z!e�d�Z"e�d�Z#dZ$ej%Z%dd�Z&dd�Z'dd�Z(dd�Z)dOdd�Z*Gdd�de+�Z,Gdd�de,�Z-Gdd �d e-�Z.Gd!d"�d"e.�Z/Gd#d$�d$e+�Z0d%d&�Z1d'd(�Z2d)d*�Z3dPd,d-�Z4Gd.d/�d/e+�Z5dQd0d1�Z6dRd2d3�Z7dSd4d5�Z8dTd6d7�Z9e6e,fe7e-fe8e.fe9e/fd8�Z:d9d:�Z;d;d<�Z<d=d>�Z=d?d@�Z>dAdB�Z?dUdCdD�Z@dVdEdF�ZAdGdH�ZBdWdIdJ�ZCdXdKdL�ZDdYdMdN�ZEdS)Z�)�absolute_importN�)�_)�hex�nullrev�short)�open)�error�match�mdiff�phases�pycompat�requirements�scmutil�util)�
repository)�sidedata)�	constants)�storageutils20s20s20s20ss20s20s20s20s20ss>20s20s20s20s20sHs>B20s20s20s20s20sHslfscCsJt|d�}t�d|�d}|dkr<|r8t�td�|��dSt||d�S)z-return the next chunk from stream as a string��>lr�invalid chunk length %d�)�readexactly�struct�unpackr	�Abortr)�stream�d�l�r �;/usr/lib64/python3.9/site-packages/mercurial/changegroup.py�getchunk0s
r"cCst�d|d�S)z*return a changegroup chunk header (string)rr�r�pack)�lengthr r r!�chunkheader;sr&cCst�dd�S)zBreturn a changegroup chunk header (string) for a zero-length chunkrrr#r r r r!�
closechunk@sr'cCstt|��|S)z3Obtain a changegroup chunk header for a named path.)r&�len)�pathr r r!�_fileheaderEsr*c	Csd}d}z�|r.|r |�|d�}qLt|dd�}ntjddd�\}}t�|d�}|}|D]}|�|�qTd}|W|dur||��|dur�|r�|r�|�|�St�|�S|dur�|r�|r�|�|�n
t�|�n>|dur�|��|du�r|�r�|�r�|�|�n
t�|�0dS)z�Write chunks to a file and return its filename.

    The stream is assumed to be a bundle file.
    Existing files will not be overwritten.
    If no filename is specified, a temporary file is created.
    Nswbis
hg-bundle-s.hg)�prefix�suffix�wb)rr
Zmkstemp�os�fdopen�write�close�unlink)�ui�chunks�filenameZvfs�fhZcleanup�fd�cr r r!�writechunksJsB
��
r9c@s�eZdZdZeZejZdZdZ	d%dd�Z
dd�Zd	d
�Zdd�Z
d
d�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd&dd �Zejddfd!d"�Zd#d$�ZdS)'�cg1unpackera�Unpacker for cg1 changegroup streams.

    A changegroup unpacker handles the framing of the revision data in
    the wire format. Most consumers will want to use the apply()
    method to add the changes from the changegroup to a repository.

    If you're forwarding a changegroup unmodified to another consumer,
    use getchunks(), which returns an iterator of changegroup
    chunks. This is mostly useful for cases where you need to know the
    data stream has ended by observing the end of the changegroup.

    deltachunk() is useful only if you're applying delta data. Most
    consumers should prefer apply() instead.

    A few other public methods exist. Those are used only for
    bundlerepo and some debug commands - their use is discouraged.
    �01rNcCsh|durd}|tjjvr*t�td�|��|dkr6d}tj�|�}|�|�|_||_	|pZi|_
d|_dS)N�UNs#unknown stream compression type: %ssBZs_truncatedBZ)rZcompenginesZsupportedbundletypesr	rrZ
forbundletypeZdecompressorreader�_stream�_type�extras�callback)�selfr6�algr?Z
compenginer r r!�__init__�s
zcg1unpacker.__init__cCs|jduo|jdkS)Nr<)r>�rAr r r!�
compressed�szcg1unpacker.compressedcCs|j�|�S�N)r=�read)rArr r r!rG�szcg1unpacker.readcCs|j�|�SrF)r=�seek)rA�posr r r!rH�szcg1unpacker.seekcCs
|j��SrF)r=�tellrDr r r!rJ�szcg1unpacker.tellcCs
|j��SrF)r=r1rDr r r!r1�szcg1unpacker.closecCsTt|jd�}t�d|�d}|dkr>|r:t�td�|��dS|jrL|��|dS)Nrrrr)rr=rrr	rrr@)rArrr r r!�_chunklength�szcg1unpacker._chunklengthcCsiS)z*v10 does not have a changelog header chunkr rDr r r!�changelogheader�szcg1unpacker.changelogheadercCsiS)z)v10 does not have a manifest header chunkr rDr r r!�manifestheader�szcg1unpacker.manifestheadercCs$|��}|siSt|j|�}d|iS)zBreturn the header of the filelogs chunk, v10 only has the filename�filename)rKrr=)rAr�fnamer r r!�
filelogheader�s
zcg1unpacker.filelogheaderc
Cs8|\}}}}|dur|}n|}d}d}	|||||||	fS�Nrr )
rA�headertuple�prevnode�node�p1�p2�cs�	deltabase�flags�protocol_flagsr r r!�_deltaheader�szcg1unpacker._deltaheaderc
	Csp|��}|siSt|j|j�}|j�|�}t|j||j�}|�||�}|\}}}}	}
}}||||
|	||i|f	SrF)rKrr=�deltaheadersize�deltaheaderrr[)
rArSrZ
headerdata�header�deltarTrUrVrXrWrYrZr r r!�
deltachunk�szcg1unpacker.deltachunkccs�d}|d|jkr�d}t|�}|sB|dkr4|d7}q�|r�|d7}q�d}tt|��Vd}|t|�kr|d}|||�V|}qXqt�VqdS)a"returns all the chunks contains in the bundle

        Used when you need to forward the binary stream to a file or another
        network API. To do so, it parse the changegroup data, otherwise it will
        block in case of sshrepo because it don't know the end of the stream.
        r�TrFiN)�_grouplistcountr"r&r(r')rA�partsZ	noentries�chunkrI�nextr r r!�	getchunks�s$
zcg1unpacker.getchunkscCsH|j|_|��|��}|j�d�}|j||||d�|��d|_dS)Nr��
addrevisioncb)�	incrementr@rM�	deltaiter�manifestlog�
getstorage�addgroup�complete)rA�repo�revmap�trp�progrh�deltasZstorager r r!�_unpackmanifestsszcg1unpacker._unpackmanifestsc(	s�����tj�jvs tj�jvo0|jdko0|dk}|rNtj�|pDt�dd�}	nd}	��fdd�}
�fdd	�}�z&|j�	d
|�}|j�	d|��j
d4d
dit�|j����j
���|�t�����t�|�}�j�td��t����jjtd�td�|d�}
|
j|_t��g���fdd�}��fdd�}|��|��}�j||
|d||d��sf�jjddd�t��}t��}|�}|
��~d�d|_i�
i�	�j�td���jjtd�td�|d�}
d}|	�r�tj|	dv�r�
fdd�}|j �|||
|d�i}�j�!d d!��rt�j
��j"}t�#�|�D]H}��$|�j%}||�&�}t�'|�D]\}}|�	|t���(|��qP�q*d}|	�r�tj)|	dv�r��	fd"d#�}�j�td$��t*�||||||d�\}}|	�r>tj+|	dv�r��,||	�|d��
�-�D]\}\} }!|�,||	| |!��q��	�-�D]\}"\} }!|"�,||	| |!��q|j.�	d%d&�|j.�	d'd&�|j.�	d(d&�|j.�	d)d&��jj/�s�|j.d%|7<|j.d'|7<|j.d(|7<d&}#��r���}$|#t|$�t��7}#|$D]&}%|%�v�r�|%�0��r�|#d8}#�q�jj/�s$|j.d)|#7<��1�|d&k�r�d*|jv�rzt2��3���|jd*<t2��3|d��|jd+<t4|j��n2t4|j��t2��3����d*<t2��3|d���d+<�j
d5d
dit�����t�#�|��d}&|d-v�r��5��r�t6j7}}&n
t6j8}}&��rt6�9�||��|&du�rN��r2��:��n��t6j;�||&g�d.�g�|d&k�r�������fd/d0��|�<d1���fd2d3��W�j�=�n�j�=�0|#d&k�r�|#d}'n|#d}'|'S)6a?Add the changegroup returned by source.read() to this repo.
        srctype is a string like 'push', 'pull', or 'unbundle'.  url is
        the URL of the repo where this changegroup is coming from.

        Return an integer summarizing the change to this repo:
        - nothing changed or no source: 0
        - more heads than before: 1+added heads (2..n)
        - fewer heads than before: -1-removed heads (-2..-n)
        - number of heads stays the same: 1

        `sidedata_categories` is an optional set of the remote's sidedata wanted
        categories.
        �04spullT)ZpullNcs�j�dt|��t��S)Nsadd changeset %s
)r3�debugrr(��x��clror r!�csmap;sz cg1unpacker.apply.<locals>.csmapcs
��|�SrF��revrw�rzr r!rp?sz!cg1unpacker.apply.<locals>.revmapssourcesurl�prechangegroup�throwsadding changesets
�
changesets�chunks�Zunit�totalcs|�kr��|�dSrF)�append)rzr})�clstart�duprevsr r!�ondupchangelog_sz)cg1unpacker.apply.<locals>.ondupchangelogcs&|�|�}��|j���||�dSrF)�changelogrevision�update�filesZregister_changeset)rzr}�ctx)�	efilessetror r!�onchangelogcs
z&cg1unpacker.apply.<locals>.onchangelog)ZalwayscacherhZduplicaterevisioncbs(applied empty changelog from changegroupswarn-empty-changegroup)�configsadding manifests
�	manifestsrcs0��|�}|s||f�|<n|d|f�|<dSrQ��get)�manifestr}�range)�touched_manifestsr r!�on_manifest_rev�s
z*cg1unpacker.apply.<locals>.on_manifest_revrgsserversvalidatecs0��|�}|s||f�|<n|d|f�|<dSrQr�)Zfilelogr}r�)�touched_filelogsr r!�on_filelog_rev�s
z)cg1unpacker.apply.<locals>.on_filelog_revsadding file changes
schangegroup-count-changesetsrschangegroup-count-revisionsschangegroup-count-filesschangegroup-count-heads�node�	node_last�pretxnchangegroup)spushsserve)�revsc	s��t��krdS�jd
it������D]:}���}t��|��|d<|d=�jdit�|���q*�fdd����D�}�j�	ddt��d�
d	d�|D���dS)N�changegroupr�r��incomingcsg|]}|�vr|�qSr r )�.0�h)�oldheadsr r!�
<listcomp>/rz7cg1unpacker.apply.<locals>.runhooks.<locals>.<listcomp>s$%d incoming changes - new heads: %s
s, cSsg|]}t|dd���qS)N�)r�r�r8r r r!r�4r)r�)r�)r(�hookr
�	strkwargs�copyrrT�headsr3�log�join)Zunused_successr}�argsZnewheads)�addedrzr��hookargsr�ror r!�runhooks s�z#cg1unpacker.apply.<locals>.runhooksschangegroup-runhooks-%020ics
����SrF)Z
_afterlock)�tr)ror�r r!�<lambda>9rz#cg1unpacker.apply.<locals>.<lambda>)r)r�)>�
unfilteredr�REVLOGV2_REQUIREMENT�CHANGELOGV2_REQUIREMENT�version�sidedatamod�get_sidedata_helpers�setr��
setdefaultr�r
r��	changelogZdelayupdater��weakref�proxyr3�statusrr(�makeprogressrir@rLrjrmZ	develwarnrn�revlog_constantsZKIND_MANIFESTLOGrt�
configboolrk�xranger�r�Z	readdelta�	iteritems�addZKIND_FILELOG�_addchangegroupfilesZKIND_CHANGELOGZrewrite_sidedata�itemsZchanges�quietZclosesbranchZinvalidatevolatilesetsrrT�dictZ
publishingrZpublic�draftZregisternew�extendZadvanceboundaryZaddpostclose�flush)(rAror�Zsrctype�urlZtargetphaseZ
expectedtotalZsidedata_categoriesZadding_sidedata�sidedata_helpersr{rprq�progressr�r�rsZefilesZclendZ
changesetsr��	needfiles�mlZcsetZmfnodeZmfest�f�nr�ZnewrevsZnewfiles�mfZstartrevZendrev�flZ
deltaheadsr�r�Zphaseall�retr )r�rzr�r�r�r�r�ror�r�r�r!�applysR
������
�

�����	�

�



���




�

zcg1unpacker.applyc#s8d�t��fdd�i�D]}|dd�V|d�qdS)z�
        returns an iterator of the deltas in this changegroup

        Useful for passing to the underlying storage system to be stored.
        Ncs
����SrF)r`r ��chainrAr r!r�Krz'cg1unpacker.deltaiter.<locals>.<lambda>�r)�iter)rA�	chunkdatar r�r!rjDszcg1unpacker.deltaiter)N)N)�__name__�
__module__�__qualname__�__doc__�_CHANGEGROUPV1_DELTA_HEADERr]�sizer\r�rbrCrErGrHrJr1rKrLrMrPr[r`rfrtrr�r�rjr r r r!r:ms4

-
�
7r:c@s&eZdZdZeZejZdZdd�Z	dS)�cg2unpackerz�Unpacker for cg2 streams.

    cg2 streams add support for generaldelta, so the delta header
    format is slightly different. All other features about the data
    remain the same.
    �02c
Cs(|\}}}}}d}d}	|||||||	fSrQr �
rArRrSrTrUrVrXrWrYrZr r r!r[]szcg2unpacker._deltaheaderN)
r�r�r�r��_CHANGEGROUPV2_DELTA_HEADERr]r�r\r�r[r r r r!r�Qs
r�cs<eZdZdZeZejZdZdZ	dd�Z
d	�fdd�	Z�ZS)
�cg3unpackerz�Unpacker for cg3 streams.

    cg3 streams add support for exchanging treemanifests and revlog
    flags. It adds the revlog flags to the delta header and an empty chunk
    separating manifests and files.
    �03rac
Cs&|\}}}}}}d}	|||||||	fSrQr r�r r r!r[qszcg3unpacker._deltaheaderNc	sxtt|�j|||||d�t|ji�D]L}|d}|j�d|�|��}|j�	|�j
||||d�s&t�t
d���q&dS)NrgrN�adding %s revisions
s"received dir revlog group is empty)�superr�rtr�rPr3rvrjrkrlrmr	rr)	rArorprqrrrhr�rrs��	__class__r r!rtvs

��zcg3unpacker._unpackmanifests)N)
r�r�r�r��_CHANGEGROUPV3_DELTA_HEADERr]r�r\r�rbr[rt�
__classcell__r r r�r!r�dsr�cs6eZdZdZeZejZdZdd�Z	�fdd�Z
�ZS)�cg4unpackerzTUnpacker for cg4 streams.

    cg4 streams add support for exchanging sidedata.
    ruc
Cs$|\}}}}}}}	||||||	|fSrFr )
rArRrSrZrTrUrVrXrWrYr r r!r[�szcg4unpacker._deltaheaderc
	sftt|��|�}|s|S|\	}}}}}}}	}
}i}
|tj@rPt|j�}t�|�}
|||||||	|
|f	SrF)	r�r�r`r�CG_FLAG_SIDEDATAr"r=r�Zdeserialize_sidedata)
rArS�resrTrUrVrWrXr_rYrrZZsidedata_rawr�r r!r`�s8�


�zcg4unpacker.deltachunk)r�r�r�r��_CHANGEGROUPV4_DELTA_HEADERr]r�r\r�r[r`r�r r r�r!r��sr�c@seZdZdd�Zdd�ZdS)�headerlessfixupcCs||_||_dSrF)�_h�_fh)rAr6r�r r r!rC�szheaderlessfixup.__init__cCsZ|jrN|jd|�|j|d�}|_t|�|krJ|t|j|t|��7}|St|j|�SrF)r�r(rr�)rAr�rr r r!rG�s zheaderlessfixup.readN)r�r�r�rCrGr r r r!r��sr�ccs�|jdurd|j}}n:|j|jkr:|j}t�t|��}n|j}t�|jt|��}||�}t	t|�t|�t|��V|V|r�|V|V|j
tj@r�|j
}t	t|��V|VdS)z0Serialize a revisiondelta to changegroup chunks.Nr)r_�basenodeZnullid�revisionrZtrivialdiffheaderr(ZreplacediffheaderZbaserevisionsizer&rZrr�r)ror_Zheaderfnr+�data�metarr r r!�_revisiondeltatochunks�s"	
r�cs��fdd�}t||d�S)z&Sort nodes for changegroup generation.cs���|��SrFr|)r��rz�lookupr r!r��rz$_sortnodesellipsis.<locals>.<lambda>��key)�sorted)�store�nodesrzr�r�r r�r!�_sortnodesellipsis�sr�c	s��|}	�������fdd��|	r6����ttfkrBtt}
}nDt|	�dkrlt�fdd�|	D��\}
t}nt�fdd�|	D��\}
}��|
���|�}}
||
|fS)Ncs�|tkrtS�r|S|g}|r�|d}|dd�}|�vrB�|S|�vrf|�dd���|�D��q|�vr�|�dd��|D��qt��dd�D]}��|�|kr�|Sq�t��d�rƈj}n�j	j}t
�d	|�|f��qtS)
a�Turn a changelog revnum into a local revnum.

        The ellipsis dag is stored as revnums on the changelog,
        but when we're producing ellipsis entries for
        non-changelog revlogs, we need to turn those numbers into
        something local. This does that for us, and during the
        changelog sending phase will also expand the stored
        mappings as needed.
        rrNcSsg|]}|tkr|�qSr �r�r��ppr r r!r�+rz=_resolvenarrowrevisioninfo.<locals>.local.<locals>.<listcomp>cSsg|]}|tkr|�qSr rrr r r!r�.r����targets?unable to resolve parent while packing '%s' %r for changeset %r)rr��
parentrevsr
r��linkrevrZsafehasattrZ
display_idZ_revlogr	r)�clrev�walk�p�ir)rz�clrevtolocalrev�fullclnodes�ischangelog�precomputedellipsisr}r�r r!�local
s8
�
��z)_resolvenarrowrevisioninfo.<locals>.localrc3s|]}�|�VqdSrFr �r�r	�rr r!�	<genexpr>Rrz-_resolvenarrowrevisioninfo.<locals>.<genexpr>c3s|]}�|�VqdSrFr rrr r!rUr)rrr(r�rT)rzr�r
r}r�linknoderrrZlinkparentsrUrV�p1node�p2noder )rzrrr
rrr}r�r!�_resolvenarrowrevisioninfo�sErFccs|sdS|j}|rd}
n|r0t||||�}d}
nd}
|r�g}i}i}|D]�}|�|�}||�}|�|�}|||<||	vr�|||<n>||
vr�qHn2t||||||||	|
�	\}}}||f||<|||<|�|�qH|}d}|dur�|jj|td�t|�d�}|j�	dd�}|dv�r&td	�}|j�
||�tj}|�r:tj
}n"|d
k�rLtj}n|dk�r\tj}|j||
d|||d
�}t|�D]|\}}|�r�|�|d�|�r�||j}|j|v�r�||j\}}||_||_|jtjO_n
||j�}||_|V�q||�r|��dS)a6Calculate deltas for a set of revisions.

    Is a generator of ``revisiondelta`` instances.

    If topic is not None, progress detail will be generated using this
    topic name (e.g. changesets, manifests, etc).

    See `revlogutil.sidedata.get_sidedata_helpers` for the doc on
    `sidedata_helpers`.
    Nsstoragesnodesr�r�sdevelsbundle.delta)r�p1�fulls0config "devel.bundle.delta" as unknown value: %srrT)�
nodesorderZrevisiondataZassumehaveparentrevisions�	deltamoder�r)r�r�r}rr�r3r�rr(r��warnrZCG_DELTAMODE_STDZCG_DELTAMODE_PREVZCG_DELTAMODE_P1ZCG_DELTAMODE_FULLZ
emitrevisions�	enumerater�rTrrrYZREVISION_FLAG_ELLIPSISrrn)ror�r�r
r��forcedeltaparentprev�topic�ellipsesrrrr�rzrZfilteredZadjustedparents�	linknodesrTr}rrrrr�Zconfigtarget�msgr�	revisionsr
r�r r r!�
deltagroup\s�


�
�


�	


r#c@sFeZdZddd�Zddd�Zddd	�Zdd
d�Zdd
�Zddd�ZdS)�cgpackerFNcCs�||_||_||_||_||_||_|	|_|dur8t�}||_|
durLt�}
|
|_	|
|_
||_||_||_
|j
jjr�|j
jjs�|j
jj|_n
dd�|_dS)a
Given a source repo, construct a bundler.

        oldmatcher is a matcher that matches on files the client already has.
        These will not be included in the changegroup.

        matcher is a matcher that matches on files to include in the
        changegroup. Used to facilitate sparse changegroups.

        forcedeltaparentprev indicates whether delta parents must be against
        the previous revision in a delta group. This should only be used for
        compatibility with changegroup version 1.

        builddeltaheader is a callable that constructs the header for a group
        delta.

        manifestsend is a chunk to send after manifests have been fully emitted.

        ellipses indicates whether ellipsis serving mode is enabled.

        bundlecaps is optional and can be used to specify the set of
        capabilities which can be used to build the bundle. While bundlecaps is
        unused in core Mercurial, extensions rely on this feature to communicate
        capabilities to customize the changegroup packer.

        shallow indicates whether shallow data might be sent. The packer may
        need to pack file contents not introduced by the changes being packed.

        fullnodes is the set of changelog nodes which should not be ellipsis
        nodes. We store this rather than the set of nodes that should be
        ellipsis because for very large histories we expect this to be
        significantly smaller.

        remote_sidedata is the set of sidedata categories wanted by the remote.
        NcSsdSrFr )�sr r r!r�?rz#cgpacker.__init__.<locals>.<lambda>)�_oldmatcher�_matcherr��_forcedeltaparentprev�_builddeltaheader�
_manifestsend�	_ellipsesr�Z_bundlecaps�_remote_sidedata�
_isshallow�_fullclnodes�_precomputedellipsis�_repor3�verbose�	debugflagZnote�_verbosenote)rAro�
oldmatcher�matcherr��builddeltaheader�manifestsendr�
bundlecapsr�shallow�
ellipsisroots�	fullnodes�remote_sidedatar r r!rC�s(4zcgpacker.__init__Tc
#s�|j��j�|�td��d}d}|jdkrL|j}|dkr@�j}t��|�}|j	�|||d�\}	}
|
D],}t
|j||j�D]}|t|�7}|Vqzqft
�}
|t|
�7}t
�V|�td�|�|	d}|	d	}|	d
}|o�t���}i}d}|j|||||||	d|d�}|D]|\}}
|�r:t|�}|t|�7}|V|
D]4}t
|j||j�}|D]}|t|�7}|V�qV�q>t
�}
|t|
�7}|
V�q|�td
�|�|jVd}|j�r�|j�rևfdd�t�|�D�}|���fdd�|D�}|j||||||||d�}|D]�\}}
t|�}t|�}|V|
D]4}t
|j||j�}|D]}|t|�7}|V�qH�q0t
�}
|t|
�7}|
V|�td�||f��qt
�V|�r��jdt|d�|d�dS)z�Yield a sequence of changegroup byte chunks.
        If changelog is False, changelog data won't be added to changegroup
        s%uncompressed size of bundle content:
rNrusstrip)�generater�s%8.i (changelog)
�
clrevorderr��changedfiles�clrevtomanifestrev)r�s%8.i (manifests)
cs"g|]\}}�j|��|f�qSr )rkrG)r�r��lr�ror r!r��s�z%cgpacker.generate.<locals>.<listcomp>csh|]}��|��qSr r|)r�rxr~r r!�	<setcomp>�rz$cgpacker.generate.<locals>.<setcomp>s	%8.i  %s
soutgoing)rT�source)r0r�r3rr�r,Z_wanted_sidedatar�r��_generatechangelogr�r)r(r'r�istreemanifest�generatemanifestsr*r*r+r-r
r��clear�
generatefilesr�r)rA�
commonrevsZclnodes�fastpathlinkrevrDr�r�r�r<Zclstatersr_rdr1�
clrevorder�	manifests�changedfiles�fnodes�it�treer4�mfdicts�clrevsr)r�r ryr!r=As�
��

�
�
�

��
�zcgpacker.generatec
s�i�i��jj�t��i�����d�}|s��js�t|�jd�}|D]4}��|�}t���|<��|j	|���
|j�qD|dfS�������fdd�}t�j�|d|�j
�jtd�i�j�j|d�}	||	fS)	a�Generate data for changelog chunks.

        Returns a 2-tuple of a dict containing state and an iterable of
        byte chunks. The state will not be fully populated until the
        chunk stream has been fully consumed.

        if generate is False, the state will be fully populated and no chunk
        stream will be yielded

        See `revlogutil.sidedata.get_sidedata_helpers` for the doc on
        `sidedata_helpers`.
        )r>r�r?r@r�r cs���|�}t���|<�jr�|�jvs6��|��jvr`|j}��||�����|���|���jr���	�|j�
����q���	|j�n��|j|���	|j�|SrF)
r�r(r+r.r}r/r�r�r-r�rG�keysr�)rxr8Zmanifestnode�rNrzrLZclrevtomanifestrevrM�mflrAr r!�lookupcls$
���z-cgpacker._generatechangelog.<locals>.lookupclTr��rrrrrr�)r0rkr�r+r�r}r�r(r�r�r�r�r#r(rr.r/)
rArzr�r=r��staterTr8rW�genr rUr!rE�sD�

(�zcgpacker._generatechangelogc	#s�|j}	|	j�d�i�������fdd�}
�r����\}}|j�|dd��}
|rX|
sXq*��|�}|
slg}n|�|||�}|r�|s�q*|
||�}t|j||d||j|j	t
d�||j|j|d�}|j
�|jdd��s�||fVq*|D]}q�|s*|gfVq*dS)	a8Returns an iterator of changegroup chunks containing manifests.

        `source` is unused here, but is used by extensions like remotefilelog to
        change what is sent based in pulls vs pushes, etc.

        See `revlogutil.sidedata.get_sidedata_helpers` for the doc on
        `sidedata_helpers`.
        rcs$�r
�jS������fdd�}|S)Ncs��|}���|�jdd�}|��D]�\}}}|dkrt�|d}��|i�}|�||�}�|�|kr�|||<q$�|}	��|	i�}
|
�||�}�|�|kr$||
|<q$|S)aPCallback for looking up the linknode for manifests.

                Returns the linkrev node for the specified manifest.

                SIDE EFFECT:

                1) fclnodes gets populated with the list of relevant
                   file nodes if we're not using fastpathlinkrev
                2) When treemanifests are in use, collects treemanifest nodes
                   to send

                Note that this means manifests must be completely sent to
                the client before you can trust the list of files and
                treemanifests to send.
                T)r9�t�/)r�ZreadfastZiterentriesr�)rxZclnodeZmdatar	r�r�ZsubtreeZ
tmfclnodesZ	tmfclnoder�ZfclnodesZfclnode)rLrOrVr��tmfnodesrQr r!�lookupmflinknode^s

zRcgpacker.generatemanifests.<locals>.makelookupmflinknode.<locals>.lookupmflinknode)�__getitem__)rQr�r^�rLrKrOrMrVr])r�rQr!�makelookupmflinknodeVs!z8cgpacker.generatemanifests.<locals>.makelookupmflinknodeNrFr�rX)r0rk�popitemr'Zvisitdirrl�_prunemanifestsr#r(r+rr.r/r&rQ)rArJrLrKrMrOrDrr�rorarQr�Zshould_visitr�ZprunednodesZlookupfnrsrr r`r!rG<sH+

�zcgpacker.generatemanifestscs2|js|��S|j|j�����fdd�|D�S)Ncs g|]}��|���vr|�qSr r �r�r��rJ�flr�frevr r!r��rz,cgpacker._prunemanifests.<locals>.<listcomp>)r+r�r}r)rAr�r�rJr rer!rc�szcgpacker._prunemanifestsc	#sp�fdd�|D�}|s$�fdd��n�jjj���fdd��i��jrx�fdd��D���jjj�����
�fdd�}	n�}	�j}
|
jjtd	�td	�t|�d
�}t	t
|��D]�\}}
|
�|
�}|s�t�
td�|
�����|	||
��	�	fdd
�}|j|j�����fdd��	D�}|�sq�|j|d|
d�t�j||d|�j�j��j�j|d�}|
|fVq�|��dS)Ncs$g|]}��|�r��|�s|�qSr )r'r&)r�r�rDr r!r��s�z*cgpacker.generatefiles.<locals>.<listcomp>cs��|i�SrFr�)ZunusedrO)rOr r!�normallinknodes�sz/cgpacker.generatefiles.<locals>.normallinknodescs4|j�|j��fdd�|D�}���fdd�|D�S)Nc3s|]}|�|�fVqdSrFr )r��r)�flinkrevr r!r�rzBcgpacker.generatefiles.<locals>.normallinknodes.<locals>.<genexpr>cs&i|]\}}|�vr�|��|��qSr r )r�rirA)�clnrS�fnoder r!�
<dictcomp>�rzCcgpacker.generatefiles.<locals>.normallinknodes.<locals>.<dictcomp>)rrT)r�rOr�)rkrS)rjrlr!rh�scsg|]}�j|�qSr )r0r�rDr r!r��rc	s��D]:}z |�|�}|�|��|��<Wqtjy<Yq0q�||�}t|�t��kr��D]@\}}|�|d�}||vr�t|||�d�||<q^|r^|||<q^|S)Nr�)Zfilenoder}r	ZManifestLookupErrorr(r��min)ZflogrOr8rlZlinksr�rA)rr�
commonctxsrRrhr r!r �s


z)cgpacker.generatefiles.<locals>.linknodes�filesr�s!empty or missing file data for %scs�|SrFr rw)�linkrevnodesr r!�
lookupfilelogsz-cgpacker.generatefiles.<locals>.lookupfilelogcs g|]}��|���vr|�qSr r rdrer r!r�sr)�itemF)rrrrr�)r0r�rTr-r}r3r�rr(rr��filer	rrHrr�r#r(r+r.r/rn)rArNrJrDrRrKrOrSr�r ror�r
rOZ
filerevlogrrZ	filenodesrsr )
rkrrSrrorJrfrOrgrqrRrhrAr!rI�s`
�

�

�
��zcgpacker.generatefiles)FNFFNNN)T)TN)N)N)	r�r�r�rCr=rErGrcrIr r r r!r$�s$	�
R�
�
o�
y�r$c	
Cs(dd�}	t|||d|	dd|||||d�S)NcSst�|j|j|j|j�SrF)r�r$rTrrr�rr r r!r�@s�z _makecg1packer.<locals>.<lambda>r;rT)r6r7rr8rr9r:r;�r$�
ror4r5r8rr9r:r;r<r6r r r!�_makecg1packer5s�rxc	

Cs&dd�}	t|||d|	d|||||d�S)NcSst�|j|j|j|j|j�SrF)r�r$rTrrr�rrur r r!r�_s�z _makecg2packer.<locals>.<lambda>r�r�r6r7r8rr9r:r;rvrwr r r!�_makecg2packerTs�rzc	

Cs(dd�}	t|||d|	t�|||||d�S)NcSs t�|j|j|j|j|j|j�SrF)r�r$rTrrr�rrYrur r r!r�}s�z _makecg3packer.<locals>.<lambda>r�ry�r$r'rwr r r!�_makecg3packerrs�r|c	
Cs*dd�}	t|||d|	t�||||||d�S)Nc	Ss$t�|j|j|j|j|j|j|j�SrF)	r�r$rZrTrrr�rrYrur r r!r6�s�z(_makecg4packer.<locals>.builddeltaheaderru)r6r7r8rr9r:r;r<r{rwr r r!�_makecg4packer�s
�r})r;r�r�rucCs�tt���}d}|j�dd�s6|j�dd�s6t�|�r:d}|sH|�d�|j�dd�pltj	|jvpltj
|jv}|s||�d�|S)	NFsexperimentalschangegroup3streemanifestTr�schangegroup4ru)r��
_packermaprTr3r�rrF�discardrr�r�)ro�versionsZneedv03Zwant_v4r r r!�allsupportedversions�s&���

�
�
r�cCst|�SrF)r�rBr r r!�supportedincomingversions�sr�cCsht|�}t�|�r&|�d�|�d�tj|jvrF|�d�|�d�t|jvrd|�d�|�d�|S)Nr;r�)r�rrFrrZNARROW_REQUIREMENT�LFS_REQUIREMENT�ror�r r r!�supportedoutgoingversions�s







r�cCstt|��SrF)�maxr�rBr r r!�localversion�sr�cCs&t|�}tj|jvr|�d�t|�S)Nr;)r�rZGENERALDELTA_REQUIREMENTrrnr�r r r!�safeversions
r�c
Cs�|durt��}|dur t��}|dkr:|��s:t�d��|rX|dvrXt�td�|��|�|�}t|d}
|
|||||||||	d�	S)Nr;s;version 01 changegroups do not support sparse file matchers)r;r�sSellipsis nodes require at least cg3 on client and server, but negotiated version %sr)rr9r:r;r<)	�matchmod�always�neverr	ZProgrammingErrorrrZnarrowmatchr~)r�ror8r4r5rr9r:r;r<�fnr r r!�
getbundlers:����

�r�cCst|d|||d�S)Nr)r?)r~)r�r6rBr?r r r!�getunbundlerAsr�cCs^|jjs|dkr(|j�td�t|��|jjrZ|j�d�|D]}|j�dt|��q@dS)Nsbundles%d changesets found
slist of changesets:
s%s
)r3r1r�rr(r2rvr)ror�rDrTr r r!�_changegroupinfoEsr�cCs2t||||||d�}t|t�|�ddt|j�i�S)N)�fastpathr8sclcount)�
makestreamr�rZchunkbufferr(�missing)ro�outgoingr�rDr�r8Zcgstreamr r r!�makechangegroupNs��r�c
Cs~t|||||d�}|��}|j}	|j}
|j}|��|pP|jduoP|t|���k}|j	dd|d�t
||
|�|�|	|
||�S)N)r8r5r<spreoutgoingT)r�rD)r�r��commonr�Zancestorsof�sortZ
filternamer�r�r�r�r=)
ror�r�rDr�r8r5r<ZbundlerrJZcsetsr�rKr r r!r�as$
��r�cCs�d}d}|jjtd�td�|d�}	t|ji�D�]}
|d7}|
d}|j�d|�|	��|�|�}t|�}
z0|�	�}|j
||||d�}|s�t�td���Wn8tj
y�}zt�td	�|��WYd}~n
d}~00|t|�|
7}||vr.||}t�|
t|��D]4}|�|�}||v�r,|�|�nt�td
����q|s.||=q.|	��t�|�D]`\}}|�|�}|D]F}z|�|�Wn0tj�y�t�td�|t|�f��Yn0�qr�q\||fS)Nrrpr�rrNr�rgs#received file revlog group is emptys#received delta base is censored: %ss#received spurious file revlog entrys+missing file data for %s:%s - run hg verify)r3r�rr�rPrvrirtr(rjrmr	rZCensoredBaseErrorr
r�rT�removernr�r}�LookupErrorr)rorDrprqZ
expectedfilesr�rhr"r�r�r�r�r��orsr��eZneeds�newr�r r r!r��s^	�
�(



��r�)N)NFNNNN)FFNNN)FFNNN)FFNNN)FFNNN)NNNFFNNN)N)FN)FNNN)N)FZ
__future__rr.rr�Zi18nrrTrrrr
r�r	r
r�rrrrrZ
interfacesrZrevlogutilsrr�rr�Zutilsr�Structr�r�r�r�r�rr"r&r'r*r9�objectr:r�r�r�r�r�r�rr#r$rxrzr|r}r~r�r�r�r�r�r�r�r�r�r�r�r r r r!�<module>s�(




#g!2"f�
O�
$�
#�
#�
)��
3

�
�
*�

Youez - 2016 - github.com/yon3zu
LinuXploit