3
Pf$ @ s d dl mZ d dlZd dlZd dlZd dlmZ d dlm Z d dl
mZmZ d dl
mZ d dlmZmZ ejdZejd Zejd
ZejdZejdZejd
ZejeZG dd deZdd Zeje dS ) )absolute_importN)parse)Link)rmtreedisplay_path)
indent_log)vcsVersionControlz
url="([^"]+)"zcommitted-rev="(\d+)"z URL: (.+)zRevision: (.+)z\s*revision="(\d+)"z(.*)c s e Zd ZdZdZdZd"Zdd Zd
d Zdd
Z dd Z
dd Zdd Zdd Z
fddZdd Zdd Zdd Zdd Zed d! Z ZS )#
Subversionsvnz.svncheckoutsvn+sshsvn+http svn+httpssvn+svnc C s |j dj| j s td| | jd|gdddid}tj|}|sftjdt | tj
d | d
S |jdj }t
j|}|stjdt | tj
d | |d
fS ||jdfS )z/Returns (url, revision), where both are strings/zBad directory: %sinfoFZLANGC)show_stdoutZ
extra_environz'Cannot determine URL of svn checkout %sz!Output that cannot be parsed:
%sN z,Cannot determine revision of svn checkout %s)NN)rstripendswithdirnameAssertionErrorrun_command_svn_url_researchloggerwarningr debuggroupstrip_svn_revision_re)selflocationoutputmatchurl r( /usr/lib/python3.6/subversion.pyget_info s,
zSubversion.get_infoc C st | j \}}t||}| j|}tjd|| t 6 tjj|rJt | | j
dg| ||g dd W dQ R X dS )z@Export the svn repository at the url to the destination locationz!Exporting svn repository %s to %sexportF)r N)get_url_revget_rev_optionsremove_auth_from_urlr r r ospathexistsr r )r# r$ r' revrev_optionsr( r( r) r+ ; s
zSubversion.exportc C s | j dg| ||g d S )Nswitch)r )r# destr' r3 r( r( r) r4 J s zSubversion.switchc C s | j dg| |g d S )Nupdate)r )r# r5 r3 r( r( r) r6 M s zSubversion.updatec C st | j \}}t||}| j|}|r.d| }nd}| j||||rptjd||t| | jddg| ||g d S )Nz (to revision %s) zChecking out %s%s to %sr z-q)r, r- r. Zcheck_destinationr r r r )r# r5 r' r2 r3 Zrev_displayr( r( r) obtainP s
zSubversion.obtainc C sf x`|D ]X}t |j}|sqd|kr@dj|jdd d j }n|}||jkr|jddd S qW d S )N-r #r )r egg_fragmentjoinsplitlowerkey)r# distZdependency_linksr' r<