https://t.me/RX1948
Server : Apache
System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
User : dh_edsupp ( 6597262)
PHP Version : 8.2.26
Disable Function : NONE
Directory :  /lib/python3/dist-packages/hgext/convert/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/hgext/convert/__pycache__/subversion.cpython-310.pyc
o

^�UbY��@s\ddlmZddlZddlZddlZddlZddlZddlm	Z	ddl
mZddlm
Z
mZmZmZmZddlmZmZmZddlmZejZejZejZejZejZejZejZej Z ej!Z!ej"Z"ej#Z#ej$Z$ej%Z%ej&Z&ej'Z'z,ddl(Z(ddl)Z(ddl*Z(ddl+Z(ddl,Z(dd	lm-Z-ddl.Z.e.j/d
de0d�e(j1j2Wne3y�dZ(Ynwda4d
d�Z5dd�Z6dd�Z7dd�Z8Gdd�de9�Z:dd�Z;dd�Z<dd�Z=dd�Z>Gdd �d e?�Z@		!	"d=d#d$�ZAd%d&�ZBGd'd(�d(e?�ZCGd)d*�d*eD�ZEd+d,�ZFd-d.�ZGeGeGeFd/�ZHGd0d1�d1e9�ZId2d3�ZJd4d5�ZKGd6d7�d7e!�ZLd8ZMd9d:�ZNGd;d<�d<e e�ZOdS)>�)�absolute_importN)�_)�open)�encoding�error�pycompat�util�vfs)�dateutil�procutil�
stringutil�)�common)�	transport�ignorezsvn.core)�module�categorycCsptdurdStjrdant���t�tj�pdaWd�n1s#wYt�	t�j
att�	d�j
kadS)N�mbcsz
ISO-8859-1�utf-8)�
fsencodingr�	iswindowsr�
with_lc_ctype�locale�nl_langinfo�CODESET�codecs�lookup�name�fsencoding_is_utf8�rr�:/usr/lib/python3/dist-packages/hgext/convert/subversion.py�init_fsencodingLs
�r!cCstr|S|�t��d�S)Nr)r�decoder�encode��srrr �fs2svn]sr&cC�t�|d�S)Ns%Y-%m-%dT%H:%M:%S.000000Z)r
�datestr)�daterrr �
formatsvndatedsr*cCst�|dd�ddg�S)N�s UTCs%Y-%m-%dT%H:%M:%S)r
�	parsedater$rrr �parsesvndatehsr-c@�eZdZdS)�SvnPathNotFoundN��__name__�
__module__�__qualname__rrrr r/o�r/cCs�|�dd�}d}t|�dkrt|d�}|d�dd�}d}d}t|�dkr;|d�d�r;|ddd�}d|d}|||fS)	a�Parse a revision string and return (uuid, path, revnum).
    >>> revsplit(b'svn:a2147622-4a9f-4db4-a8d3-13562ff547b2'
    ...          b'/proj%20B/mytrunk/mytrunk@1')
    ('a2147622-4a9f-4db4-a8d3-13562ff547b2', '/proj%20B/mytrunk/mytrunk', 1)
    >>> revsplit(b'svn:8af66a51-67f5-4354-b62c-98d67cc7be1d@1')
    ('', '', 1)
    >>> revsplit(b'@7')
    ('', '', 7)
    >>> revsplit(b'7')
    ('', '', 0)
    >>> revsplit(b'bad')
    ('', '', 0)
    �@r
r�/�ssvn:�N)�rsplit�len�int�split�
startswith)�rev�parts�revnum�uuid�modrrr �revsplitss
rCcCr')Ns!$&'()*+,-./:=@_~)�urlreq�quoter$rrr rE�srEcCs�z
tj�tj�t|���WStjjyYnwtj�	|�r<tj�
t�|��}t
jr2dt�
|�}t|�}dt|�}tj�|�S)z�Convert path or URL to a SVN URL, encoded in UTF-8.

    This can raise UnicodeDecodeError if the path or URL can't be converted to
    unicode using `fsencoding`.
    r6s	file://%s)�svn�client�
url_from_path�core�svn_path_canonicalizer&�SubversionException�os�path�isdir�normpathr�abspathrrrE�rMrrr �geturl�s��rRcCs tj��}tjj|_||j_|S�N)rFrI�svn_opt_revision_t�svn_opt_revision_number�kind�value�number)rX�optrevrrr rY�s

