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 :  /usr/lib64/python3.9/site-packages/hgext/convert/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /usr/lib64/python3.9/site-packages/hgext/convert/__pycache__/subversion.cpython-39.opt-1.pyc
a

�+�b���@sXddlmZddlZddlZddlZddlZddlZddlm	Z	ddl
mZddlm
Z
mZmZmZmZddlmZmZmZddlmZejZejZejZejZejZejZejZej Z ej!Z!ej"Z"ej#Z#ej$Z$ej%Z%ej&Z&ej'Z'zXddl(Z(ddl)Z(ddl*Z(ddl+Z(ddl,Z(dd	lm-Z-ddl.Z.e.j/d
de0d�e(j1j2Wne3�yRdZ(Yn0da4d
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�categorycCsptdurdStjrdan8t��� t�tj�p0daWd�n1sF0Yt�	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/lib64/python3.9/site-packages/hgext/convert/subversion.py�init_fsencodingLs
.r!cCstr|S|�t��d�SdS)Nr)r�decoder�encode��srrr �fs2svn]sr&cCst�|d�S)Ns%Y-%m-%dT%H:%M:%S.000000Z)r
�datestr)�daterrr �
formatsvndatedsr)cCst�|dd�ddg�S)N�s UTCs%Y-%m-%dT%H:%M:%S)r
�	parsedater$rrr �parsesvndatehsr,c@seZdZdS)�SvnPathNotFoundN��__name__�
__module__�__qualname__rrrr r-osr-cCs�|�dd�}d}t|�dkr(t|d�}|d�dd�}d}d}t|�dkrv|d�d�rv|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r@cCst�|d�S)Ns!$&'()*+,-./:=@_~)�urlreq�quoter$rrr rB�srBcCs�ztj�tj�t|���WStjjy0Yn0tj�	|�rxtj�
t�|��}t
jrddt�
|�}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`.
    r3s	file://%s)�svn�clientZ
url_from_path�coreZsvn_path_canonicalizer&�SubversionException�os�path�isdir�normpathr�abspathrrrB�rHrrr �geturl�s�rMcCs tj��}tjj|_||j_|S�N)rCrEZsvn_opt_revision_tZsvn_opt_revision_number�kind�value�number)rQ�optrevrrr rR�s

rRc@seZdZdd�ZdS)�changedpathcCs|j|_|j|_|j|_dSrN)�
copyfrom_path�copyfrom_rev�action)�self�prrr �__init__�szchangedpath.__init__N)r/r0r1rYrrrr rS�srSTFc
s�d���fdd�}z,tj|d�}	tj�|	j|||||||�WnVty^t�d���YnFty�}
z t�t	�
|
����WYd}
~
nd}
~
00t�d������t�
d�dS)N���c	sHi}|dur,t�|�D]\}}t|�||<qt�|||||f���dSrN)r�	iteritemsrS�pickle�dump�	�
orig_pathsr=�authorr(�message�pool�paths�k�v��fpZprotocolrr �receiver�s
zget_log_child.<locals>.receiver��urlr)r�SvnRaTransportrC�ra�get_log�IOErrorr\r]�	ExceptionrZforcebytestr�flushrG�_exit)rgrjrc�start�end�limit�discover_changed_paths�strict_node_historyrh�t�instrrfr �
get_log_child�s*
�
*rycKsbt���Ftdur t�td���t|j���}t	|j
g|�R�Wd�n1sT0YdS)ziFetch SVN log in a subprocess and channel them back to parent to
    avoid memory collection issues.
    Ns5debugsvnlog could not load Subversion python bindings)rrrCr�Abortr�
decodeargsZfin�readryZfout)�uiZopts�argsrrr �debugsvnlog�s
�rc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�	logstreamz$Interruptible revision log iterator.cCs
||_dSrN)�_stdout)rW�stdoutrrr rY�szlogstream.__init__c	cs�zt�|j�}Wn ty0t�td���Yn0z|\}}}}}Wn4ttfyx|durbYq�t�td�|��Yn0|VqdS)N�>Mercurial failed to run itself, check hg executable is in PATHslog stream exception '%s')	r\�loadr��EOFErrorrrzr�	TypeError�
ValueError)rW�entryr_r=r`r(rarrr �__iter__s��
zlogstream.__iter__cCs|jr|j��d|_dSrN)r��close�rWrrr r�s
zlogstream.closeN)r/r0r1�__doc__rYr�r�rrrr r��sr�c@s"eZdZdZd
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}|dur,t�|�D]\}}t|�||<q��|||||f�dSrN)rr[rS�appendr^r�rr rh*s
z*directlogstream.__init__.<locals>.receiverri)rrkrCrlrm)
rWrjrcrrrsrtrurvrhrwrr�r rY s
	�zdirectlogstream.__init__cCsdSrNrr�rrr r�?szdirectlogstream.closeN)rTF)r/r0r1r�rYr�rrrr r�s
