
    6h+                       S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	J
r
Jr  S SKJrJr  SSKJrJr  \R$                  r\R&                  r\R(                  r\R*                  r\R,                  r\R.                  r " S S	\5      rg)
    )annotationsN)_)encodingerrorutil)dateutilprocutil   )commoncvspsc                  \   ^  \ rS rSrSU 4S jjrS rS rS rS rS r	S r
S	 rS
 rSrU =r$ )convert_cvs'   c                l  > [         TU ]  XX4S9  [        R                  R	                  US5      n[        R                  R                  U5      (       d  [        [        S5      U-  5      e[        SSS9  S U l	        0 U l
        0 U l        0 U l        S U l        [        R                  " [        R                  R	                  US5      5      S S U l        [        R                  " [        R                  R	                  US5      5      S S U l        [$        R$                  U l        U R'                  5         g )	N)revss   CVSs$   %s does not look like a CVS checkout   cvs)debnames   Roots
   Repository)super__init__ospathjoinexistsNoRepor   	checktool	changesetfilestags
lastbranchsocketr   readfilecvsrootcvsrepor   _connect)selfuirepotyper   r   cvs	__class__s         3/usr/lib/python3/dist-packages/hgext/convert/cvs.pyr   convert_cvs.__init__(   s    t7ggll4(ww~~c""BCdJKK&&)
	}}RWW\\#w%?@"E}}RWW\\#}%EFsK ))    c           
     
   U R                   b  g 0 U l         SnU R                  (       aQ  [        U R                  5      S:  a  [        R                  " [        S5      5      e [        U R                  S   5      n[        R                  " 5       n [        R                  " U R                  5        SnU R                  R                  SS5      (       d  S n[        R                   " U R                  US9n[        R"                  " U R                  U[        U R                  R%                  SS	5      5      U R                  R%                  SS
5      U R                  R%                  SS5      S9nU GH  nU(       a  UR&                  U:  a    GOSUR&                  -  nU R)                  UR*                  5      Ul        X`R,                  UR.                  '   U R)                  UR0                  5      Ul        U R                  R                  SS5      (       a  [3        UR4                  S   5      Ul        [6        R8                  " UR4                  S5      nU R:                  R=                  [>        RA                  UR:                  U5      5        0 nURB                   HR  n	SSRE                  U	RF                   V
s/ s H  n
SU
-  PM
     sn
5      SS/U	RH                     4-  XRJ                  '   MT     [M        UR*                  UURN                   Vs/ s H  nSUR&                  -  PM     snUR0                  UR.                  =(       d    SS9nXR                   U'   XRP                  U'   GM     U R,                  RS                  5       U l*        [        R                  " U5        g ! [         a0    [        R                  " [        S5      U R                  S   -  5      ef = fs  sn
f s  snf ! [        R                  " U5        f = f)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	mergefroms   %ds   localtimezones   %Y-%m-%d %H:%M:%S %1%2s   %s%s   .r-      (DEAD))authordateparentsdescbranch)+r   r   lenr   Abortr   int
ValueErrorr   getcwdr   chdirr   r'   
configboolr   	createlogcreatechangesetconfigidrecoder5   r    r9   commentmakedatetimestampr6   r   datestrr   updatedictfromkeysentriesr   revisiondeadfilecommitr7   r   valuesheads)r&   maxrevdr/   dbcsrD   r6   r   fxpcs                r+   _parseconvert_cvs._parse<   s   >>%99499~!kk) TYYq\* OO/	HHTYYE77%%j.AA6B&&
MBCz3CD''..5GHB beefnRUU] KK		2	-/		*![[4
77%%j2BCC/
;BG''1JK		  rww!;<A$+		

"C
1EAI
"CDi(0/ %E&&M $ 9957ZZ@ZeaddlZ@99+ &'r"!&

29 < //1DJHHQKk  kk=>1M H #D A HHQKs9   "N# H'O* 7O A	O* O%(A$O* #:O 
O* *Pc           
     :	   U R                   nS nSu  p4SS/nU R                  R                  [        S5      U-  5        UR	                  S5      (       Ga  USS  n[
        R                  " SU5      nU(       Gar  SnUR                  5       u  p7pnU(       d  S	nU	(       d  S
n	O[        U	5      n	SX8U4-  n
SX8X4-  nU(       d  Sn[        R                  R                  S5      n [        R                  " U5      R                  5        H@  nUR                  SS5      u  pUS:X  a  UR                  SS5      u  pUnOU
nUU:X  d  M>  Un  O    [*        R*                  " 5       nUR-                  X45        UR/                  SR1                  SUUUSS/5      5        UR3                  S5      S:w  a  [4        R6                  " [        S5      5      eUR9                  S5      =U l        U l        U(       d  UR	                  S5      (       a  SnUSS  nU(       d  UR	                  S5      (       a  USS  n[
        R                  " S U5      n[        R                  R?                  U5      (       d  U(       d  SnO4S!nURA                  S5      URA                  S"5      URA                  S#5      pnUS:w  a  US!:X  a?  [B        RD                  RG                  S$5      =(       d    S%nU(       a	  US&X4/U-   nOUU/U-   nSR1                  S' U 5       5      n[H        RJ                  " U5      u  U l        U l        Xl&        U R:                  RO                  S(U-  5        U R:                  RO                  S)5        U R:                  RO                  S*5        U R:                  RQ                  5         U R<                  RS                  5       nUR	                  S+5      (       d"  [4        R6                  " [        S,5      U-  5      eS-U;   aP  U R:                  RO                  S.5        U R:                  RQ                  5         U R<                  RS                  5         g g ! [          aC  nUR"                  ["        R$                  :w  a  ['        USS 5      (       d  UUl        e  S nAGNHS nAff = f)/NNNr   s   servers   connecting to %s
s	   :pserver:	   s-   (?:(.*?)(?::(.*?))?@)?([^:/]*)(?::(\d*))?(.*)s   pservers	   anonymousia	  s   :pserver:%s@%s:%ss   :pserver:%s@%s:%d%s   As
   ~/.cvspass    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  N   #    U  H  n[         R                  " U5      v   M     g 7fN)r	   
shellquote).0args     r+   	<genexpr>'convert_cvs._connect.<locals>.<genexpr>   s     DH//44s   #%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groupsr<   r   r   
expanduserr   r"   
splitlinessplitOSErrorerrnoENOENTgetattrrb   r!   connectsendr   recvr   r;   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linepart1part2formatinstsckrshrs                        r+   r%   convert_cvs._connect   s   ||
y!q./$67??<((8DA4A %01
-T'DDt9D.$d1CC0D3KK E gg00?G"$(MM'$:$E$E$GD+/::dA+>LE  %~/4{{4/C)0 *1$(- % %H& mmoTL)JJ1  !/	 88C=O3++a(L&MNN+.<<+>>djDOOJ77H8Dx((ABx:DAAww}}T""!#!#$771:qwwqz1771:Dz!6!&&**:6@&t2S8C++C ))DDDC&.ooc&:#DK,-.!	

 	-.JJ!||-..++? 	  aKK/0KKJJ!  Q # "::5#*4T#B#B07! 6"s%   $AQ Q 
Q 
R8RRc                :    U R                  5         U R                  $ rk   )r[   rR   r&   s    r+   getheadsconvert_cvs.getheads   s    zzr-   c                   S nU R                  5         UR                  S5      (       a  gSU-  R                  5       nUR                  U R                  S-   U-   5        U H!  nU R
                  R                  SU-  5        M#     U R
                  R                  SU R                  -  5        U R
                  R                  5         SnS n U R                  R                  5       nUR                  S	5      (       d  UR                  S
5      (       a  U R                  R                  5         U R                  R                  5         U R                  R                  5       S S n[        U R                  R                  5       S S 5      n	U" U R                  U	5      nGO\UR                  S5      (       a	  XhSS  -  nGO=UR                  S5      (       a  GO%UR                  S5      (       a:  [        U R                  R                  5       S S 5      n	U" U R                  U	5      nOUS:X  a;  Uc  [        R                  " [        S5      5      eUSU;   =(       a    S=(       d    S4$ UR                  S5      (       a+  U R                   R#                  [        S5      USS  -  5        OSUR                  S5      (       a  U R                  R                  5         O"[        R                  " [        S5      U-  5      eGM1  )Nc                   Sn[        5       nUS:  aj  U R                  [        X5      5      nU(       d"  [        R                  " [        S5      U-  5      eU[        U5      -  nUR                  U5        US:  a  Mj  UR                  5       $ )Ni   r   s!   %d bytes missing from remote file)	stringioreadminr   r;   r   r:   r   getvalue)fpcount	chunksizeoutputdatas        r+   chunkedread(convert_cvs.getfile.<locals>.chunkedread  s     IZF!)wws545++>?%G  T"T" !) ??$$r-   r4   r^   s   -N -P -kk -r %s --   /s   Argument %s
s   Directory .
%s
co
r-   s   Created s   Updated r   ra   r
   s   M s   Mbinary s   ok
s   malformed response from CVS   xs   E s   cvs server: %s
rh   s   Removes   unknown CVS response: %s)r[   endswithrx   appendr$   r   r   r   r   r   r   rr   r<   r   r;   r   r'   warn)
r&   namerevr   argsrX   r   moder   r   s
             r+   getfileconvert_cvs.getfile   sV   	% 	<<	""%+224DLL4'$./AKK.23 2T]]BC::&&(D{++t{/K/K

##%

##%zz**,Sb1DJJ//1#267"4::u5&&QR ''--DJJ//1#267"4::u57?|#kk!,J*KLL $$,"74">3??__U++GGLL#6!7$qr(!BC__Y//JJ'')++a(C&Dt&KLL3 r-   c                    U(       a  [         R                  " [        S5      5      eU R                  5         [	        U R
                  U   R                  5       5      0 [        5       4$ )Ns(   convert from cvs does not support --full)r   r;   r   r[   sortedr   itemsset)r&   r   fulls      r+   
getchangesconvert_cvs.getchanges8  sH    ++a KLMMdjjo++-.CE99r-   c                @    U R                  5         U R                  U   $ rk   )r[   r   )r&   r   s     r+   	getcommitconvert_cvs.getcommit>  s    ~~c""r-   c                :    U R                  5         U R                  $ rk   )r[   r   r   s    r+   gettagsconvert_cvs.gettagsB  s    yyr-   c                R    U R                  5         [        U R                  U   5      $ rk   )r[   r   r   )r&   r   is      r+   getchangedfilesconvert_cvs.getchangedfilesF  s    djjo&&r-   )r   r$   r#   r   r   rR   r    r   r   r!   r   r   rk   )__name__
__module____qualname____firstlineno__r   r[   r%   r   r   r   r   r   r   __static_attributes____classcell__)r*   s   @r+   r   r   '   s;    (GRu"n6Mp:#' 'r-   r   )
__future__r   rz   r   rs   r!   mercurial.i18nr   	mercurialr   r   r   mercurial.utilsr   r	    r   r   r   r   rP   converter_sourcerG   r   r    r-   r+   <module>r      s|    #  	 	   


 ==		** ,, 	a'" a'r-   