ó
œt•Pc           @   s¥   d  d l  m Z m Z m Z m Z d  d l m Z d  d l m Z m	 Z	 d  d l
 Z
 d  d l Z d  d l Z d  d l Z d  d l m Z d e e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   NoRepot   commandlinet   committ   converter_source(   t   _(   t   encodingt   utilN(   t   Parsert   gnuarch_sourcec           B   sÃ   e  Z d  e f d „  ƒ  YZ d d „ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   t   gnuarch_revc           B   s   e  Z d  „  Z RS(   c         C   s^   | |  _  d |  _ d  |  _ d |  _ d  |  _ g  |  _ g  |  _ g  |  _ i  |  _	 i  |  _
 d  S(   Nt    (   t   revt   summaryt   Nonet   datet   authort   continuationoft	   add_filest	   mod_filest	   del_filest	   ren_filest   ren_dirs(   t   selfR   (    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyt   __init__   s    									(   t   __name__t
   __module__R   (    (    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyR	      s   c         C   s3  t  t |  ƒ j | | d | ƒt j j t j j | d ƒ ƒ sY t t d ƒ | ƒ ‚ n  d  |  _
 t j d ƒ r} d |  _
 n0 t j d ƒ r˜ d |  _
 n t j t d ƒ ƒ ‚ t j |  | |  j
 ƒ t j j | ƒ |  _ d  |  _ d  |  _ d  |  _ i  |  _ i  |  _ i  |  _ t ƒ  |  _ t j |  _ g  |  _ d  S(   NR   s   {arch}s+   %s does not look like a GNU Arch repositoryt   bazt   tlas   cannot find a GNU Arch tool(   t   superR   R   t   ost   patht   existst   joinR    R   R   t   execmdR   t   findexet   AbortR   t   realpatht   tmppatht   treeversiont   lastrevt   changest   parentst   tagsR   t   catlogparserR   t   archives(   R   t   uiR   R   (    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyR      s*    !							c         C   sj  g  |  j  d d ƒ D] } | j d ƒ ^ q |  _ |  j d k rX |  j d |  j ƒ } n |  j d d |  j ƒ } | j ƒ  |  _ |  j j d ƒ } t	 j j
 t j ƒ  d | d	 ƒ |  _ g  |  j d  <|  j } d  } x| re|  j j t d
 ƒ | ƒ | j d ƒ d } | |  j k r6|  j j t d ƒ | ƒ Pn  |  j d d d | ƒ \ } } |  j | d | ƒ d  } xñ | D]é } | j ƒ  }	 |  j |	 ƒ |  j |	 <g  |  j |	 <|  j d d |  j |	 ƒ \ }
 } | ræ|  j d |	 ƒ }
 n  |  j |
 |	 ƒ |  j | j |	 ƒ |	 } |  j |	 j rJd j
 |  j |	 j j d ƒ d  ƒ } Pn  |	 d d k ruPququWqÖ Wd  S(   NR,   s   -ns   
R   s   tree-versions   -dt   /s   hg-%si   s   analyzing tree version %s...
i    sI   tree analysis stopped because it points to an unregistered archive %s...
t	   revisionss   -rs   -fs"   failed retrieving revisions for %ss   cat-logs   cat-archive-logs   --iÿÿÿÿiúÿÿÿs   base-0(   t	   runlines0t   rstripR,   R!   t   run0R   t   stripR&   t   splitR   R    t   tempfilet
   gettempdirR%   R)   R   R-   t   statusR   t   runlinest	   checkexitR	   R(   t   runt   _parsecatlogt   appendR   (   R   t   it   outputt   versionR&   t   childt   archiveR7   t   lR   t   catlog(    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyt   before=   sN    .		! c         C   s1   |  j  j d |  j ƒ t j |  j d t ƒd  S(   Ns   cleaning up %s
t   ignore_errors(   R-   t   debugR%   t   shutilt   rmtreet   True(   R   (    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyt   after   s    c         C   s   |  j  d  S(   N(   R)   R   (   R   (    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyt   getheads…   s    c         C   sd   | |  j  k r' t j t d ƒ ƒ ‚ n  t j j t j j |  j | ƒ ƒ sT t	 ‚ n  |  j
 | | ƒ S(   Ns   internal calling inconsistency(   R'   R   R#   R   R   R   t   lexistsR    R%   t   IOErrort   _getfile(   R   t   nameR   (    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyt   getfileˆ   s
    $	c   	      C   s˜  |  j  | ƒ g  } i  } x+ |  j | j D] } | j | | f ƒ q* Wx+ |  j | j D] } | j | | f ƒ qX Wx+ |  j | j D] } | j | | f ƒ q† Wx\ |  j | j D]J } |  j | j | } | j | | f ƒ | j | | f ƒ | | | <q´ Wxt |  j | j D]b } |  j | j | } |  j | | ƒ \ } } | g  | D] } | | f ^ qO7} | j	 | ƒ qW| |  _
 t t | ƒ ƒ | f S(   N(   t   _updateR(   R   R<   R   R   R   R   t   _rendirchangest   updateR'   t   sortedt   set(	   R   R   R(   t   copiest   ft   srct   tot   chgst   cps(    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyt
   getchanges’   s*    #	c         C   sB   |  j  | } t d | j d | j d | j d |  j | d | ƒ S(   NR   R   t   descR)   R   (   R(   R   R   R   R   R)   (   R   R   R(   (    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyt	   getcommit¯   s    c         C   s   |  j  S(   N(   R*   (   R   (    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyt   gettags´   s    c         O   s   |  j  | g } | | 7} g  | D] } t j | ƒ ^ q  } | d t j d t j g 7} t j d j | ƒ ƒ } |  j j | d ƒ t j	 | ƒ S(   Nt   >s   2>t    s   
(
   R!   R   t
   shellquoteR   t   devnullt   quotecommandR    R-   RF   t   system(   R   t   cmdt   argst   kwargst   cmdlinet   arg(    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyt   _execute·   s    
"c         C   s    |  j  j d | ƒ |  j d d |  j | ƒ \ } } | ra t j |  j d t ƒ|  j | ƒ n; |  j | d } |  j  j d | | f ƒ |  j	 | | ƒ d  S(   Ns   applying revision %s...
t   replays   -dRE   i    s)   computing changeset between %s and %s...
(
   R-   RF   R8   R%   RG   RH   RI   t   _obtainrevisionR)   t   _parsechangeset(   R   R   t	   changesetR7   t   old_rev(    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyRQ   À   s    c         C   s°   t  j t  j j |  j | ƒ ƒ j } t j | ƒ ri t  j t  j j |  j | ƒ ƒ } | r` d pc d } n= t	 t  j j |  j | ƒ d ƒ j
 ƒ  } | d @r  d p£ d } | | f S(   NRB   R
   t   rbiI   t   x(   R   t   lstatR   R    R%   t   st_modet   statt   S_ISLNKt   readlinkt   opent   read(   R   RO   R   t   modet   data(    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyRN   Ï   s    $!'c         C   s=   d d d g } x' | D] } | j  | ƒ d k r t Sq Wt S(   Ns   {arch}s	   .arch-idss   .arch-inventoryiÿÿÿÿ(   t   findRI   t   False(   R   RO   t   excludet   exc(    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyt   _excludeÙ   s
    c         C   s¼   g  } t  j | ƒ } x  t | ƒ d k r· | j ƒ  } t  j j | | ƒ } |  j | ƒ s t  j j | ƒ r¤ | g  t  j | ƒ D] } t  j j | | ƒ ^ q 7} q´ | j | ƒ q q W| S(   Ni    (	   R   t   listdirt   lent   popR   R    R€   t   isdirR<   (   R   R   t   filest   contentst   ct   pRW   (    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyt   _readcontentsà   s    8c   	      C   s–   g  } i  } |  j  t j j |  j | ƒ ƒ } x\ | D]T } t j j | | ƒ } t j j | | ƒ } | j | ƒ | j | ƒ | | | <q4 W| | f S(   N(   R‰   R   R   R    R%   R<   (	   R   RX   t   destR(   RV   R…   RW   t   st   d(    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyRR   ï   s    !c         C   sy   |  j  j d | ƒ |  j d | |  j ƒ } |  j | ƒ |  j  j d | ƒ |  j |  j ƒ } |  j | j | 7_ d  S(   Ns   obtaining revision %s...
t   gets   analyzing revision %s...
(   R-   RF   Rk   R%   R9   R‰   R(   R   (   R   R   R>   R…   (    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyRm   û   s    c         C   s   | j  d ƒ r | d S| S(   Ns   ./i   (   t
   startswith(   R   R   (    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyt   _stripbasepath  s    c         C   s  yÔ |  j  j | ƒ } t j t j | d d ƒ ƒ |  j | _ |  j | d ƒ |  j | _ d j	 | d | j
 ƒ  f ƒ |  j | _ |  j |  j | j ƒ |  j | _ d | k rÓ |  j | d ƒ |  j | _ n  Wn* t k
 r t j t d ƒ | ƒ ‚ n Xd  S(   Ns   Standard-dates   %Y-%m-%d %H:%M:%St   Creators   

t   Summarys   Continuation-ofs   could not parse cat-log of %s(   R+   t   parsestrR   t   datestrt   strdateR(   R   t   recodeR   R    t   get_payloadR   R   t	   ExceptionR#   R   (   R   R{   R   RC   (    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyR;     s    #c   	      C   s¥  xž| D]–} | j  ƒ  } | j d ƒ r} | j d ƒ r} |  j | d j  ƒ  ƒ } |  j | ƒ s|  j | j j | ƒ qq | j d ƒ rá | j d ƒ rá |  j | d j  ƒ  ƒ } |  j | ƒ s|  j | j j | ƒ qq | j d ƒ r5|  j | d j  ƒ  ƒ } |  j | ƒ s|  j | j j | ƒ qq | j d ƒ r‰|  j | d	 j  ƒ  ƒ } |  j | ƒ s|  j | j j | ƒ qq | j d
 ƒ rÝ|  j | d j  ƒ  ƒ } |  j | ƒ s|  j | j j | ƒ qq | j d ƒ r“| d j  ƒ  j	 d ƒ } t
 | ƒ d k r3| d j  ƒ  j	 d ƒ } n  |  j | d ƒ } |  j | d ƒ } |  j | ƒ r|  j | ƒ r| |  j | j | <qq | j d ƒ rç|  j | d j  ƒ  ƒ } |  j | ƒ s|  j | j j | ƒ qq | j d ƒ r | d j  ƒ  j	 d ƒ } t
 | ƒ d k r=| d j  ƒ  j	 d ƒ } n  |  j | d ƒ } |  j | d ƒ } |  j | ƒ r|  j | ƒ r| |  j | j | <qq q Wd  S(   Nt   As   A/i   t   Ds   D/t   Mbi   s   M->i   t   Ms   =>Ra   s   	i    t   chs   />(   R3   RŽ   R   R€   R(   R   R<   R   R   R4   R‚   R   R   (	   R   R{   R   RB   t   fileR…   RX   t   dstt   dirs(    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyRn      sT      N(   R   R   t   objectR	   R   R   RD   RJ   RK   RP   R\   R^   R_   Rk   RQ   RN   R€   R‰   RR   Rm   R   R;   Rn   (    (    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyR      s&   	D			
							
						(   t   commonR    R   R   R   t   mercurial.i18nR   t	   mercurialR   R   R   RG   R5   Ru   t   email.ParserR   R   (    (    (    s9   /sys/lib/python2.7/site-packages/hgext/convert/gnuarch.pyt   <module>	   s
   "0