�
r�cCs*dD] }tj�tj�||��sdSqdS)N)slocks�hookssformat�dbFT)rGrH�exists�join)r}rH�proto�xrrr �	filecheckFsr�c
Cs�z.t��}|�t�d||f�d�}|��}Wnhtjy�}z<|jdkrf|�	t
d��WYd}~dS|j��}WYd}~nd}~0ty�YdS0d|vS)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">)
rAZbuildopenerrrZstrurlr|�urlerrZ	httperror�code�warnrrgro)r}rHr��openerZrsp�datarxrrr �	httpcheckPs$�
��r�)�httpshttps�filec@seZdZdS)�NonUtf8PercentEncodedBytesNr.rrrr r�psr�cCs\tjr$t�|�}d|vrt�qX|Sn4t�|�d��}z|�d�WStyVt�Yn0dS)Nu�r)rZispy3rAZurl2pathnamer�r#r"�UnicodeDecodeError)�unicodepathrrr �url2pathname_like_subversionvs
r�cCs�z�|�dd�\}}|dkr�tjrp|dd�dkrp|dd���rp|dd���dkrp|dd�d|dd�}z|�t�}Wn.ty�|�t	d	�t�
t��YWd
S0zt|�}Wn$ty�|�t	d��YWd
S0|�
t�}Wnbt�yNd}t�|�}z|�t�Wn0t�yH|�t	d�t�
t��YYd
S0Yn0|dk�rft�|�}n(|d
v�r�t�|��s�|�t	d��d
St�|dd��}d|v�r�||||��r�dS|�dd�d}�q�d
S)Ns://r
r�r3��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.
cWsdS)NFr)r~rrr �<lambda>�r4zissvnurl.<locals>.<lambda>Tr)r9rr�isalpha�lowerr"rr�r�rZsysbytesr�r�r#r�rrKZpconvertrZ
isasciistr�protomap�getr6)r}rjr�rHr��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�Zd:dd �Zd!d"�Zd;d#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd<d/d0�Zd=d1d2�Zd>d6d7�Z�ZS)?�
svn_sourceNc
s�tt|�j||||d�t�|�d�sn|�d�sntj�|�rTtj�tj�|d��snt	||�snt
td�|��tdur�t
td���z,tjjtjjf}|dkr�t
td�|��Wnty�t
td	���Yn0i|_d}z8|�d
�}|dk�rt||dd��}|d|�}Wnt�y$Yn0t|�|_d
|_z�t����tj|jd�|_|jj|_|jj|_tj� |j�|_!t"�#|jt$|j!�d��|_%d|_&|j%|_'i|_(i|_)tj�*|j�|_+Wd�n1�s�0YWnPtjj,�y.|�-�dtjjtjjtjj.f}t
td�|j|f��Yn0|�r�t$|�dk�rRt/�0td���zt|d�}Wn*t�y�t/�0td�|d��Yn0|j1�2dd�}	|	du�r�d}	|	�3d�|_4|j1�2dd�|_5z"t|j5�|_5|j5dk�r�d|_5Wn(t�yt/�0td�|j5��Yn0z>t��� |�6|j%|�|_7Wd�n1�sD0YWnt8�yjd|_7Yn0|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 bindings)r
r5s=Subversion python bindings %d.%d found, 1.4 or later requireds=Subversion python bindings are too old, 1.4 or later requiredr2rr
sUTF-8ris%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�trunkr3ssvn.startrevs(svn: start revision %s is not an integer�no revision found in module %s�NNs.svn/entries)>�superr�rYr!r:rGrHr�r�r��NoReporrC�MissingToolrEZ
SVN_VER_MAJORZ
SVN_VER_MINOR�AttributeError�lastrevs�rfindr8r�rMrjrrrrrkrlrD�ctxZget_repos_root�baseurlrA�unquoter7r�
prevmodule�
rootmodule�commitsrcZget_uuidr>rF�	tracebackZ
SVN_VER_MICROrrzr}�config�strip�	trunkname�startrev�latest�headr-r=�last_changed�
_changescache�wc�	convertfp)
rWr}�repotyperjr��versionr�ZatZ
svnversionZtrunkcfg��	__class__rr rY�s���
���	
������






4����
���


�

4�zsvn_source.__init__cCst��|_|j��dSrN)rr�	__enter__r�rrr �before`s
zsvn_source.beforecCs|j�ddd�dSrN)r�__exit__r�rrr �afterdszsvn_source.aftercCsBi}|D].}t|�\}}}|�||�}||kr|||<q||_dSrN)r@�
setdefaultr�)rW�revmapr��revidr>rr=Z
lastrevnumrrr �	setrevmapgs
zsvn_source.setrevmapcCsLz.tj�|j�d�dt|�|d|j�WdStjjyFYdS0dS)Nr3FT)	rCrD�lsrj�rstriprBr�rErF)rWrHrRrrr r�ps�zsvn_source.existsc
s��fdd�}�fdd�}t�j�}d}|d|�}|d|��_|d|�}|r��jpRd}�jd	|7_���j�j��_�js�t�td
��j���jg�_	�jdur�d|�jp�df�_|�rl�j
�d	�}tj
�|d	t|�|d�j�}t|�D]v}	d
|||	f}
||
�j��sq��|
�j�}|�s@�j�td�|	�q�j�td�|	��|�f��j	�|�q�j�rʈj	�r�t�j	�dk�r�t�td������j	d�}|�jk�r�t�td��j���j	S)Ncs��||�}|tjjkSrN)�
_checkpathrCrE�svn_node_dir)rHr=rOr�rr rI}sz"svn_source.getheads.<locals>.isdircs��j�dd|�}|dur*|��dkr*dS|p0|�d�}��||�sz�j�|�r\|dkr\dS|rvt�td�||f��dS�j�	td�|t
�|�f�|S)Nr�ssvn.r4r3r�s&expected %s to be at %r, but not foundsfound %s at %r
)r}r�r�r�r�endswithrrzr�noter�bytestr)rr;ZcfgpathrHr�rr �
getcfgpath�s$���z'svn_source.getheads.<locals>.getcfgpathr4r�stagssbranchesr3r�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)rRr��tagsrr�r�rrzrZheadsrjr�rCrDr�rBr��sortedr}r�r=r�r�r7)
rWrIr�r;Z	oldmoduleZtrunkZbranches�rpathZbranchnames�branchrZbrevidr=rr�r �getheads|sh



�

�������zsvn_source.getheadscCs�|j|\}}i}|r,|�|||�\}|_}|s4|s�t|�\}}}	tj�|jt|�t	|	�d|j
�}
dd�t�|
�D�}t
�|_|��t�||gt|��}||fS)NTcSs"g|]\}}|jtjjkr|�qSr�rOrCrE�
svn_node_file)�.0�n�errr �
<listcomp>�s�z*svn_source._getchanges.<locals>.<listcomp>)rc�expandpaths�removedr@rCrDr�r�rBrRr�rr[�set�sortZziplistr7)rWr;�fullrc�parents�copies�filesr>rr=�entriesrrr �_getchanges�s ��zsvn_source._getchangescCsF|jd|kr"|s"|jd\}}n|�||�\}}|j|=||t�fS)Nrr
)r�r�rcr�)rWr;r�r�r�rrr �
getchanges�s
zsvn_source.getchangescCs,|�|d�\}}|||ff|_dd�|D�S)NFcSsg|]}|d�qS�rr�r��frrr r��r4z.svn_source.getchangedfiles.<locals>.<listcomp>)r�r�)rWr;�ir�r�rrr �getchangedfiles�szsvn_source.getchangedfilescCs�||jvrnt|�\}}}||_|�|�|j�|d�}||krF|d}|�||�||jvrnt�t	d�|��|j|}|j|=|S)Nrr
ssvn: revision %s not found)
r�r@r�reparentr�r��_fetch_revisionsrrzr)rWr;r>rr=�stopZ	revcommitrrr �	getcommit�s



zsvn_source.getcommit�	splicemapcCs&t�d|�s"t�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�matchrrzr)rWZrevstrZmapnamerrr �checkrevformats���zsvn_source.checkrevformatcCst|j�dd�d�|jS)Nr2r
)r8r�r6r�r�rrr �
numcommitsszsvn_source.numcommitsc
s\i}|jdur|Sg}|j}tj�|j�}|�|jg||j�}�z|D�]�}|\}}}	}
}|sbg}dd�t�|�D�}|jdd�|}
|r�|dd|kr�|�	�d}
|D]n\}}}|�
|d�s�q�|D]>}|d�
|�r�||dt|�d�}||g|dd�<q�q�|�|||g�q�d	d
�t�|�D�}t
�}|D]P}|D]D\}}}|�
|d��r@|�
||d��rr�q@|�|��q8�q@�q8|D]��fdd�|D�}�q�g}|D]�\}}}|�d�d}|�
|
��r�|�|||g��q�||v�r��q�z(|�||�}|�r||v�r|||<Wnt�y2Yn0�q�|}|
}qFW|��n
|��0|S)NcSs$g|]\}}|jr|j|j|f�qSr)rTrU�r�rXr�rrr r�5s�z&svn_source.gettags.<locals>.<listcomp>T)�reverserZr�rr3cSs(i|] \}}|jdkr|jr||j�qS)�A)rVrTrrrr �
<dictcomp>Ts�z&svn_source.gettags.<locals>.<dictcomp>cs.g|]&}|d�kr|d��d�s|�qS)r�r3)r:)r�rX�Zbadrootrr r�ds�)r�rCrl�get_latest_revnum�_getlogr�rr[r��popr:r7r�r��addr9r�r-r�)rWr�ZpendingsZtagspathrr�streamr�Z	origpathsr=r`r(rar�Zsrctagspath�sourceZ	sourcerev�dest�tagZtagpathZaddedsZbadrootsZdestrootZ	renamingsZtagnameZtagidrrr �gettagss�


�	���

�


zsvn_source.gettagsc	Cs\|js
dS|jdur.ttj�|jdd�d�|_|j�t�d||�	|�f��|j�
�dS)Nr��	hg-shamapsabs%s %d
)r�r�rrGrHr��writer�tonativeeolr=rp)rWr;Zdestrevrrr �	converted�s
��zsvn_source.convertedcCsd|j|p|j|fS)Nssvn:%s%s@%d)r>r)rWr=rrrr r��szsvn_source.revidcCst|�d�d�S)Nr2rZ)r8r9�rWr;rrr r=�szsvn_source.revnumcsd	�fdd�	}|��j�s.�j�d|�dS|durDtj��j�}z0��d�}tj��j|�	d�|�}��|�Wntj
jy�d}Yn0|s�tt
d�||f��||||j�\}}|dur�|||�\}}|dur�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�}z�|D]�}|\}}}}}	|dur<|r<q�|durP||krPq�|D]R}
|�|
�rT||
jsnqT||
j|t|
�d�}�j�d|||f�|}qqTq|s�d}||fW|��S|��0dS)Nr
s#branch renamed from %s to %s at %d
)rr:rTr7r}�debugr�)rHrrr�rr�rcr=r`r(rarX�newpathr�rr �findchanges�s2���z&svn_source.latest.<locals>.findchangessignoring foreign branch %r
r4r3s%s not found up to revision %dsignoring empty branch %r
)N)r:r�r}rrCrlrr��statr�rErFr-rZcreated_revr�)rWrHr�rr�Zdirentr=�realpathrr�r r��s4	

�zsvn_source.latestcCsX|j|kr|S|jt|�}|j}|dur.d}|j�d|�tj�|j|�||_|S)z:Reparent the svn transport and return the previous parent.Nr4sreparent to %s
)r�r�rBr}rrCrlr�)rWrZsvnurlr�rrr r��s
zsvn_source.reparentcCs�t�t�}}i}t|�dd�\}}||jkrB||_|�|j�|jjtd�td�t|�d�}	t|�D�]l\}
\}}|	j	|
|d�|�
|�}
|�|
|�}|tj
jk�r*|�|�|
��|jrh|s�qht|d�dd�\}}|j|kr�qh|�
|j|�}|s�qh|j�d|
||jf�|�|�||�|
�<qh|dk�r|j�d|j�t|d�dd�\}}|d	|
}|�|
||�}|tj
jk�r�|�|�|
��n�|tj
jk�r|�d	�}|�d	�}|�||�}|D]8}|�||�}|�
d	||�}|�r�|�|�|���q�n|j�d
||f�qh|tj
jkrh|jdk�r6qh|jdk�r�|�r�t|d�dd�\}}|�|
||�}|tj
jk�r�|�|�|
��nF|tj
jk�r�|�||�D]*}|�
d	|�}|�r�|�|�|���q�|�||�D]*}|�
d	|�}|�r�|�|�|���q�|jrh|�sqht|d�dd�\}}|j|k�r@qh|�
|j|�}|�sVqh|j�d
|||jf�|�|j|j�}|D]R}|�
d	||�}|�s��q�||t|�d�}|�
|�}|�|�||�|�<�q�qh|	��|�	|�t|�||fS)Nr
sscanning pathsspaths)Zunit�total)�itemrscopied to %s from %s@%d
s
gone from %d
r3s unknown path in revision %d: %s
�M�Rsmark %s came from %s:%d
)r�r@rr�r}Zmakeprogressrr7�	enumerate�update�
getrelpathr�rCrEr�r
�recoderTrUrr�r��
_iterfiles�replacerVZcomplete�list)rWr;rcr�Zchangedr�r��
new_moduler=Zprogressr�rH�entZ	entrypathrOZpmodule�prevnumrTZ
parentpathZfromkindZorootZnrootZchildrenZ	childpathZpkindZcopyfrompathZ
copytopathrrr r��s�
�



��



�
��

zsvn_source.expandpathsc
s�|�kr�|}�d�_��fdd�}�j�td��j|�f��zd}d}���jg|��}z||D]j}|\}}	}
}}|	�jkr�d}q�|s��j�d|	�|p�|	dk}qf|||	|
||�\}
}|
r�|
}|rfq�qfW|��n
|��0|�sP|�rP|j	�sPz>��
|j�}|dk�r8���j|d�}|�r8|j	�
|�Wnt�yNYn0WnVtjj�y�}z8|j\}}|tjjk�r�t�td	�����WYd}~n
d}~00dS)
Ncs&�j�d|t|�f�d}��|�}|�jvs8|�kr@d|fSg}tt�|��}�fdd�|D�}|r�|d\}	}
|
jr�d}|
j�j	t|	�d�}��
||
j�}|dur�t|�dd�\}
}|�j
kr�|g}�j�td	��j	||
f�n�j�d
�g}|D],\}	}
��|	�du�r�q|�|	|
f��qt|�}�j�dd��rTt|d
�}|�rf��|�}nd}|�r|��|�}nd}z$�j	�d�d}|�jk�r�d}Wnt�y�d}Yn0t|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:rr�rr r�xszFsvn_source._fetch_revisions.<locals>.parselogentry.<locals>.<listcomp>rZTr
s$found parent of branch %s at %d: %s
s)no copyfrom path, don't know what to do.
r�s
localtimezonerr4r3s%Y-%m-%d %H:%M:%S %1%2)r`r(�descr�r�r;)r}rr7r�r�r�rr[rTrr�rUr@r�r�rr r�r,�
configbool�makedatetimestampr!r9r��
IndexError�commitr
r'r�rc�
child_cset)r_r=r`r(raZbranchedr;r�Z
root_pathsrHr&rZprevidr�r'rc�logr��cset�rW�	to_revnumrr �
parselogentryds�
��

�

��

�	
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�rrrr�rr�r�r=r;r�r�r-rCrErFr~ZSVN_ERR_FS_NO_SUCH_REVISIONrrz)rWZfrom_revnumr1r2Z	firstcsetZlastonbranchrr�rcr=r`r(rar/Zfirstrevnumr�Zxxx_todo_changemerxZnumrr0r r�^s^
W
��

�



�zsvn_source._fetch_revisionsc
Cs$||jvrdSz�t|�dd�\}}|j|kr@||_|�|j�t�}tj�|j|||�}|��}|�	�t
|t�r||d}d|vr�dp�d}d|vr�dp�|}WnRtjj
y�}	z6tjjtjjf}
|	j|
vr�WYd}	~	dS�WYd}	~	n
d}	~	00|dk�rd	}|�|��r|t|�d�}||fS)
Nr�r
rZ�svn:executable�xr4ssvn:special�lslink )r�r@rr��stringiorCrlZget_file�getvaluer��
isinstancer$rErFZSVN_ERR_FS_NOT_FOUNDZSVN_ERR_RA_DAV_PATH_NOT_FOUNDZapr_errr:r7)rW�filer;r%r=�io�infor��moder�ZnotfoundZlink_prefixrrr �getfile�s6