rYc@seZdZdd�ZdS)�changedpathcCs|j|_|j|_|j|_dSrS)�
copyfrom_path�copyfrom_rev�action)�self�prrr �__init__�szchangedpath.__init__N)r1r2r3r`rrrr rZ�srZTFc
s�d���fdd�}ztj|d�}	tj�|	j|||||||�Wn+ty/t�d���Yn#tyJ}
zt�t	�
|
����WYd}
~
nd}
~
wwt�d������t�
d�dS)N���c	sHi}|durt�|�D]
\}}t|�||<qt�|||||f���dSrS)r�	iteritemsrZ�pickle�dump�	�
orig_pathsr@�authorr)�message�pool�paths�k�v��fp�protocolrr �receiver�s
zget_log_child.<locals>.receiver��urlr)r�SvnRaTransportrF�ra�get_log�IOErrorrcrd�	Exceptionr�forcebytestr�flushrL�_exit)rnrrrj�start�end�limit�discover_changed_paths�strict_node_historyrp�t�instrrmr �
get_log_child�s.
�
 ��r�cKsdt���$tdurt�td���t|j���}t	|j
g|�R�Wd�dS1s+wYdS)ziFetch SVN log in a subprocess and channel them back to parent to
    avoid memory collection issues.
    Ns5debugsvnlog could not load Subversion python bindings)rrrFr�Abortr�
decodeargs�fin�readr��fout)�ui�opts�argsrrr �debugsvnlog�s
�"�r�c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�	logstreamz$Interruptible revision log iterator.cCs
||_dSrS)�_stdout)r^�stdoutrrr r`��
zlogstream.__init__c	cs��	zt�|j�}Wntyt�td���wz	|\}}}}}Wnttfy;|dur2YdSt�td�|��w|Vq)NT�>Mercurial failed to run itself, check hg executable is in PATHslog stream exception '%s')	rc�loadr��EOFErrorrr�r�	TypeError�
ValueError)r^�entryrfr@rgr)rhrrr �__iter__s(������zlogstream.__iter__cCs|jr
|j��d|_dSdSrS)r��close�r^rrr r�s

