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/tracopt/versioncontrol/svn/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/tracopt/versioncontrol/svn/__pycache__/svn_prop.cpython-310.pyc
o

�k�`M�@s�ddlZddlmZddlTddlmZmZddlmZddl	m
Z
ddlmZm
Z
ddlmZdd	lmZmZdd
lmZddlmZGdd
�d
e�ZGdd�de�Zdd�Zdd�Zdd�Zddd�ZGdd�de�ZdS)�N)�
ConfigSection)�*)�
NoSuchNode�RepositoryManager)�IPropertyRenderer)�IPropertyDiffRenderer)�Ranges�	to_ranges)�tag)�_�tag_)�chrome_resource_path)�_path_within_scopec@s^eZdZee�eddddid�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dS)�SubversionPropertyRenderer�
svn:externalsaThe TracBrowser for Subversion can interpret the `svn:externals`
        property of folders. By default, it only turns the URLs into links as
        Trac can't browse remote repositories.

        However, if you have another Trac instance (or an other repository
        browser like [http://www.viewvc.org/ ViewVC]) configured to browse the
        target repository, then you can instruct Trac which other repository
        browser to use for which external URL. This mapping is done in the
        `[svn:externals]` section of the TracIni.

        Example:
        {{{
        [svn:externals]
        1 = svn://server/repos1                       http://trac/proj1/browser/$path?rev=$rev
        2 = svn://server/repos2                       http://trac/proj2/browser/$path?rev=$rev
        3 = http://theirserver.org/svn/eng-soft       http://ourserver/viewvc/svn/$path/?pathrev=25914
        4 = svn://anotherserver.com/tools_repository  http://ourserver/tracs/tools/browser/$path?rev=$rev
        }}}
        With the above, the
        `svn://anotherserver.com/tools_repository/tags/1.1/tools` external will
        be mapped to `http://ourserver/tracs/tools/browser/tags/1.1/tools?rev=`
        (and `rev` will be set to the appropriate revision number if the
        external additionally specifies a revision, see the
        [%(svnbook)s SVN Book on externals] for more details).

        Note that the number used as a key in the above section is purely used
        as a place holder, as the URLs themselves can't be used as a key due to
        various limitations in the configuration file parser.

        Finally, the relative URLs introduced in
        [http://subversion.apache.org/docs/release-notes/1.5.html#externals Subversion 1.5]
        are not yet supported.
        �svnbookz>http://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html)�doc_argscCs
i|_dS�N)�_externals_map)�self�r�E/usr/lib/python3/dist-packages/tracopt/versioncontrol/svn/svn_prop.py�__init__Is
z#SubversionPropertyRenderer.__init__cCs|dvrdS|dvrdSdS)N)r�svn:needs-lock���
svn:mergeinfo�svnmerge-blocked�svnmerge-integrated�rr�r�name�moderrr�match_propertyNs
�z)SubversionPropertyRenderer.match_propertycCsN|dkr|�||�S|dkr|�|�S|dks|�d�r%|�||||�SdS)Nrrr�	svnmerge-)�_render_externals�_render_needslock�
startswith�_render_mergeinfo)rr!r"�context�propsrrr�render_propertyTs
�z*SubversionPropertyRenderer.render_propertycCs|od|vS)Nz://r)r�urlrrr�_is_abs_url\sz&SubversionPropertyRenderer._is_abs_urlcCsR|js4|j��D]+\}}|��}t|�dkr|j�d|�q|\}}|�dd��dd��dd�|j|<qg}|��D]�}|��}|sCq:|d	d
|d}}	}
|�	d�r_|�
|ddddf�q:t|�d
kro|d}	|	�dd
�}	|�|
�s|�
|ddddf�q:g}|
}|r�||jvs�|dkr�nt�|�\}}
|�
|
�|s�|j�
|�}|	r�d|	nd
}|s�|
�	d�s�|
�	d�r�|
�dd�}|r�d
}|r�tjt|��}|�
|||||||	d�f�q:|�
|||
ddf�q:g}|D]5\}}	}
}}|}|
dur�d
}n|�r|
�rd|
}
||	|
7}d
�||	|
f�}ntd�}|�
|||f�q�t�dd�|D��S)NrzRsvn:externals entry %s doesn't contain a space-separated key value pair, skipping.�%z%%z$pathz%(path)sz$revz%(rev)sr�����#��z-r�/z
 at revision zhttp://zhttps://)�path�revz in z'No svn:externals configured in trac.inic	Ss(g|]\}}}t�tj|||d���qS))�href�title)r
