
    cg,                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZ d dl	m
Z
mZmZ d dlmZmZ ddlmZmZ ej        Zej        Zej        Zej        Zej        Zej        Z G d d	e          ZdS )
    N)_)getattropen)encodingerrorutil)dateutilprocutil   )commoncvspsc                   P     e Zd Zd fd	Zd Zd Zd Zd Zd Zd Z	d	 Z
d
 Z xZS )convert_cvsNc                    t          t          |                               ||||           t          j                            |d          }t          j                            |          st          t          d          |z            t          dd           d | _
        i | _        i | _        i | _        d | _        t          t          j                            |d          d                                          d d         | _        t          t          j                            |d	          d                                          d d         | _        t&          j        | _        |                                  d S )
N)revss   CVSs$   %s does not look like a CVS checkout   cvs)debnames   Root   rbs
   Repository)superr   __init__ospathjoinexistsNoRepor   	checktool	changesetfilestags
lastbranchsocketr   readcvsrootcvsrepor   _connect)selfuirepotyper   r   cvs	__class__s         3/usr/lib/python3/dist-packages/hgext/convert/cvs.pyr   zconvert_cvs.__init__*   s/   k4  ))"h4)HHHgll4((w~~c"" 	LBCCdJKKK&&))))
	BGLLg66>>CCEEcrcJBGLLm<<eDDIIKKCRCP )    c           
         | j         d S i | _         d}| j        rt          | j                  dk    r!t          j        t          d                    	 t          | j        d                   }n=# t          $ r0 t          j        t          d          | j        d         z            w xY wt          j	                    }	 t          j        | j                   d}| j                            dd          sd }t          j        | j        |          }t          j        | j        |t          | j                            dd	                    | j                            dd
          | j                            dd                    }|D ]}|r|j        |k    r nwd|j        z  }|                     |j                  |_        || j        |j        <   |                     |j                  |_        | j                            dd          rt3          |j        d                   |_        t7          j        |j        d          }| j                            t>                               |j        |                     i }|j!        D ]@}	dd"                    d |	j#        D                       ddg|	j$                 fz  ||	j%        <   AtM          |j        |d |j'        D             |j        |j        pd          }
|
| j         |<   || j(        |<   | j        )                                | _*        t          j        |           d S # t          j        |           w xY w)Nr   r   s4   cvs source does not support specifying multiple revss$   revision %s is not a patchset numbers   updates   converts   cvsps.cache)caches
   cvsps.fuzzs   cvsps.mergetos   cvsps.mergefrom)fuzzmergeto	mergefrom   %ds   localtimezones   %Y-%m-%d %H:%M:%S %1%2s   %s%s   .c                     g | ]}d |z  S r3    ).0xs     r,   
<listcomp>z&convert_cvs._parse.<locals>.<listcomp>t   s    "C"C"C1EAI"C"C"Cr-   r-      (DEAD)c                 "    g | ]}d |j         z  S r6   )id)r8   ps     r,   r:   z&convert_cvs._parse.<locals>.<listcomp>|   s    @@@eadl@@@r-   )authordateparentsdescbranch)+r   r   lenr   Abortr   int
ValueErrorr   getcwdr   chdirr   r(   
configboolr   	createlogcreatechangesetconfigr=   recoder?   r!   rC   commentmakedatetimestampr@   r	   datestrr    updatedictfromkeysentriesr   revisiondeadfilecommitrA   r   valuesheads)r'   maxrevdr/   dbcsr=   r@   r   fcs              r,   _parsezconvert_cvs._parse>   sE   >%F9 	49~~!!k)   TYq\**   k=>>1M  
 O/	HTYE7%%j.AA 666B&
MBBCCz3CDD'..5GHH  B  ' ' befnnERU] KK	22	-/	*![[44
7%%j2BCC </
;;BG'1JKK	  rw!;!;<<<  A$+		"C"C
"C"C"CDDi(0/ %E!&MM 9@@RZ@@@9+   &'r"!&
2//11DJHQKKKKKBHQKKKKs   A/ /:B) I3M	 	Mc           
      	   | j         }d }d\  }}ddg}| j                            t          d          |z             |                    d          r|dd          }t          j        d|          }|rd}|                                \  }}}}	}|sd	}|	sd
}	nt          |	          }	d|||fz  }
d|||	|fz  }|sd}t          j
                            d          }	 t          |d          }|                                                                D ]I}|                    dd          \  }}|dk    r|                    dd          \  }}|}n|
}||k    r|} nJ|                                 nE# t"          $ r8}|j        t$          j        k    rt)          |dd           s||_         Y d }~nd }~ww xY wt-          j                    }|                    ||	f           |                    d                    d|||ddg                     |                    d          dk    r!t7          j        t          d                    |                    d          x| _        | _        |s!|                    d          rd}|dd          }|s|                    d          r
|d d          }t          j        d!|          }t          j
                             |          s|sd}nAd"}|!                    d          |!                    d#          |!                    d$          }}}|dk    rz|d"k    r4tD          j#        $                    d%          pd&}|r
|d'||g|z   }n||g|z   }d                    d( |D                       }tK          j&        |          \  | _        | _        || _'        | j        (                    d)|z             | j        (                    d*           | j        (                    d+           | j        )                                 | j        *                                }|                    d,          s$t7          j        t          d-          |z            d.|v rN| j        (                    d/           | j        )                                 | j        *                                 d S d S )0NNNr   s   servers   connecting to %s
s	   :pserver:	   s-   (?:(.*?)(?::(.*?))?@)?([^:/]*)(?::(\d*))?(.*)s   pservers	   anonymousia	  s   :pserver:%s@%s:%ss   :pserver:%s@%s:%d%s   As
   ~/.cvspassr       r   s   /1filename   