�zlogstream.closeN)r1r2r3�__doc__r`r�r�rrrr r��s
r�c@s(eZdZdZ			d
dd�Zdd�Zd	S)�directlogstreamz�Direct revision log iterator.
    This can be used for debugging and development but it will probably leak
    memory and is not suitable for real conversions.rTFc

s8�fdd�}tj|d�}	tj�|	j|||||||�dS)Nc	sDi}|durt�|�D]
\}}t|�||<q��|||||f�dSrS)rrbrZ�appendrer�rr rp*s
z*directlogstream.__init__.<locals>.receiverrq)rrsrFrtru)
r^rrrjr{r|r}r~rrpr�rr�r r` s
	�zdirectlogstream.__init__cCsdSrSrr�rrr r�?szdirectlogstream.closeN�rTF)r1r2r3r�r`r�rrrr r�s

�r�cCs*dD]}tj�tj�||��sdSqdS)N)slocks�hookssformat�dbFT)rLrM�exists�join)r�rM�proto�xrrr �	filecheckFs
�r�c
Cs�zt��}|�t�d||f�d�}|��}Wd|vStjyH}z!|jdkr6|�	t
d��WYd}~dS|j��}WYd}~d|vSd}~wtyQYdSw)Ns%s://%s/!svn/ver/0/.svnsrbi�swsvn: cannot probe remote repository, assume it could be a subversion repository. Use --source-type if you know better.
TFs#<m:human-readable errcode="160013">)
rD�buildopenerrr�strurlr��urlerr�	httperror�code�warnrrnrw)r�rMr��opener�rsp�datar�rrr �	httpcheckPs*�
�
�����r�)�httpshttps�filec@r.)�NonUtf8PercentEncodedBytesNr0rrrr r�pr4r�cCsPtjrt�|�}d|vrt�|St�|�d��}z|�d�WSty't�w)Nu�r)r�ispy3rD�url2pathnamer�r#r"�UnicodeDecodeError)�unicodepathrrr �url2pathname_like_subversionvs
�r�cCs�zv|�dd�\}}|dkrutjr8|dd�dkr8|dd���r8|dd���dkr8|dd�d|dd�}z|�t�}WntyV|�t	d	�t�
t��YWd
Swzt|�}Wntyo|�t	d��YWd
Sw|�
t�}Wn/ty�d}t�|�}z|�t�Wnty�|�t	d�t�
t��YYd
SwYnw|dkr�t�|�}n|d
vr�t�|�s�|�t	d��d
St�|dd��}d|vr�||||�r�dS|�dd�d}d|vs�d
S)Ns://r
r�r6��s%3a/s:/sfSubversion requires that file URLs can be converted to Unicode using the current locale encoding (%s)
FsISubversion does not support non-UTF-8 percent-encoded bytes in file URLs
sbSubversion requires that paths can be converted to Unicode using the current locale encoding (%s)
)r��httpsscSubversion sources don't support non-ASCII characters in HTTP(S) URLs. Please percent-encode them.
cW�dS)NFr)r�rrr �<lambda>�szissvnurl.<locals>.<lambda>Tr)r<rr�isalpha�lowerr"rr�r�r�sysbytesr�r�r#r�rrP�pconvertr�
isasciistr�protomap�getr9)r�rrr�rMr��checkrrr �issvnurl�s�������	���

�
������
���r�cs�eZdZd8�fdd�	Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zd9dd�Z
dd�Zdd�Zdd�Zd8dd �Zd!d"�Zd8d#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd8d/d0�Zd8d1d2�Z	3	4	5d:d6d7�Z�ZS);�
svn_sourceNc
s�tt|�j||||d�t�|�d�s7|�d�s7tj�|�r*tj�tj�|d��s7t	||�s7t
td�|��tdurGt
td�td�d��ztjjtjjf}|d	krbt
td
�|td�d��Wntyvt
td
�td�d��wi|_d}z|�d�}|dkr�t||dd��}|d|�}Wn	ty�Ynwt|�|_d|_zSt���Etj|jd�|_|jj|_|jj|_tj� |j�|_!t"�#|jt$|j!�d��|_%d|_&|j%|_'i|_(i|_)tj�*|j�|_+Wd�n1s�wYWn&tjj,�y"|�-�dtjjtjjtjj.f}t
td�|j|f��w|�rPt$|�dk�r4t/�0td���zt|d�}Wnt�yOt/�0td�|d��w|j1�2dd�}	|	du�r^d}	|	�3d�|_4|j1�2dd�|_5zt|j5�|_5|j5dk�r|d|_5Wnt�y�t/�0td�|j5��wzt���|�6|j%|�|_7Wd�n	1�s�wYWn
t8�y�d|_7Ynw|j7�s�t/�0td�|j%��|�9|j7�|_:d|_;tj�tj�|d���r�||_<nd|_<d|_=dS) N)�revsssvn://s
svn+ssh://�.svns-%s does not look like a Subversion repositorys)could not load Subversion python bindingss  (try installing the %s package)spython3-subversion)r
r8s=Subversion python bindings %d.%d found, 1.4 or later requireds (try upgrading the %s package)spython-subversions=Subversion python bindings are too old, 1.4 or later requiredr5rr
sUTF-8rqs%d.%d.%dsB%s does not look like a Subversion repository to libsvn version %ss@subversion source does not support specifying multiple revisionss"svn: revision %s is not an integer�converts	svn.trunk�trunkr6ssvn.startrevs(svn: start revision %s is not an integer�no revision found in module %s�NNs.svn/entries)>�superr�r`r!r=rLrMr�r�r��NoReporrF�MissingToolrI�
SVN_VER_MAJOR�
SVN_VER_MINOR�AttributeError�lastrevs�rfindr;r�rRrrrrrrrsrtrG�ctx�get_repos_root�baseurlrD�unquoter:r�
prevmodule�
rootmodule�commitsrj�get_uuidrArK�	traceback�
SVN_VER_MICROrr�r��config�strip�	trunkname�startrev�latest�headr/r@�last_changed�
_changescache�wc�	convertfp)
r^r��repotyperrr��versionr��at�
svnversion�trunkcfg��	__class__rr r`�s��
���	
�
���
���	�
���	
��



��
���������
���
��
��
zsvn_source.__init__cCst��|_|j��dSrS)rr�	__enter__r�rrr �beforecs
zsvn_source.beforecCs|j�ddd�dSrS)r�__exit__r�rrr �aftergszsvn_source.aftercCsBi}|D]}t|�\}}}|�||�}||kr|||<q||_dSrS)rC�
setdefaultr�)r^�revmapr��revidrArr@�
lastrevnumrrr �	setrevmapjs�
zsvn_source.setrevmapcCsHztj�|j�d�dt|�|d|j�WdStjjy#YdSw)Nr6FT)	rFrG�lsrr�rstriprEr�rIrK)r^rMrYrrr r�ss��zsvn_source.existsc
s��fdd�}�fdd�}t�j�}d}|d|�}|d|��_|d|�}|rI�jp)d}�jd	|7_���j�j��_�jsIt�td
��j���jg�_	�jdur]d|�jpYdf�_|r��j
�d	�}tj
�|d	t|�|d�j�}t|�D]9}	d
|||	f}
||
�j�s�qy��|
�j�}|s��j�td�|	�qy�j�td�|	��|�f��j	�|�qy�jrވj	r�t�j	�dkr�t�td������j	d�}|�jkr�t�td��j���j	S)Ncs��||�}|tjjkSrS)�
_checkpathrFrI�svn_node_dir)rMr@rVr�rr rN�sz"svn_source.getheads.<locals>.isdircs��j�dd|�}|dur|��dkrdS|p|�d�}��||�s=�j�|�r.|dkr.dS|r;t�td�||f��dS�j�	td�|t
�|�f�|S)Nr�ssvn.r7r6r�s&expected %s to be at %r, but not foundsfound %s at %r
)r�r�r�r�r�endswithrr�r�noter�bytestr)rr>�cfgpathrMr�rr �
getcfgpath�s$���z'svn_source.getheads.<locals>.getcfgpathr7r�stagssbranchesr6r�s%s/%sFs%s/%s/%ssignoring empty branch %s
sfound branch %s at %d
r
s>svn: start revision is not supported with more than one branchrs.svn: no revision found after start revision %d)rYr��tagsrr�r�rr�r�headsrrr�rFrGr�rEr��sortedr�r�r@r�r�r:)
r^rNr�r>�	oldmodule�trunk�branches�rpath�branchnames�branchr�brevidr@rr�r �getheadssh



�

�����
��zsvn_source.getheadscCs�|j|\}}i}|r|�|||�\}|_}|s|s@t|�\}}}	tj�|jt|�t	|	�d|j
�}
dd�t�|
�D�}t
�|_|��t�||gt|��}||fS)NTcSs"g|]
\}}|jtjjkr|�qSr�rVrFrI�
svn_node_file)�.0�n�errr �
<listcomp>�s
�z*svn_source._getchanges.<locals>.<listcomp>)rj�expandpaths�removedrCrFrGr�r�rErYr�rrb�set�sort�ziplistr:)r^r>�fullrj�parents�copies�filesrArr@�entriesrrr �_getchanges�s ��zsvn_source._getchangescCsF|jd|kr|s|jd\}}n|�||�\}}|j|=||t�fS)Nrr
)r�rrjr)r^r>rrrrrr �
getchanges�s
zsvn_source.getchangescCs,|�|d�\}}|||ff|_dd�|D�S)NFcS�g|]}|d�qS�rr�r
�frrr r��z.svn_source.getchangedfiles.<locals>.<listcomp>)rr�)r^r>�irrrrr �getchangedfiles�szsvn_source.getchangedfilescCs�||jvr7t|�\}}}||_|�|�|j�|d�}||kr#|d}|�||�||jvr7t�t	d�|��|j|}|j|=|S)Nrr
ssvn: revision %s not found)
r�rCr�reparentr�r��_fetch_revisionsrr�r)r^r>rArr@�stop�	revcommitrrr �	getcommit�s



zsvn_source.getcommit�	splicemapcCs&t�d|�st�td�||f��dS)z:fails if revision format does not match the correct formatsWsvn:[0-9a-f]{8,8}-[0-9a-f]{4,4}-[0-9a-f]{4,4}-[0-9a-f]{4,4}-[0-9a-f]{12,12}(.*)@[0-9]+$s.%s entry %s is not a valid revision identifierN)�re�matchrr�r)r^�revstr�mapnamerrr �checkrevformats����zsvn_source.checkrevformatcCst|j�dd�d�|jS)Nr5r
)r;r�r9r�r�rrr �
numcommitsszsvn_source.numcommitsc
s4i}|jdur	|Sg}|j}tj�|j�}|�|jg||j�}z�|D]�}|\}}}	}
}|s/g}dd�t�|�D�}|jdd�|}
|rQ|dd|krQ|�	�d}
|D]7\}}}|�
|d�s`qS|D]}|d�
|�r�||dt|�d�}||g|dd�<n	qb|�|||g�qSd	d
�t�|�D�}t
�}|D] }|D]\}}}|�
|d�r�|�
||d�r�q�|�|�q�|D]��fdd�|D�}q�g}|D];\}}}|�d�d}|�
|
�r�|�|||g�q�||vr�q�z|�||�}|r�||vr�|||<Wq�t�yYq�w|}|
}q"W|��|S|��w)NcSs$g|]\}}|jr|j|j|f�qSr)r[r\�r
r_rrrr r8s��z&svn_source.gettags.<locals>.<listcomp>T)�reverserar�rr6cSs(i|]\}}|jdkr|jr||j�qS)�A)r]r[r0rrr �
<dictcomp>Ws
�z&svn_source.gettags.<locals>.<dictcomp>cs.g|]}|d�kr|d��d�s|�qS)r�r6)r=)r
r_��badrootrr rgs��)rrFrt�get_latest_revnum�_getlogr�rrbr�popr=r:r�r�addr<r�r/r�)r^r�pendings�tagspathr{�streamr��	origpathsr@rgr)rhr�srctagspath�source�	sourcerev�dest�tag�tagpath�addeds�badroots�destroot�	renamings�tagname�tagidrr4r �gettagss�

���	���
�
�
���R
�zsvn_source.gettagsc	Cs\|jsdS|jdurttj�|jdd�d�|_|j�t�d||�	|�f��|j�
�dS)Nr��	hg-shamapsabs%s %d
)r�r�rrLrMr��writer�tonativeeolr@ry)r^r>�destrevrrr �	converted�s
��zsvn_source.convertedcCsd|j|p|j|fS)Nssvn:%s%s@%d)rAr)r^r@rrrr r���zsvn_source.revidcCst|�d�d�S)Nr5ra)r;r<�r^r>rrr r@��zsvn_source.revnumcsd	�fdd�	}|��j�s�j�d|�dS|dur"tj��j�}z��d�}tj��j|�	d�|�}��|�Wn
tj
jyGd}Ynw|sTtt
d�||f��||||j�\}}|durv|||�\}}|durv�j�d|�dS|��j�s��j�d|�dS��||�S)
a]Find the latest revid affecting path, up to stop revision
        number. If stop is None, default to repository latest
        revision. It may return a revision in a different module,
        since a branch may be moved without a change being
        reported. Return None if computed module does not belong to
        rootmodule subtree.
        Ncs���|g||pd�}zU|D]E}|\}}}}}	|dur|rn5|dur(||kr(n+|D]'}
|�|
�r6||
js7q*||
j|t|
�d�}�j�d|||f�|}q
|sWd}||fW|��S|��w)Nr
s#branch renamed from %s to %s at %d
)r7r=r[r:r��debugr�)rMr{r&r<r�rjr@rgr)rhr_�newpathr�rr �findchanges�s0���z&svn_source.latest.<locals>.findchangessignoring foreign branch %r
r7r6s%s not found up to revision %dsignoring empty branch %r
rS)r=r�r�rSrFrtr6r$�statr�rIrKr/r�created_revr�)r^rMr&rUr��direntr@�realpathrr�r r��s6	
��zsvn_source.latestcCsX|j|kr|S|jt|�}|j}|durd}|j�d|�tj�|j|�||_|S)z:Reparent the svn transport and return the previous parent.Nr7sreparent to %s
)r�r�rEr�rSrFrtr$)r^r�svnurlr�rrr r$�s
zsvn_source.reparentcCs�t�t�}}i}t|�dd�\}}||jkr!||_|�|j�|jjtd�td�t|�d�}	t|�D�]�\}
\}}|	j	|
|d�|�
|�}
|�|
|�}|tj
jkr�|�|�|
��|jr`|saq4t|d�dd�\}}|j|krsq4|�
|j|�}|s}q4|j�d|
||jf�|�|�||�|
�<q4|dk�r	|j�d|j�t|d�dd�\}}|d	|
}|�|
||�}|tj
jkr�|�|�|
��q4|tj
jkr�|�d	�}|�d	�}|�||�}|D]}|�||�}|�
d	||�}|r�|�|�|��q�q4|j�d
||f�q4|tj
jk�r�|jdk�rq4|jdk�rf|�rft|d�dd�\}}|�|
||�}|tj
jk�rC|�|�|
��n#|tj
jk�rf|�||�D]}|�
d	|�}|�rd|�|�|���qP|�||�D]}|�
d	|�}|�r�|�|�|���ql|j�r�|�s�q4t|d�dd�\}}|j|k�r�q4|�
|j|�}|�s�q4|j�d
|||jf�|�|j|j�}|D])}|�
d	||�}|�s͐q�||t|�d�}|�
|�}|�|�||�|�<�q�q4|	��|�	|�t|�||fS)Nr
sscanning pathsspaths)�unit�total)�itemrscopied to %s from %s@%d
s
gone from %d
r6s unknown path in revision %d: %s
�M�Rsmark %s came from %s:%d
)rrCrr$r��makeprogressrr:�	enumerate�update�
getrelpathr�rFrIrr9�recoder[r\rSr�r��
_iterfiles�replacer]�complete�list)r^r>rjr�changedrr�
new_moduler@�progressr"rM�ent�	entrypathrV�pmodule�prevnumr[�
parentpath�fromkind�oroot�nroot�children�	childpath�pkind�copyfrompath�
copytopathrrr r�s�
�



��


��
���
��
�
zsvn_source.expandpathsc
s�|�kr	�|}�d�_��fdd�}�j�td��j|�f�z�d}d}���jg|��}z>|D]5}|\}}	}
}}|	�jkrDd}n$|sU�j�d|	�|pS|	dk}q2|||	|
||�\}
}|
rc|
}|rgnq2W|��n|��w|s�|r�|j	s�z'��
|j�}|dkr����j|d�}|r�|j	�
|�WWdSWWdSWWdSty�YWdSwWdSWdSWdStjjy�}z|j\}}|tjjkr�t�td	�����d}~ww)
Ncs�j�d|t|�f�d}��|�}|�jvs|�kr d|fSg}tt�|��}�fdd�|D�}|r}|d\}	}
|
jrwd}|
j�j	t|	�d�}��
||
j�}|durvt|�dd�\}
}|�j
krv|g}�j�td	��j	||
f�n�j�d
�g}|D]\}	}
��|	�dur�q�|�|	|
f�q�t|�}�j�dd�r�t|d
�}|r���|�}nd}|r���|�}nd}z�j	�d�d}|�jkr�d}Wnty�d}Ynwt|t�|d�||||d�}|�j|<||jf�j|<�j�r�jj�s|g�jjdd�<|�_||fS)zlReturn the parsed commit object or None, and True if
            the revision is a branch root.
            s!parsing revision %d (%d changes)
FNcs$g|]\}}�j�|�r||f�qSr)rr=r0r�rr r{s
��zFsvn_source._fetch_revisions.<locals>.parselogentry.<locals>.<listcomp>raTr
s$found parent of branch %s at %d: %s
s)no copyfrom path, don't know what to do.
r�s
localtimezonerr7r6s%Y-%m-%d %H:%M:%S %1%2)rgr)�descrrr>)r�rSr:r�r�rrrbr[rr�r\rCr�r�rrcr�r-�
configbool�makedatetimestamprdr<r��
IndexError�commitr
r(rrj�
child_cset)rfr@rgr)rh�branchedr>r�
root_pathsrMrlrT�previdr�rorj�logr�cset�r^�	to_revnumrr �
parselogentrygs�
��

�

���
��
�
	z2svn_source._fetch_revisions.<locals>.parselogentrys-fetching revision log for "%s" from %d to %d
FTsrevision %d has no entries
rr
ssvn: branch has no revision %s)r~r�r�rrr7r�rSr�rr@r>r�r�r/rFrIrKr��SVN_ERR_FS_NO_SUCH_REVISIONrr�)r^�from_revnumr�r��	firstcset�lastonbranchr<r�rjr@rgr)rhr��firstrevnumr��xxx_todo_changemer��numrr�r r%asn
W
��

������

���zsvn_source._fetch_revisionsc
Cs||jvrdSzHt|�dd�\}}|j|kr ||_|�|j�t�}tj�|j|||�}|��}|�	�t
|t�r>|d}d|vrDdpEd}d|vrLdpM|}Wn#tjj
yr}	ztjjtjjf}
|	j|
vrmWYd}	~	dS�d}	~	ww|dkr�d	}|�|�r�|t|�d�}||fS)
Nr�r
ra�svn:executable�xr7ssvn:special�lslink )rrCrr$�stringiorFrt�get_file�getvaluer��
isinstancerhrIrK�SVN_ERR_FS_NOT_FOUND�SVN_ERR_RA_DAV_PATH_NOT_FOUND�apr_errr=r:)r^�filer>rjr@�io�infor��moder�notfound�link_prefixrrr �getfile�s:


�
��
zsvn_source.getfilecsl��d��tj��}d�|jt��g��d�}tj�|t	|�d|j
|�}�r*�d7��fdd�t�|�D�S)z3Enumerate all files in path at revnum, recursively.r6Tc3s*�|]\}}|jtjjkr�|VqdSrSrr0rQrr �	<genexpr>s���z(svn_source._iterfiles.<locals>.<genexpr>)
r�rFrI�Poolr�r�rErGr�rYr�rrb)r^rMr@rirrrrQr res


�zsvn_source._iterfilescCst|dur|j}|�|�r(|�d�t|�d�}|�d�r"|dd�S|dkr(|S|j�dt�|�t�|�f�dS)Nr6r
r7s%r is not under %r, ignoring
)rr=r�r:r�rSrr�)r^rMr�relativerrr rc s

��zsvn_source.getrelpathc	Csd|dur|�d�}|d|}ztj�|j|�d�|�W|dur&|�|�SS|dur1|�|�ww)Nr7r6)r$rFrt�
check_pathr�)r^rMr@rr�rrr r�7s

��zsvn_source._checkpathrTFcCs�g}|D]}|�d�s|jd|}|�|�d��q|j||||||g}	|j�dd�s0t|	�St|	�}
t	�
�}dt	�|�}t	�|�\}
}|
�
|
�z	|
��Wt|�Stybt�td���w)Nr6r�ssvn.debugsvnlogs%s debugsvnlogr�)r=rr�r�r�r�rzr��
encodeargsr�hgexecutable�
shellquote�popen2rLr�rvrr�rr�)r^rjr{r|r}r~r�relpathsr_r��arg�hgexe�cmd�stdinr�rrr r7Cs<
�


����zsvn_source._getlogrS)r)r�)r1r2r3r`r�r�r�r�r
rrr#r(r.r/rJrOr�r@r�r$rr%r�rercr�r7�
__classcell__rrr�r r��s>	T