�li�a)�.0�labelr7r8rrr�
<listcomp>���z@SubversionPropertyRenderer._render_externals.<locals>.<listcomp>)r�svn_externals_section�options�split�len�log�warning�replace�
splitlinesr'�appendr-�	posixpath�get�join�reversedrr
�ul)r�prop�dummykey�value�key�	externals�external�elements�	localpathr6r,�prefix�base_url�prefr7�revstr�
remotepath�externals_datar<r8rrrr%_s��

�


���
�z,SubversionPropertyRenderer._render_externalscCs$t|jd�}tj|td�td�d�S)Nzcommon/lock-locked.pngz
needs lock)�src�altr8)r
�reqr
�imgr)rr)r,rrrr&�sz,SubversionPropertyRenderer._render_needslockc	
Cs�g}||��D]0}z|�dd�\}}|�t�|�t�|�dd��g�Wqty8|�tj|dd��Yqwtjt�dd�|D��d	d
�S)N�:r3�,�,​r��colspancS�g|]}t�|��qSr�r
�tr)r;�rowrrrr=��z@SubversionPropertyRenderer._render_mergeinfo.<locals>.<listcomp>r*��class_)	rF�rsplitrGr
�tdrE�
ValueError�table�tbody)	rr!r"r)r*�rowsrgr5�revsrrrr(�s
���z,SubversionPropertyRenderer._render_mergeinfoN)�__name__�
__module__�__qualname__�
implementsrrr?rr#r+r-r%r&r(rrrrr!s!�$Arc@�$eZdZee�dd�Zdd�ZdS)�SubversionMergePropertyRenderercC�|dvrdSdS�Nrrrrr rrrr#���z.SubversionMergePropertyRenderer.match_propertyc!
Cs�|dv}|�d�r
td�ntd�}|rdnd}|jjj}|jj}	t|j��|�}
|jj}|rI|
�	|	|�}i}
|�
�D]\}}||
vrH|d|
|<q:g}g}|�d�rY||��}n||�
�}|D]�}|�dd�\}}t|
j|�}|durvqa|��}t|�\}}d	�|�}d
}z�|
�	||�}|jj�d|�}d|�|�v�r&t||�t||||�g}|r�d	�|�}|�ttd
�|||td���|�r|
�|�}|s�|��}tt|p�d|d��}|tt|��8}t|||�}|r�|tt|��8}|�r|
�	|t|��}|�||||f�Wqat|�}|�ttd�|||��|�d
|dd�|D�f�WqaWnt �y3d}Ynw|�!d	d�}|�||t"�#d|�t"j#||d�gf�qai}dd�|D�}|�r`|
�$|�}|D]4\}}}}||v�rv|t||�M}n|�%�|�ttd�||t|���|�d
|dd�|D�f��qb|�s�dS|�&�|�r�|dd�r�t"j'td�ddd�} nd} t"| t"j(t"�)dd�|D��dd ��S)!z�Parse svn:mergeinfo and svnmerge-* properties, converting branch
        names to links and providing links to the revision log for merged
        and eligible revisions.
        )rr�blocked�mergedrNr3r$r_r`F�source�LOG_VIEWznon-inheritablez,merged on the directory itself but not below�eligiblecSrdr�r
rl�r;�eachrrrr=�rhzCSubversionMergePropertyRenderer.render_property.<locals>.<listcomp>Trar4rbcSs g|]\}}}}|t|�f�qSr)�min)r;�spath�noderrgrrrr=s
�cSrdrr�r�rrrr=
rhr0rz(toggle deleted branches)ztrac-toggledeletedr1)rjr7cSs(g|]\}}}tj||rdndd��qS)ztrac-deletedNrire)r;�deletedr�rgrrrr=r>r*ri)*�endswithr�resource�parent�idr�env�get_repository�version�get_node�get_copy_ancestryr'rArFr�scope�strip�_partition_inheritablerJ�child�perm�_get_source_link�_get_revs_linkrGrI�get_branch_origin�set�ranger�_get_blocked_revs�maxr	rrEr
rl�_get_changed_revs�clear�sortr:rnro)!rr!r"r)r*�has_eligible�
revs_label�	revs_cols�reponame�target_path�repos�
target_revr��
branch_startsr5r6rp�eligible_infos�sources�linerqr��inheritable�non_inheritabler�r�rg�	first_revrr{�changed_revs�
changed_nodes�
toggledeletedrrrr+�s�
�

�
�
������

�
�����z/SubversionMergePropertyRenderer.render_propertyN)rrrsrtrurr#r+rrrrrw��rwcCsPgg}}|�d�D]}|r|ddkr|�|dd��q
|�|�q
||fS)z?Non-inheritable revision ranges are marked with a trailing '*'.r`r0rN)rArG)rqr�r��rrrrr�s
r�c	Csj|dkr|�dd�}ndS|��D]!}z|�dd�\}}|�d�|kr(|WSWqty2YqwdS)zXReturn the revisions blocked from merging for the given property
    name and path.
    rrr/r_r3r4)rIrFrAr��	Exception)r*r!r5rMr��prqrrrr�'s