s   BEGIN AUTH REQUESTs   END AUTH REQUESTr-      s   I LOVE YOU
s!   CVS pserver authentication failedrwbs   :local:s   local   s   :ext:   s   (?:([^@:/]+)@)?([^:/]+):?(.*)s   rsh      s   CVS_RSHs   sshs   -lc              3   >   K   | ]}t          j        |          V  d S N)r
   
shellquote)r8   args     r,   	<genexpr>z'convert_cvs._connect.<locals>.<genexpr>   s-      DDH/44DDDDDDr-   s   Root %s
sc   Valid-responses ok error Valid-requests Mode M Mbinary E Checked-in Created Updated Merged Removed
s   valid-requests
s   Valid-requestssK   unexpected response from CVS server (expected "Valid-requests", but got %r)s   UseUnchangeds   UseUnchanged
)+r$   r(   statusr   
startswithrematchgroupsrF   r   r   
expanduserr   r#   
splitlinessplitcloseIOErrorerrnoENOENTr   rh   r"   connectsendr   recvr   rE   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rs                         r,   r&   zconvert_cvs._connect   s2   |
dy!q.//$6777??<(( ;	?8DA4 A  6?%01

-eT4 ('D %DDt99D.$d1CC0D$d3KK " E g00??G"!'511$&GGII$8$8$:$: & &D+/::dA+>+>LE5  %~~/4{{4/C/Cu)0 *1$(- %  / 



" " " ":55#*4T#B#B 807! 65555" mooT4L)))JJ1  !/	 	   88C==O33+a(L&M&MNNN+.<<+>+>>dj 	DOOJ77 	H8D 
	Fx((  ABBx:DAAAw}}T"" F! F#!#$771::qwwqzz1771::Ddz!!6!!&**:66@& ,tT2S8CC++C ))DDDDDDDC&.oc&:&:#DK,-...!	
 	
 	

 	-...J!!||-.. 	+?  	   aK/000KJ!!!!!  s   BE3 3
F5=.F00F5c                 8    |                                   | j        S rq   )rb   r[   r'   s    r,   getheadszconvert_cvs.getheads   s    zr-   c                    d }|                                   |                    d          rdS d|z                                  }|                    | j        dz   |z              |D ]}| j                            d|z              | j                            d| j        z             | j                                         d}d }	 | j	        
                                }|                    d
          s|                    d          r| j	        
                                 | j	        
                                 | j	        
                                d d         }t          | j	        
                                d d                   }	 || j	        |	          }n^|                    d          r||dd          z  }n:|                    d          rn#|                    d          r@t          | j	        
                                d d                   }	 || j	        |	          }n|dk    r-|!t          j        t          d                    |d|v rdpdfS |                    d          r3| j                            t          d          |dd          z             nS|                    d          r| j	        
                                 n$t          j        t          d          |z            7)Nc                 B   d}t                      }|dk    rv|                     t          ||                    }|s$t          j        t          d          |z            |t          |          z  }|                    |           |dk    v|                                S )Ni   r   s!   %d bytes missing from remote file)	stringior#   minr   rE   r   rD   r   getvalue)fpcount	chunksizeoutputdatas        r,   chunkedreadz(convert_cvs.getfile.<locals>.chunkedread  s     IZZF!))wws5)4455 +>??%G   T"T""" !)) ??$$$r-   r;   rd   s   -N -P -kk -r %s --   /s   Argument %s
s   Directory .
%s
co
r-   Ts   Created s   Updated r   rg   r   s   M s   Mbinary s   ok
s   malformed response from CVS   xs   E s   cvs server: %s
rn   s   Removes   unknown CVS response: %s)rb   endswithr|   appendr%   r   r   r   r   r   r   rv   rF   r   rE   r   r(   warn)
r'   namerevr   argsr9   r   moder   r   s
             r,   getfilezconvert_cvs.getfile  s   	% 	% 	% 	<<	"" 	:%+2244DL4'$./// 	4 	4AK.233332T]BCCC	M:&&((D{++ Mt{/K/K M
##%%%
##%%%z**,,SbS1DJ//11#2#677"{4:u55&& MQRR '' M-- MDJ//11#2#677"{4:u557??|#k!,J*K*KLLL $$,"74">3??__U++ MGLL#6!7!7$qrr(!BCCCC__Y// MJ''))))+a(C&D&Dt&KLLL3	Mr-   c                     |r!t          j        t          d                    |                                  t	          | j        |                                                   i t                      fS )Ns(   convert from cvs does not support --full)r   rE   r   rb   sortedr   itemsset)r'   r   fulls      r,   
getchangeszconvert_cvs.getchanges<  s\     	N+a KLLMMMdjo++--..CEE99r-   c                 D    |                                   | j        |         S rq   )rb   r   )r'   r   s     r,   	getcommitzconvert_cvs.getcommitB  s    ~c""r-   c                 8    |                                   | j        S rq   )rb   r    r   s    r,   gettagszconvert_cvs.gettagsF  s    yr-   c                 ^    |                                   t          | j        |                   S rq   )rb   r   r   )r'   r   is      r,   getchangedfileszconvert_cvs.getchangedfilesJ  s#    djo&&&r-   rq   )__name__
__module____qualname__r   rb   r&   r   r   r   r   r   r   __classcell__)r+   s   @r,   r   r   )   s             (G G GRw" w" w"r  6M 6M 6Mp: : :# # #  ' ' ' ' ' ' 'r-   r   )r   r   rw   r"   mercurial.i18nr   mercurial.pycompatr   r   	mercurialr   r   r   mercurial.utilsr	   r
    r   r   r   r   rY   converter_sourcerP   r   r   r7   r-   r,   <module>r      sW    				 				                       
       
       
 =		* , 	c' c' c' c' c'" c' c' c' c' c'r-   