j

M
l!

�r�s�#!/bin/sh

REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"

%(rules)s

echo "Changing prohibited revision property" >&2
exit 1
cCs6g}|D]
\}}|�d||f�qtdd�|�iS)Ns>if [ "$ACTION" = "%s" -a "$PROPNAME" = "%s" ]; then exit 0; fisrules�
)r��pre_revprop_change_templater�)�prop_actions_allowed�rulesr]�propnamerrr �gen_pre_revprop_change_hooks��r�c@s�eZdZe�dej�Ze�dej�Zdd�Zdd�Z	dd�Z
d	d
�Zdd�Zd
d�Z
dd�Zedd��Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)S)*�svn_sinksCommitted revision (\d+).sRepository UUID:\s*(\S+)cCs|jrt�|j�dSdSrS)r�rL�chdirr�rrr �prerun���zsvn_sink.preruncCs|jrt�|j�dSdSrS)r�rLr��cwdr�rrr �postrun�r�zsvn_sink.postruncCstj�|jd|�S)Nr��rLrMr�r�)r^rrrr r��rRz
svn_sink.joincC�
|�d�S)NrK�r�r�rrr �
revmapfile�r�zsvn_sink.revmapfilecCr�)Nshg-authormapr�r�rrr �
authorfile�r�zsvn_sink.authorfilec
CsPtjddd�tjddd�t�||||�t�||d�g|_g|_g|_g|_d|_	t
��|_d}t
j�t
j�|dd��rLt
j�|�|_	|�d�nrt�d	|�s�t
j�|�}t
j�t
j�|��r�t
j�t
j�|d
d��s�|�td�t
j�|��t|d��d
|�|}t�|�}|�d�s�d|}d|}t
j�t
��t
j�|�d�}|�td�t
j�|��|�d||�||_	t�|j	�|_ t�|j	�|_!t"||�d��|_#t�$|j	�r�tj%|_&nd|_&|�rgd�}|j'�(dd�r�|�)d�t
j�|dd�}t*|d�}|�+t,|��|�-�t�.|dd�|�d�}	|j/�|	��0d��1�|_2dS)Nssvns
subversion)�debnamessvnadminFr�sentriessupdates"^(file|http|https|svn|svn\+ssh)://r�sfs-types!initializing svn repository '%s'
screater6sfile://s-wcs#initializing svn working copy '%s'
scheckoutshg-childmap))r^ssvn:log)r2�hg:convert-branch)r2�hg:convert-revr��svn.dangerous-set-commit-dates)r^�svn:dater�spre-revprop-changeswbTsinfor
)3r�	checktool�converter_sinkr`�commandline�delete�setexec�delexecrr�r�getcwdr�rLrM�isfiler�rY�run0r*�searchrN�dirnamer��statusr�basenamerrOr=�vfsmodr	r��wopener�mapfile�childmap�	checkexec�isexec�is_execr�rzr�rrLr�r��setflags�uuid_re�groupr�rA)
r^r�r�rM�created�wcpathr��hookrn�outputrrr r`�sx
�
��

