o ^ÍUb‰,ã@s¸ddlmZddlZddlZddlZddlZddlmZddlm Z m Z ddl m Z m Z mZmZddlmZmZddlmZmZejZejZejZejZejZejZGd d „d eƒZdS) é)Úabsolute_importN)Ú_)ÚgetattrÚopen)ÚencodingÚerrorÚpycompatÚutil)ÚdateutilÚprocutilé)ÚcommonÚcvspscs^eZdZd‡fdd„ Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z ‡Z S)Ú convert_cvsNcsÄtt|ƒj||||dtj |d¡}tj |¡s!ttdƒ|ƒ‚t dddd|_ i|_ i|_ i|_ d|_ttj |d¡dƒ ¡dd…|_ttj |d ¡dƒ ¡dd…|_tj|_| ¡dS) N)ÚrevssCVSs$%s does not look like a CVS checkoutócvs)ÚdebnamesRootórbéÿÿÿÿs Repository)ÚsuperrÚ__init__ÚosÚpathÚjoinÚexistsÚNoReporÚ checktoolÚ changesetÚfilesÚtagsÚ lastbranchÚsocketrÚreadÚcvsrootÚcvsreporÚ_connect)ÚselfÚuiÚrepotyperrÚcvs©Ú __class__©ú3/usr/lib/python3/dist-packages/hgext/convert/cvs.pyr,s  "" zconvert_cvs.__init__c Cs|jdurdSi|_d}|jr:t|jƒdkrt tdƒ¡‚z t|jdƒ}Wnty9t tdƒ|jd¡‚wt  ¡}zÈt   |j ¡d}|j  dd¡sPd}tj|j |d}tj|j |t|j  dd ¡ƒ|j  dd ¡|j  dd ¡d }|D]‚}|r|j|krnxd |j}| |j¡|_||j|j<| |j¡|_|j  dd¡r©t|jdƒ|_t |jd¡}|j t  |j|¡¡i}|j!D]} dd "dd„| j#Dƒ¡ddg| j$f|| j%<qÀt&|j|dd„|j'Dƒ|j|jpëdd} | |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)ÚfuzzÚmergetoÚ mergefromó%ds localtimezones%Y-%m-%d %H:%M:%S %1%2s%s%só.cSsg|]}d|‘qS©r2r,)Ú.0Úxr,r,r-Ú vsz&convert_cvs._parse..óó(DEAD)cSsg|]}d|j‘qSr4)Úid)r5Úpr,r,r-r7~s)ÚauthorÚdateÚparentsÚdescÚbranch)+rrÚlenrÚAbortrÚintÚ ValueErrorrÚgetcwdrÚchdirrr'Ú configboolrÚ createlogÚcreatechangesetÚconfigr:Úrecoder<r r@ÚcommentÚmakedatetimestampr=r ÚdatestrrÚupdateÚdictÚfromkeysÚentriesrÚrevisionÚdeadÚfileÚcommitr>rÚvaluesÚheads) r&ÚmaxrevÚdr.ÚdbÚcsr:r=rÚfÚcr,r,r-Ú_parse@sx ÿÿ ÿÿ   û    þû  zconvert_cvs._parsec CsP|j}d}d\}}ddg}|j tdƒ|¡| d¡rã|dd…}t d|¡}|rãd}| ¡\}}}} }|s9d }| s>d } nt| ƒ} d |||f} d ||| |f} |s³d }t j   d¡} z5t | dƒ} |   ¡ ¡D]#}| dd¡\}}|dkr€| dd¡\}}| }n| }||krŠ|}nqg|  ¡Wn"ty²}z|jtjkr¨t|ddƒs§| |_‚WYd}~nd}~wwt ¡}| || f¡| d d|||ddg¡¡| d¡dkrÚt tdƒ¡‚| d¡|_|_|sò| d¡ròd}|dd…}|s'| d¡r|d d…}t d!|¡}t j   |¡s|sd}nd"}| !d¡| !d#¡| !d$¡}}}|dkr_|d"krLt"j# $d%¡p9d&}|rF|d'||g|}n||g|}d d(d)„|Dƒ¡}t% &|¡\|_|_||_'|j (d*|¡|j (d+¡|j (d,¡|j )¡|j *¡}| d-¡st td.ƒ|¡‚d/|vr¦|j (d0¡|j )¡|j *¡dSdS)1N©NNrsserversconnecting to %s s :pserver:é z-(?:(.*?)(?::(.*?))?@)?([^:/]*)(?::(\d*))?(.*)spservers anonymousia s:pserver:%s@%s:%ss:pserver:%s@%s:%d%sóAs ~/.cvspassró r s/1Úfilenameó sBEGIN AUTH REQUESTsEND AUTH REQUESTr8é€s I LOVE YOU s!CVS pserver authentication failedsr+s:local:slocalés:ext:és(?:([^@:/]+)@)?([^:/]+):?(.*)srshéésCVS_RSHssshs-lcss|]}t |¡VqdS©N)r Ú shellquote)r5Úargr,r,r-Ú ås€z'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Ú startswithÚreÚmatchÚgroupsrCrrÚ expanduserrr"Ú splitlinesÚsplitÚcloseÚIOErrorÚerrnoÚENOENTrrdr!ÚconnectÚsendrÚrecvrrBÚmakefileÚwritepÚreadpÚisdirÚgrouprÚenvironÚgetr Úpopen2ÚrealrootÚwriteÚflushÚreadline)r&ÚrootÚconntypeÚuserÚhostÚcmdÚmÚpasswÚservÚportÚformat0Úformat1ÚcvspassÚpfÚlineÚpart1Úpart2ÚformatÚinstÚsckÚrshÚrr,r,r-r%‰sÄ     þ    ý€ÿúÿÿ     "   ÿ    ÿüÿ   ýzconvert_cvs._connectcCó| ¡|jSrk)r_rX©r&r,r,r-Úgetheadsózconvert_cvs.getheadsc CsÀdd„}| ¡| d¡rdSd| ¡}| |jd|¡|D] }|j d|¡q!|j d|j¡|j ¡d }d} |j   ¡}|  d ¡sN|  d ¡rs|j   ¡|j   ¡|j   ¡dd …}t |j   ¡dd …ƒ} ||j | ƒ}nl|  d¡r||dd…7}n^|  d¡r‡nX|  d¡ržt |j   ¡dd …ƒ} ||j | ƒ}nA|dkr·|dur­t  tdƒ¡‚|d|vr´dpµd fS|  d¡rË|j tdƒ|dd…¡n|  d¡rÖ|j   ¡n t  tdƒ|¡‚q?)NcSs^d}tƒ}|dkr+| t||ƒ¡}|st tdƒ|¡‚|t|ƒ8}| |¡|dks | ¡S)Nirs!%d bytes missing from remote file) Ústringior"ÚminrrBrrAr‡Úgetvalue)ÚfpÚcountÚ chunksizeÚoutputÚdatar,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 CVSóxsE scvs server: %s risRemovesunknown CVS response: %s)r_ÚendswithrvÚappendr$rr‡r†rˆr€r‰rprCrrBrr'Úwarn) r&ÚnameÚrevr«Úargsr6rªÚmoder—r§r,r,r-ÚgetfilesJ            çzconvert_cvs.getfilecCs6|r t tdƒ¡‚| ¡tt |j|¡ƒitƒfS)Ns(convert from cvs does not support --full) rrBrr_ÚsortedrÚ iteritemsrÚset)r&r²Úfullr,r,r-Ú getchanges<szconvert_cvs.getchangescCs| ¡|j|Srk)r_r)r&r²r,r,r-Ú getcommitBs zconvert_cvs.getcommitcCrŸrk)r_rr r,r,r-ÚgettagsFr¢zconvert_cvs.gettagscCs| ¡t|j|ƒSrk)r_r¶r)r&r²Úir,r,r-ÚgetchangedfilesJszconvert_cvs.getchangedfilesrk) Ú__name__Ú __module__Ú __qualname__rr_r%r¡rµrºr»r¼r¾Ú __classcell__r,r,r*r-r+sIw8r)Ú __future__rryrrqr!Úmercurial.i18nrÚmercurial.pycompatrrÚ mercurialrrrr Úmercurial.utilsr r Úr rr£rrVÚconverter_sourcerMrrr,r,r,r-Ús"