ó
ðÚ§Oc           @   s}   d  d l  m Z d  d l m Z d  d l m Z m Z m Z m Z d  d l	 Z	 d  d l
 Z
 d „  Z d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   util(   t   _(   t   committ   converter_sourcet	   checktoolt   NoRepoNc         c   sG   y/ x( t  r- t j |  ƒ } | s% Pn  | Vq WWn t k
 rB n Xd S(   s,   Yield the dictionary objects generated by p4N(   t   Truet   marshalt   loadt   EOFError(   t   ft   d(    (    s4   /sys/lib/python2.7/site-packages/hgext/convert/p4.pyt   loaditer   s    	t	   p4_sourcec           B   s\   e  Z d	 d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z RS(
   c         C   sÿ   t  t |  ƒ j | | d | ƒd | k rT | j d ƒ rT t t d ƒ | ƒ ‚ n  t d d t ƒi  |  _ i  |  _	 i  |  _
 i  |  _ i  |  _ i  |  _ i  |  _ d |  _ i  |  _ t j d ƒ |  _ t j d	 ƒ |  _ t j d
 ƒ |  _ |  j | | ƒ d  S(   Nt   revt   /s   //s%   %s does not look like a P4 repositoryt   p4t   abortt   latin_1sE   ([a-z]+)?(text|binary|symlink|apple|resource|unicode|utf\d+)(\+\w+)?$sA   \$(Id|Header|Date|DateTime|Change|File|Revision|Author):[^$\n]*\$s   \$(Id|Header):[^$
]*\$(   t   superR   t   __init__t
   startswithR   R   R   t   Falset	   p4changest   headst	   changesett   filest   tagst
   lastbrancht   parentt   encodingt	   depotnamet   ret   compilet   re_typet   re_keywordst   re_keywords_oldt   _parse(   t   selft   uit   pathR   (    (    s4   /sys/lib/python2.7/site-packages/hgext/convert/p4.pyR      s&    									c         C   sk   d t  j | ƒ } t  j | d d ƒ} x< t | ƒ D]. } | j d d ƒ } | r5 t |  j | <q5 q5 Wd S(   s   Read changes affecting the paths   p4 -G changes -s submitted %st   modet   rbt   changeN(   R    t
   shellquotet   popenR   t   gett   NoneR   R   (   R&   R(   t   cmdt   stdoutR   t   c(    (    s4   /sys/lib/python2.7/site-packages/hgext/convert/p4.pyt   _parse_view6   s    c         C   sD  | j  t d ƒ ƒ d | k rn |  j | ƒ | j d ƒ r^ | j d ƒ r^ i d | d  6} qKi d d 6} nÝ d t j | ƒ } t j t j	 | d d	 ƒƒ } i  } x£ | D]› } | j d
 ƒ r¬ | | j
 ƒ  \ } } |  j | ƒ | j d ƒ r| j d ƒ r| d  } | d  } n  | d } | | j d ƒ d } | | | <q¬ q¬ W|  j j ƒ  |  _ |  j j d t ƒ | j ƒ  }	 |	 j d t d t ƒ |  j j d d d d ƒ}
 g  |  j D]P } |
 sÜt | ƒ t |
 ƒ k r·|  j st | ƒ t |  j ƒ k r·| ^ q·|  _ | j  t d ƒ ƒ d' } xÿ|  j D]ô} d | } t j	 | d d	 ƒ} t j | ƒ } |  j | d ƒ } | j
 d d ƒ d } d | d t | ƒ d d !f } | j  t j | d ƒ d ƒ | rà| g } n g  } t | d ƒ d f } t d |  j | d ƒ d t j | d  ƒ d! | d | d" d d# i | d$ 6ƒ } g  } d } x¯ d% | | k rd& | | k r| d% | } d' } x9 |	 D]1 } | j | ƒ r“| | | t | ƒ } Pq“q“W| rù| j | | d& | f ƒ | |  j | <n  | d 7} qXW| |  j | <| |  j | <| } q3W| r@| g |  _ n  d' S((   s4   Prepare list of P4 filenames and revisions to imports   reading p4 views