�

zsvn_source.getfilecsl��d��tj��}d�|jt��g��d�}tj�|t	|�d|j
|�}�rT�d7��fdd�t�|�D�S)z3Enumerate all files in path at revnum, recursively.r3Tc3s(|] \}}|jtjjkr�|VqdSrNr�rrLrr �	<genexpr>s�z(svn_source._iterfiles.<locals>.<genexpr>)
r�rCrEZPoolr�r�rBrDr�rRr�rr[)rWrHr=rbr�r�rrLr r"s


�zsvn_source._iterfilescCst|dur|j}|�|�rP|�d�t|�d�}|�d�rD|dd�S|dkrP|S|j�dt�|�t�|�f�dS)Nr3r
r4s%r is not under %r, ignoring
)rr:r�r7r}rrr�)rWrHr�relativerrr r s

��zsvn_source.getrelpathc	Csf|dur|�d�}|d|}z.tj�|j|�d�|�W|durJ|�|�Sn|dur`|�|�0dS)Nr4r3)r�rCrlZ
check_pathr�)rWrHr=rr�rrr r�4s

��zsvn_source._checkpathrTFcCs�g}|D],}|�d�s$|jd|}|�|�d��q|j||||||g}	|j�dd�s`t|	�St|	�}
t	�
�}dt	�|�}t	�|�\}
}|
�
|
�z|
��Wn ty�t�td���Yn0t|�S)Nr3r�ssvn.debugsvnlogs%s debugsvnlogr�)r:rr�r�r�r}r)r��
encodeargsrZhgexecutableZ
shellquoteZpopen2rr�rnrrzrr�)rWrcrrrsrtrurvZrelpathsrXr~�argZhgexe�cmd�stdinr�rrr r@s:
�

��
zsvn_source._getlog)N)r�)N)N)N)N)rTF)r/r0r1rYr�r�r�r�r�r�r�r�r�rrrrr�r=r�r�r�r�r=r"r r�r�
__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_allowedZrulesrVZpropnamerrr �gen_pre_revprop_change_hook|s��rHc@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�dSrN)r�rG�chdirr�rrr �prerun�szsvn_sink.preruncCs|jrt�|j�dSrN)r�rGrJ�cwdr�rrr �postrun�szsvn_sink.postruncCstj�|jd|�S)Nr��rGrHr�r�)rWrrrr r��sz
svn_sink.joincCs
|�d�S)Nr�r�r�rrr �
revmapfile�szsvn_sink.revmapfilecCs
|�d�S)Nshg-authormaprOr�rrr �
authorfile�szsvn_sink.authorfilec
Cs>t�||||�t�||d�g|_g|_g|_g|_d|_t�	�|_
d}tj�
tj�|dd��r|tj�|�|_|�d�n�t�d|��stj�|�}tj�tj�|���rtj�tj�|dd��s�|�td	�tj�|��t|d
��d|�|}t�|�}|�d��sd|}d
|}tj�t�	�tj�|�d�}|�td�tj�|��|�d||�||_t�|j�|_t�|j�|_t ||�d��|_!t�"|j��r�tj#|_$nd|_$|�rgd�}|j%�&dd��r�|�'d�tj�|dd�}t(|d�}|�)t*|��|�+�t�,|dd�|�d�}	|j-�|	��.d��/�|_0dS)NssvnFr�sentriessupdates"^(file|http|https|svn|svn\+ssh)://r�sfs-types!initializing svn repository '%s'
ssvnadminscreater3sfile://s-wcs#initializing svn working copy '%s'
scheckoutshg-childmap))rssvn:log)r�hg:convert-branch)r�hg:convert-revr��svn.dangerous-set-commit-dates)r�svn:dater�spre-revprop-changeswbTsinfor
)1�converter_sinkrY�commandline�delete�setexec�delexecr�r�r�getcwdrLrGrH�isfiler�r�run0r��searchrI�dirnamer��statusr�basenamerrJr:�vfsmodr	r��wopener�mapfile�childmapZ	checkexecZisexec�is_execr}r)r�rrrHr��setflags�uuid_re�groupr�r>)
rWr}r�rHZcreatedZwcpathrG�hookrg�outputrrr rY�st
�
��
�
��
�


zsvn_sink.__init__cGstjj|jg|�R�SrNrN)rW�namesrrr �wjoin�szsvn_sink.wjoincCs�t�}|jdddd�}tjj�|�}|�d�D]R}|jD]F}|j|j	ks8|j
dkrTq8d�dd�|jD��}|�t
�|��q.q8q.|S)	NslsT)�	recursive�xmlr�r�css |]}|j|jkr|jVqdSrN)�nodeTypeZ	TEXT_NODEr�)r��crrr r>�sz$svn_sink.manifest.<locals>.<genexpr>)r�r]roZdomZminidomZparseStringZgetElementsByTagNameZ
childNodesrqZELEMENT_NODEZtagNamer�r
rZ
unitolocal)rW�mrk�docr�r�rrrr �manifest�s

�zsvn_sink.manifestcCs�d|vr|j�||�n�z tj�|�|��r6t�|�WntyJYn0|jrxd}tj�	|�|��rx|�|�|��}|j�
||�|jr�|r�d|vr�|j�|�nd|vr�|j
�|�t�|�|�dd|v�dS)Nr5Fr4)rc�symlinkrGrH�islinkrm�unlink�OSErrorrfr�rrZr�rYrrg)rW�filename�flagsr�Zwasexecrrr �putfiles&zsvn_sink.putfilecCs�|�|�}tj�|�}|rTtjdtj�|�d�\}}t�|�t�|�t�	||�zP|�
d||�W|j�|�|r�zt�|�Wnt
y�Yn0t�	||�n@|j�|�|r�zt�|�Wnt
y�Yn0t�	||�0dS)Nshg-copy-)�prefix�dirscopy)rmrGrH�lexistsr�mkstempr_r�rx�renamer]rur
ry)rWrr
Zwdestr��fdZtempnamerrr �	_copyfiles2
�


