ó
heý[c           @   s«   d  d l  m Z m Z m Z m Z d  d l m Z d  d l m Z 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   utilt   errorN(   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   /usr/lib/python2.7/dist-packages/hgext/convert/gnuarch.pyt   __init__   s    									(   t   __name__t
   __module__R   (    (    (    s9   /usr/lib/python2.7/dist-packages/hgext/convert/gnuarch.pyR
      s   c         C   sA  t  t |  ƒ j | | d | ƒt j j t j j | d ƒ ƒ sY t t d ƒ | ƒ ‚ n  d  |  _
 t j d ƒ r} d |  _
 n> t j d ƒ r˜ d |  _
 n# t j t d ƒ t d ƒ d ƒ ‚ t j |  | |  j
 ƒ t j j | ƒ |  _ d  |  _ d  |  _ d  |  _ i  |  _ i  |  _ i  |  _ t ƒ  |  _ t j |  _ g  |  _ d  S(   Nt   revss   {arch}s+   %s does not look like a GNU Arch repositoryt   bazt   tlas   cannot find a GNU Arch tools     (try installing the %s package)(   t   superR	   R   t   ost   patht   existst   joinR    R   R   t   execmdR   t   findexeR   t   AbortR   t   realpatht   tmppatht   treeversiont   lastrevt   changest   parentst   tagsR   t   catlogparserR   t   archives(   R   t   uiR    R   (    (    s9   /usr/lib/python2.7/dist-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   archiveR9   t   lR   t   catlog(    (    s9   /usr/lib/python2.7/dist-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   /usr/lib/python2.7/dist-packages/hgext/convert/gnuarch.pyt   after‚   s    c         C   s   |  j  d  S(   N(   R+   R   (   R   (    (    s9   /usr/lib/python2.7/dist-packages/hgext/convert/gnuarch.pyt   getheads†   s    c         C   s_   | |  j  k r' t j t d ƒ ƒ ‚ n  t j j t j j |  j | ƒ ƒ sO d S|  j
 | | ƒ S(   Ns   internal calling inconsistency(   NN(   R)   R   R%   R   R   R    t   lexistsR"   R'   R   t   _getfile(   R   t   nameR   (    (    s9   /usr/lib/python2.7/dist-packages/hgext/convert/gnuarch.pyt   getfile‰   s
    $c   
      C   s¼  | r t  j t d ƒ ƒ ‚ n  |  j | ƒ g  } i  } x+ |  j | j D] } | j | | f ƒ qH Wx+ |  j | j D] } | j | | f ƒ qv 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 ^ qm7} | j |	 ƒ q1W| |  _ t t | ƒ ƒ | t ƒ  f S(   Ns)   convert from arch does not support --full(   R   R%   R   t   _updateR*   R   R>   R   R   R   R   t   _rendirchangest   updateR)   t   sortedt   set(
   R   R   t   fullR*   t   copiest   ft   srct   tot   chgst   cps(    (    s9   /usr/lib/python2.7/dist-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   /usr/lib/python2.7/dist-packages/hgext/convert/gnuarch.pyt	   getcommit±   s    c         C   s   |  j  S(   N(   R,   (   R   (    (    s9   /usr/lib/python2.7/dist-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/   RH   t   system(   R   t   cmdt   argst   kwargst   cmdlinet   arg(    (    s9   /usr/lib/python2.7/dist-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   -dRG   i    s)   computing changeset between %s and %s...
(
   R/   RH   R:   R'   RI   RJ   RK   t   _obtainrevisionR+   t   _parsechangeset(   R   R   t	   changesetR9   t   old_rev(    (    s9   /usr/lib/python2.7/dist-packages/hgext/convert/gnuarch.pyRR   Â   s    c         C   s³   t  j t  j j |  j | ƒ ƒ j } t j | ƒ rl t  j t  j j |  j | ƒ ƒ } | rc d } q© d } n= t	 t  j j |  j | ƒ d ƒ j
 ƒ  } | d @r£ d p¦ d } | | f S(   NRD   R   t   rbiI   t   x(   R   t   lstatR    R"   R'   t   st_modet   statt   S_ISLNKt   readlinkt   opent   read(   R   RP   R   t   modet   data(    (    s9   /usr/lib/python2.7/dist-packages/hgext/convert/gnuarch.pyRO   Ñ   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   findRK   t   False(   R   RP   t   excludet   exc(    (    s9   /usr/lib/python2.7/dist-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   pRY   (    (    s9   /usr/lib/python2.7/dist-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   RZ   t   destR*   RX   R‡   RY   t   st   d(    (    s9   /usr/lib/python2.7/dist-packages/hgext/convert/gnuarch.pyRS   ô   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/   RH   Rm   R'   R;   R‹   R*   R   (   R   R   R@   R‡   (    (    s9   /usr/lib/python2.7/dist-packages/hgext/convert/gnuarch.pyRo      s    c         C   s   | j  d ƒ r | d S| S(   Ns   ./i   (   t
   startswith(   R   R    (    (    s9   /usr/lib/python2.7/dist-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}   R   RE   (    (    s9   /usr/lib/python2.7/dist-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   =>Rc   s   	i    t   chs   />(   R5   R   R‘   R‚   R*   R   R>   R   R   R6   R„   R   R   (	   R   R}   R   RD   t   fileR‡   RZ   t   dstt   dirs(    (    s9   /usr/lib/python2.7/dist-packages/hgext/convert/gnuarch.pyRp   %  sT      N(   R   R   t   objectR
   R   R   RF   RL   RM   RQ   R^   R`   Ra   Rm   RR   RO   R‚   R‹   RS   Ro   R‘   R=   Rp   (    (    (    s9   /usr/lib/python2.7/dist-packages/hgext/convert/gnuarch.pyR	      s&    	D																	(   t   commonR    R   R   R   t   mercurial.i18nR   t	   mercurialR   R   R   R   RI   R7   Rw   t   email.ParserR   R	   (    (    (    s9   /usr/lib/python2.7/dist-packages/hgext/convert/gnuarch.pyt   <module>	   s
   "0