R   s   //s   /...t    iýÿÿÿs   p4 -G client -o %sR)   R*   t   Views   ...i   i   t   keyt   reverset   converts   p4.startrevt   defaulti    s   collecting p4 changelists
s   p4 -G describe -s %st   descs   
s   %s %sR+   iÿÿÿÿiP   t   timet   authort   usert   dates   %Y-%m-%d %H:%M:%S %1%2t   parentst   brancht   extraR   s   depotFile%ds   rev%dN(    t   statusR   R3   R   t   endswithR    R,   R   R   R-   t   splitt   findR   t   keyst   sortt   intt   lenR   R'   t   configR   R/   t   recodet   reprt   ellipsisR   t   datestrt   appendR   R   R   R   (   R&   R'   R(   t   viewsR0   t
   clientspect   clientt   sviewt   cviewt	   viewordert   startrevt   xt   lastidR+   R1   R   R:   t	   shortdesct   tR?   R>   R2   R   t   it   oldnamet   filenamet   v(    (    s4   /sys/lib/python2.7/site-packages/hgext/convert/p4.pyR%   ?   s~    

4
!#
c         C   s   |  j  S(   N(   R   (   R&   (    (    s4   /sys/lib/python2.7/site-packages/hgext/convert/p4.pyt   getheads“   s    c         C   sì  d t  j d |  j | | f ƒ } t  j | d d ƒ} d  } d } d  } x3t | ƒ D]%} | d }	 | j d ƒ }
 |	 d k r™ t | d	 |
 ƒ ‚ qX |	 d
 k rX|  j j	 | d ƒ } | r}d } | j
 d ƒ pÙ d | j
 d ƒ pë d } d | k rd } n  | j
 d ƒ d k r"d } n  d | k r:|  j } qUd | k rU|  j } qUq}qX |	 d k sp|	 d k rX | |
 7} qX qX W| d  k rŸt d d ƒ ‚ n  | rº| j d | ƒ } n  | d k râ| j d ƒ râ| d  } n  | | f S(   Ns   p4 -G print %ss   %s#%sR)   R*   R4   t   codet   datat   errort   generict   statt   typei   i   RW   i   t   symlinkt   lt   kot   kt   textt   binaryi    s   bad stats   $\1$s   
iÿÿÿÿ(   R    R,   R   R-   R/   R   R.   t   IOErrorR"   t   matcht   groupR$   R#   t   subRC   (   R&   t   nameR   R0   R1   R)   t   contentst   keywordsR   R`   Ra   t   p4typet   flags(    (    s4   /sys/lib/python2.7/site-packages/hgext/convert/p4.pyt   getfile–   sB    !
(		c         C   s   |  j  | i  f S(   N(   R   (   R&   R   (    (    s4   /sys/lib/python2.7/site-packages/hgext/convert/p4.pyt
   getchangesÁ   s    c         C   s   |  j  | S(   N(   R   (   R&   R   (    (    s4   /sys/lib/python2.7/site-packages/hgext/convert/p4.pyt	   getcommitÄ   s    c         C   s   |  j  S(   N(   R   (   R&   (    (    s4   /sys/lib/python2.7/site-packages/hgext/convert/p4.pyt   gettagsÇ   s    c         C   s(   t  g  |  j | D] } | d ^ q ƒ S(   Ni    (   t   sortedR   (   R&   R   R[   RW   (    (    s4   /sys/lib/python2.7/site-packages/hgext/convert/p4.pyt   getchangedfilesÊ   s    N(   t   __name__t
   __module__R/   R   R3   R%   R_   Ru   Rv   Rw   Rx   Rz   (    (    (    s4   /sys/lib/python2.7/site-packages/hgext/convert/p4.pyR      s   			T		+			(   t	   mercurialR    t   mercurial.i18nR   t   commonR   R   R   R   R   R    R   R   (    (    (    s4   /sys/lib/python2.7/site-packages/hgext/convert/p4.pyt   <module>   s   "	