��r�cCs8|jjj}tjd|td�|jj|pd||jjd�d�S)z Return a link to a merge source.r4zView merge sourceN)r6�r8r7)	r�r�r�r
r:rr7�browserr�)r�r)r�rrrr�8s
��r�cCs�|jjj}|stj|td�d�Sd|vsd|vr$|jj|pd||d�}n
|j�||p+d|�}|�	dd�}|r>td||d	�}n|}tj
|||d
�S)z�Return a link to the revision log when more than one revision is
    given, to the revision itself for a single revision, or a `<span>`
    with "no revision" for none.
    zNo revisions)r8r`�-N)rqz, z%(title)s: %(revs)s)r8rqr�)r�r�r�r
�spanrr7rC�	changesetrEr:)r<r)r�rqr8r��	revs_hrefrrrr�?s
r�c@rv)�#SubversionMergePropertyDiffRenderercCrxryr)rr!rrr�match_property_diffXrzz7SubversionMergePropertyDiffRenderer.match_property_diffc#
s�t|j�}|�|jjj����fdd�}||�}	||�}
��d�}td�td�g|}td�td�g|}
td�}td	�}g}i}g}|
��D]`\�\}}�|	v}|rYt	�}}n|	�
��\}}||}||}|sm|smqG||}||}t||B|B|B�}z���|d
�}|�
||df�Wn	ty�Ynw|�
�|||||f�qG|r���|�}�fdd
�}g}|D]c\�}}}}}�|vr�t	|��}||M}||M}||M}||M}|s�|�r|r�td�} nd} |�
�t�|�| g|o�t||||��|�ot|
|||��|�ot||||��|�ot||||��f�q�g}!|	��D]\�}|!�
�t�|�f��q#|�s9|!�rW|��|!��tjt�dd�|D�dd�|!D��dd�}"nt�td��}"t�tdt���d�|"�S)Nc
s~i}|�}�dkr|��n|��}|D](}|�dd�\}}t�j|�}|dur<t|�\}}	tt|��tt|	��f||<q|S)Nrr_r3)rFrArr�r�r�r)
r*r�rO�linesr�r5rqr�r�r�)r!r�rr�
parse_sourcescs�

��zOSubversionMergePropertyDiffRenderer.render_property_diff.<locals>.parse_sourcesr{zmerged: z	blocked: zreverse-merged: zun-blocked: zmarked as non-inheritable: zunmarked as non-inheritable: r0rcs&|rt|�}t|�dd�|�|�SdS)Nr`ra)r	r�rE)rqr))r�rr�	revs_link�s��zKSubversionMergePropertyDiffRenderer.render_property_diff.<locals>.revs_linkz (added)cSs(g|]}t�dd�|dd�D���qS)css�|]}t�|�VqdSrr�)r;�crrr�	<genexpr>�s�zVSubversionMergePropertyDiffRenderer.render_property_diff.<locals>.<listcomp>.<genexpr>r3Nre)r;�colsrrrr=�s �zLSubversionMergePropertyDiffRenderer.render_property_diff.<locals>.<listcomp>c	Ss0g|]\}}t�t�|�tjtd�dd���qS)�removedrrb)r
rfrlr)r;r�r[rrrr=�s$�r*riz# (with no actual effect on merging)zProperty %(prop)s changed)rM)rr�r�r�r�r�r�r�itemsr��pop�sortedr�rGrr�r�r
r�rnro�emr9r�strong)#rr!�old_context�	old_props�new_context�	new_propsr@�rmr��old_sources�new_sourcesr{�added_label�
removed_label�added_ni_label�removed_ni_labelr�r�r��new_revs�new_revs_ni�	new_spath�old_revs�old_revs_ni�addedr��added_ni�
removed_nirqr�r��modified_sources�status�removed_sources�changesr)r!r�r�r�render_property_diff\s�


��



�
�
���
������z8SubversionMergePropertyDiffRenderer.render_property_diffN)rrrsrtrurr�r�rrrrr�Sr�r�r)rH�trac.configr�	trac.core�trac.versioncontrol.apirr�"trac.versioncontrol.web_ui.browserr�$trac.versioncontrol.web_ui.changesetr�	trac.utilrr	�trac.util.htmlr
�trac.util.translationrr�trac.web.chromer
�!tracopt.versioncontrol.svn.svn_fsr�	Componentrrwr�r�r�r�r�rrrr�<module>s&l



https://t.me/RX1948 - 2025