�
��
�


zsvn_sink.__init__cGstjj|jg|�R�SrSr�)r^�namesrrr �wjoin�rPzsvn_sink.wjoincCs�t�}|jdddd�}tjj�|�}|�d�D]'}|jD]!}|j|j	ks)|j
dkr*qd�dd�|jD��}|�t
�|��q|S)	NslsT)�	recursive�xmlr�r�css"�|]}|j|jkr|jVqdSrS)�nodeType�	TEXT_NODEr�)r
�crrr r��s��z$svn_sink.manifest.<locals>.<genexpr>)rr�r��dom�minidom�parseString�getElementsByTagName�
childNodesr��ELEMENT_NODE�tagNamer�r9r�
unitolocal)r^�mr��docrrrrrr �manifest�s

��zsvn_sink.manifestcCs�d|vr
|j�||�dSztj�|�|��rt�|�Wn	ty&Ynw|jr=d}tj�	|�|��r=|�|�|��}|j�
||�|jrl|rTd|vrS|j�|�n
d|vr^|j
�|�t�|�|�dd|v�dSdS)Nr�Fr�)r��symlinkrLrM�islinkr��unlink�OSErrorr�r�rLr�r�r�rr�)r^�filename�flagsr��wasexecrrr �putfiles.
����zsvn_sink.putfilecCs�|�|�}tj�|�}|r*tjdtj�|�d�\}}t�|�t�|�t�	||�z+|�
d||�W|j�|�|rTzt�|�Wn	t
yKYnwt�	||�dSdS|j�|�|rvzt�|�Wn	t
ynYnwt�	||�ww)Nshg-copy-)�prefix�dirscopy)r�rLrM�lexistsr�mkstempr�r�r��renamer�r�r9r�)r^r?rA�wdestr��fd�tempnamerrr �	_copyfile"s:

�

�����zsvn_sink._copyfilecsdt�}|D]*�tj�|����r|���t���t��fdd�d�D]�|��d���q#q|S)Ncs��dd��S)Nr6r)r�r�r r"rr r�@sz"svn_sink.dirs_of.<locals>.<lambda>ra)rrLrMrNr�r9r:�iter)r^r�dirsrrr �dirs_of:s
�zsvn_sink.dirs_ofcsB�fdd�t��|��D�}|r�j�|��j|dddd�|S)Nc�g|]	}|�jvr|�qSr�r�)r
�dr�rr rEsz%svn_sink.add_dirs.<locals>.<listcomp>�addT)�
non_recursive�quiet)rrr�rb�xargs)r^r�add_dirsrr�r r
Ds
�zsvn_sink.add_dirscs6�fdd�|D�}|r�j�|��j|ddd�|S)Ncrrrrr�rr rNsz&svn_sink.add_files.<locals>.<listcomp>r	T)r)r�rbr)r^rrr�r �	add_filesMs
zsvn_sink.add_filescCs||j|<dSrS)r�)r^�parent�childrrr �addchildT�zsvn_sink.addchildcCsd|j|fS)Ns	svn:%s@%s)rArQrrr r�Wrzsvn_sink.revidc		Cs|D]}	z|�|j|	�WStyYqw|D],\}
}|�|
|�\}}
|dur2|j�|
�q|�|
|
|�|
|vrG|j�||
|
g�q|rV|j�t	|j
�|���dd�|D�}t|j�}t
|�}|�|�|�|���|jr�|jD]
\}}|�||�qwg|_|jr�|�|jd�|jD]}
|j
�|
�q�g|_|�|�|�|���|jr�|�|jdd�g|_|jr�|�|jddd�g|_tjdd	�\}}t�|d
�}|�t�|j��|��z�|jdt �!|j"�|dd
�}z|j#�$|��%d�}Wn1t&�y+|�s|�r|dndYWt�'|�S|j(�)t*d��|j(�)|�t+�,t*d���w|j-�r;|j.dd|j-d|d�|j/�rP|j/dk�rP|j.dd|j/d|d�|j(�0dd��rpt1�2|j3�}|ddf}|j.ddt4|�d|d�|D]	}	|�5|	|��qr|�|�Wt�'|�St�'|�w)NcSrrrrrrr rnr!z&svn_sink.putcommit.<locals>.<listcomp>sdeletespropdelr�spropset�*shg-convert-)r��wbscommitsutf-8)�usernamer�rr
rsNonesunexpected svn output:
sunable to cope with svn outputr�T)�revprop�revisionsdefaultr�r�r�r�)6r�r��KeyErrorr�r�r�r�r�extendrr��
differencer�	frozensetrbr
rr�removerr�r�rr�rL�fdopenrLrrMryr�r�r�	shortuserrg�	commit_rer�r�r�r�r�r�rrr�r>�runrrzr
r,r)r*r)r^rrrr}r?r�r�cleanp2rr rlr�r�rr%rr��messagefilernr�r>r)rrr �	putcommitZs���


�)������
zsvn_sink.putcommitcCs|j�td��dS)Ns/writing Subversion tags is not yet implemented
r�)r�r�r)r^rrrr �puttags�szsvn_sink.puttagscCr�)NTrrQrrr �hascommitfrommap�szsvn_sink.hascommitfrommapcCs ||jvrdSt�td�|��)NTs_splice map revision %s not found in subversion child map (revision lookups are not implemented))r�rr�rrQrrr �hascommitforsplicemap�s
���zsvn_sink.hascommitforsplicemapN)r1r2r3r*�compile�Mrr�r�r�r�r�r�r`r��
propertycacher�r�rrr
rrr�r#r$r%r&rrrr r��s.J

	dr�r�)P�
__future__rrrrLr*�xml.dom.minidomr��mercurial.i18nr�mercurial.pycompatr�	mercurialrrrrr	r��mercurial.utilsr
rrr�rrcr�r)r�rDr�r}r��converter_sourcer�r�r{r�r�r�rF�
svn.client�svn.core�svn.ra�	svn.deltar�warnings�filterwarnings�DeprecationWarningrIrK�ImportErrorrr!r&r*r-rwr/rCrErRrY�objectrZr�r�r�rhr�r�r�r�r�r�r�r�r�r�r�rrrr �<module>s���	

�/+
�U

https://t.me/RX1948 - 2025