�zsvn_sink._copyfilecsdt�}|D]T�tj�|����r*|���t���t��fdd�d�D]�|��d���qFq
|S)Ncs��dd��S)Nr3r)r�r�r�r�rr r�;r4z"svn_sink.dirs_of.<locals>.<lambda>rZ)r�rGrHrIrmr
r7�iter)rWr��dirsrr�r �dirs_of5s
zsvn_sink.dirs_ofcsB�fdd�t��|��D�}|r>�j�|��j|dddd�|S)Ncsg|]}|�jvr|�qSr�ru)r��dr�rr r�@sz%svn_sink.add_dirs.<locals>.<listcomp>�addT)Z
non_recursive�quiet)r�r�rur�xargs)rWr��add_dirsrr�r r�?s
�zsvn_sink.add_dirscs6�fdd�|D�}|r2�j�|��j|ddd�|S)Ncsg|]}|�jvr|�qSrr�r�r�rr r�Ir4z&svn_sink.add_files.<locals>.<listcomp>r�T)r�)rurr�)rWr�rr�r �	add_filesHs
zsvn_sink.add_filescCs||j|<dSrN)re)rW�parent�childrrr �addchildOszsvn_sink.addchildcCsd|j|fS)Ns	svn:%s@%s)r>rrrr r�Rszsvn_sink.revidc		Cs0|D].}	z|�|j|	�WSty0Yq0q|D]X\}
}|�|
|�\}}
|durf|j�|
�q8|�|
|
|�|
|vr8|j�||
|
g�q8|r�|j�t	|j
�|���dd�|D�}t|j�}t
|�}|�|�|�|���|j�r|jD]\}}|�||�q�g|_|j�rD|�|jd�|jD]}
|j
�|
��q*g|_|�|�|�|���|j�rx|�|jdd�g|_|j�r�|�|jddd�g|_tjdd	�\}}t�|d
�}|�t�|j��|���zN|jdt �!|j"�|dd
�}z|j#�$|��%d�}Wnft&�yh|�s:|�r&|dndYWt�'|�S|j(�)t*d��|j(�)|�t+�,t*d���Yn0|j-�r�|j.dd|j-d|d�|j/�r�|j/dk�r�|j.dd|j/d|d�|j(�0dd��r�t1�2|j3�}|ddf}|j.ddt4|�d|d�|D]}	|�5|	|��q�|�|�Wt�'|�St�'|�0dS)NcSsg|]}|d�qSr�rr�rrr r�ir4z&svn_sink.putcommit.<locals>.<listcomp>sdeletespropdelr3spropset�*shg-convert-)r}�wbscommitsutf-8)�usernamer9rr
rsNonesunexpected svn output:
sunable to cope with svn outputrST)ZrevpropZrevisionsdefaultrRr�rTrU)6r�re�KeyErrorr=rXr�r|r��extendr�ru�
differencer��	frozensetrr�r�r��remover�rZrYrr�rG�fdopenrrrr(r�r]rZ	shortuserr`�	commit_rer^rir�rxr}r�rrrzr;�runr�r)r
r+r(r)r�)rWr�r�r�r,rr�r�Zcleanp2r�r�rer�r<r�r%r�r�Zmessagefilergrkr;r(rrr �	putcommitUs�


�)
�����

�zsvn_sink.putcommitcCs|j�td��dS)Ns/writing Subversion tags is not yet implemented
r�)r}r�r)rWr�rrr �puttags�szsvn_sink.puttagscCsdS)NTrrrrr �hascommitfrommap�szsvn_sink.hascommitfrommapcCs$||jvrdSt�td�|��dS)NTs_splice map revision %s not found in subversion child map (revision lookups are not implemented))rerrzrrrrr �hascommitforsplicemap�s
���zsvn_sink.hascommitforsplicemapN)r/r0r1r��compile�Mr�rhrKrMr�rPrQrYrm�
propertycacherur|r�r�r�r�r�r�r�r�r�r�rrrr rI�s,H

	drI)rTF)PZ
__future__rrrrGr�Zxml.dom.minidomroZmercurial.i18nrZmercurial.pycompatrZ	mercurialrrrrr	rbZmercurial.utilsr
rrrprr\r6r�r�rArWr,rVZconverter_sourcer{r@r*rdr�r�rCZ
svn.clientZsvn.coreZsvn.raZ	svn.deltar�warnings�filterwarnings�DeprecationWarningrErF�ImportErrorrr!r&r)r,ror-r@rBrMrR�objectrSryrr�r$r�r�r�r�r�r�r�r�rFrHrIrrrr �<module>s��

�
/+
�U

Youez - 2016 - github.com/yon3zu
LinuXploit