o ^Ub,@sddlmZddlZddlZddlZddlZddlmZddlm Z m Z ddl m Z m Z mZmZddlmZmZddlmZmZejZejZejZejZejZejZGd d d eZdS) )absolute_importN)_)getattropen)encodingerrorpycompatutil)dateutilprocutil)commoncvspscs^eZdZdfdd ZddZddZdd Zd d Zd d ZddZ ddZ ddZ Z S) convert_cvsNcstt|j||||dtj|d}tj|s!ttd|t dddd|_ i|_ i|_ i|_ d|_ttj|dddd|_ttj|d ddd|_tj|_|dS) N)revssCVSs$%s does not look like a CVS checkoutcvs)debnamesRootrbs Repository)superr__init__ospathjoinexistsNoRepor checktool changesetfilestags lastbranchsocketrreadcvsrootcvsrepor_connect)selfuirepotyperrcvs __class__3/usr/lib/python3/dist-packages/hgext/convert/cvs.pyr,s  "" zconvert_cvs.__init__c Cs|jdurdSi|_d}|jr:t|jdkrttdz t|jd}Wnty9ttd|jdwt }zt |j d}|j ddsPd}tj|j |d}tj|j |t|j dd |j dd |j dd d }|D]}|r|j|krnxd |j}||j|_||j|j<||j|_|j ddrt|jd|_t|jd}|jt |j|i}|j!D]} dd"dd| j#Dddg| j$f|| j%<qt&|j|dd|j'D|j|jpdd} | |j|<||j(|<qv|j)|_*Wt |dSt |w)Nrr s4cvs source does not support specifying multiple revss$revision %s is not a patchset numbersupdatesconverts cvsps.cache)caches cvsps.fuzzs cvsps.mergetoscvsps.mergefrom)fuzzmergeto mergefrom%ds localtimezones%Y-%m-%d %H:%M:%S %1%2s%s%s.cSsg|]}d|qSr2r,).0xr,r,r- vsz&convert_cvs._parse..(DEAD)cSsg|]}d|jqSr4)id)r5pr,r,r-r7~s)authordateparentsdescbranch)+rrlenrAbortrint ValueErrorrgetcwdrchdirrr' configboolr createlogcreatechangesetconfigr:recoder<r r@commentmakedatetimestampr=r datestrrupdatedictfromkeysentriesrrevisiondeadfilecommitr>rvaluesheads) r&maxrevdr.dbcsr:r=rfcr,r,r-_parse@sx           zconvert_cvs._parsec CsP|j}d}d\}}ddg}|jtd||dr|dd}td|}|rd}|\}}}} }|s9d }| s>d } nt| } d |||f} d ||| |f} |sd }t j d} z5t | d} | D]#}|dd\}}|dkr|dd\}}| }n| }||kr|}nqg| Wn"ty}z|jtjkrt|dds| |_WYd}~nd}~wwt}||| f|dd|||ddg|ddkrttd|d|_|_|s|drd}|dd}|s'|dr|d d}td!|}t j |s|sd}nd"}|!d|!d#|!d$}}}|dkr_|d"krLt"j#$d%p9d&}|rF|d'||g|}n||g|}dd(d)|D}t%&|\|_|_||_'|j(d*||j(d+|j(d,|j)|j*}|d-sttd.|d/|vr|j(d0|j)|j*dSdS)1NNNrsserversconnecting to %s s :pserver: z-(?:(.*?)(?::(.*?))?@)?([^:/]*)(?::(\d*))?(.*)spservers anonymousia s:pserver:%s@%s:%ss:pserver:%s@%s:%d%sAs ~/.cvspassr r s/1filename sBEGIN AUTH REQUESTsEND AUTH REQUESTr8s I LOVE YOU s!CVS pserver authentication failedsr+s:local:slocals:ext:s(?:([^@:/]+)@)?([^:/]+):?(.*)srshsCVS_RSHssshs-lcss|]}t|VqdSN)r shellquote)r5argr,r,r- sz'convert_cvs._connect..sRoot %s scValid-responses ok error Valid-requests Mode M Mbinary E Checked-in Created Updated Merged Removed svalid-requests sValid-requestssKunexpected response from CVS server (expected "Valid-requests", but got %r)s UseUnchangeds UseUnchanged )+r#r'statusr startswithrematchgroupsrCrr expanduserrr" splitlinessplitcloseIOErrorerrnoENOENTrrdr!connectsendrrecvrrBmakefilewritepreadpisdirgrouprenvirongetr popen2realrootwriteflushreadline)r&rootconntypeuserhostcmdmpasswservportformat0format1cvspasspflinepart1part2formatinstsckrshrr,r,r-r%s              "          zconvert_cvs._connectcC||jSrk)r_rXr&r,r,r-getheadszconvert_cvs.getheadsc Csdd}||drdSd|}||jd||D] }|jd|q!|jd|j|jd }d} |j }| d sN| d rs|j |j |j dd }t |j dd } ||j | }nl| dr||dd7}n^| drnX| drt |j dd } ||j | }nA|dkr|durt td|d|vrdpd fS| dr|jtd|ddn| dr|j n t td|q?)NcSs^d}t}|dkr+|t||}|sttd||t|8}|||dks |S)Nirs!%d bytes missing from remote file) stringior"minrrBrrArgetvalue)fpcount chunksizeoutputdatar,r,r- chunkedreads   z(convert_cvs.getfile..chunkedreadr9r`s-N -P -kk -r %s --/s Argument %s sDirectory . %s co r8TsCreated sUpdated rrcr sM sMbinary sok smalformed response from CVSxsE scvs server: %s risRemovesunknown CVS response: %s)r_endswithrvappendr$rrrrrrrprCrrBrr'warn) r&namerevrargsr6rmoderrr,r,r-getfilesJ            zconvert_cvs.getfilecCs6|r ttd|tt|j|itfS)Ns(convert from cvs does not support --full) rrBrr_sortedr iteritemsrset)r&rfullr,r,r- getchanges<szconvert_cvs.getchangescCs||j|Srk)r_r)r&rr,r,r- getcommitBs zconvert_cvs.getcommitcCrrk)r_rrr,r,r-gettagsFrzconvert_cvs.gettagscCs|t|j|Srk)r_rr)r&rir,r,r-getchangedfilesJszconvert_cvs.getchangedfilesrk) __name__ __module__ __qualname__rr_r%rrrrrr __classcell__r,r,r*r-r+sIw8r) __future__rryrrqr!mercurial.i18nrmercurial.pycompatrr mercurialrrrr mercurial.utilsr r r rrrrVconverter_sourcerMrrr,r,r,r-s"