ó
`˜Qc           @   s–  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z	 d  d l
 m Z m Z m Z m Z d  d l m Z e j Z d  d l m Z d  d l m Z m Z m Z m Z m Z d  d l m Z m Z m Z m Z d  d l m Z y‡ 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% Z" d  d l& Z& d  d l' Z' e' j( d	 d
 d d e) ƒWn e* k
 r¥e+ Z" n Xd e, f d „  ƒ  YZ- d „  Z. d „  Z/ d „  Z0 d „  Z1 d e2 f d „  ƒ  YZ3 d e4 e5 d „ Z6 d „  Z7 d e2 f d „  ƒ  YZ8 d „  Z9 d „  Z: i e: d 6e: d 6e9 d 6Z; d „  Z< d  e f d! „  ƒ  YZ= d" Z> d# e e f d$ „  ƒ  YZ? d S(%   iÿÿÿÿN(   t   strutilt   scmutilt   utilt   encoding(   t   _(   t   StringIO(   t   NoRepot   MissingToolt   committ
   encodeargst
   decodeargs(   t   commandlinet   converter_sourcet   converter_sinkt   mapfile(   t   makedatetimestamp(   t   SubversionExceptiont   Poolt   ignoret   modules   svn.coret   categoryt   SvnPathNotFoundc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR   '   s   c         C   sn   |  j  d d ƒ \ } } | j d d ƒ } d } t | ƒ d k rS d | d } n  | d d | t | ƒ f S(   s8   Parse a revision string and return (uuid, path, revnum).t   @i   t   /t    i    i   (   t   rsplitt   splitt   lent   int(   t   revt   urlt   revnumt   partst   mod(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   revsplit*   s    c         C   s   t  j |  d ƒ S(   Ns   !$&'()*+,-./:=@_~(   t   urllibt   quote(   t   s(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR&   3   s    c         C   s»   y  t  j j t  j j |  ƒ ƒ SWn t k
 r3 n Xt j j |  ƒ r« t j j	 t j j
 |  ƒ ƒ }  t j d k r‰ d t j	 |  ƒ }  n  t j |  ƒ }  d t |  ƒ }  n  t  j j |  ƒ S(   Nt   ntR   s	   file://%s(   t   svnt   clientt   url_from_patht   coret   svn_path_canonicalizeR   t   ost   patht   isdirt   normpatht   abspatht   nameR   R   t   tolocalR&   (   R/   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   geturl=   s     c         C   s.   t  j j ƒ  } t  j j | _ |  | j _ | S(   N(   R)   R,   t   svn_opt_revision_tt   svn_opt_revision_numbert   kindt   valuet   number(   R:   t   optrev(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR;   M   s    t   changedpathc           B   s   e  Z d  „  Z RS(   c         C   s(   | j  |  _  | j |  _ | j |  _ d  S(   N(   t   copyfrom_patht   copyfrom_revt   action(   t   selft   p(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   __init__T   s    (   R   R   RB   (    (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR<   S   s   i    c      	      sÖ   d ‰ ‡  ‡ f d †  } y> t  j d | ƒ }	 t j j |	 j | | | | | | | ƒ WnO t k
 r| t j d  ˆ  ˆ ƒ n? t	 k
 r§ }
 t j t
 |
 ƒ ˆ  ˆ ƒ n Xt j d  ˆ  ˆ ƒ ˆ  j ƒ  t j d ƒ d  S(   Niÿÿÿÿc            sb   |  d  k	 r< x- |  j ƒ  D] \ } } t | ƒ |  | <q Wn  t j |  | | | | f ˆ  ˆ ƒ d  S(   N(   t   Nonet	   iteritemsR<   t   picklet   dump(   t
   orig_pathsR!   t   authort   datet   messaget   poolt   kt   v(   t   fpt   protocol(    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   receiver\   s
    R    i    (   t	   transportt   SvnRaTransportR)   t   rat   get_logt   IOErrorRE   RF   RC   t	   Exceptiont   strt   closeR.   t   _exit(   RN   R    t   pathst   startt   endt   limitt   discover_changed_pathst   strict_node_historyRP   t   tt   inst(    (   RN   RO   s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   get_log_childY   s    
c         K   sm   t  d k r$ t j t d ƒ ƒ ‚ n  t j t j ƒ t j t j ƒ t	 t j j
 ƒ  ƒ } t t j | Œ d S(   si   Fetch SVN log in a subprocess and channel them back to parent to
    avoid memory collection issues.
    s5   debugsvnlog could not load Subversion python bindingsN(   R)   RC   R   t   AbortR   t	   setbinaryt   syst   stdint   stdoutR
   t   readRb   (   t   uit   optst   args(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   debugsvnlogx   s    t	   logstreamc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   s$   Interruptible revision log iterator.c         C   s   | |  _  d  S(   N(   t   _stdout(   R@   Rg   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRB   ‡   s    c         c   s±   xª t  r¬ y t j |  j ƒ } Wn& t k
 rG t j t d ƒ ƒ ‚ n Xy | \ } } } } } Wn@ t t	 f k
 r£ | d  k r‡ Pn  t j t d ƒ | ƒ ‚ n X| Vq Wd  S(   Ns>   Mercurial failed to run itself, check hg executable is in PATHs   log stream exception '%s'(   t   TrueRE   t   loadRn   t   EOFErrorR   Rc   R   t	   TypeErrort
   ValueErrorRC   (   R@   t   entryRG   R!   RH   RI   RJ   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   __iter__Š   s    	c         C   s&   |  j  r" |  j  j ƒ  d  |  _  n  d  S(   N(   Rn   RX   RC   (   R@   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRX   ™   s    	(   R   R   t   __doc__RB   Ru   RX   (    (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRm   …   s   		c         C   s:   x3 d D]+ } t  j j t  j j | | ƒ ƒ s t Sq Wt S(   Nt   lockst   hookst   formatt   db(   Rw   Rx   s   formatRz   (   R.   R/   t   existst   joint   FalseRo   (   Ri   R/   t   protot   x(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt	   filecheck¢   s    !c         C   sž   y5 t  j ƒ  } | j d | | f ƒ } | j ƒ  } Wn\ t  j k
 r‚ } | j d k rp |  j t d ƒ ƒ t S| j	 j ƒ  } n t
 k
 r“ t SXd | k S(   Ns   %s://%s/!svn/ver/0/.svni”  sw   svn: cannot probe remote repository, assume it could be a subversion repository. Use --source-type if you know better.
s#   <m:human-readable errcode="160013">(   t   urllib2t   build_openert   openRh   t	   HTTPErrort   codet   warnR   Ro   RN   RV   R}   (   Ri   R/   R~   t   openert   rspt   dataRa   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt	   httpcheck«   s    t   httpt   httpst   filec         C   s@  yž | j  d d ƒ \ } } | d k r t j d k r‹ | d  d k r‹ | d d !j ƒ  r‹ | d d !j ƒ  d k r‹ | d  d	 | d } n  t j | ƒ } n  Wn) t k
 rÉ d } t j j	 | ƒ } n X| d k rè t
 j | ƒ } n  t j | d
 „  ƒ } x< d | k r;| |  | | ƒ r"t S| j d d ƒ d } q Wt S(   Ns   ://i   R   R(   R   i   i   s   %3a/s   :/c          W   s   t  S(   N(   R}   (   Rk   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   <lambda>Î   s    i    (   R   R.   R3   t   isalphat   lowerR%   t   url2pathnameRs   R/   R2   R   t   pconvertt   protomapt   getRo   R   R}   (   Ri   R    R~   R/   t   check(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   issvnurlÁ   s$    2t
   svn_sourcec           B   sÔ   e  Z d d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d d	 „ Z d
 „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d d „ Z d e e d „ Z RS(   c      	   C   s0  t  t |  ƒ j | | d | ƒ| j d ƒ p| | j d ƒ p| t j j | ƒ rp t j j t j j | d ƒ ƒ p| t | | ƒ s˜ t	 t
 d ƒ | ƒ ‚ n  t d  k r¹ t t
 d ƒ ƒ ‚ n  yA t j j t j j f } | d k  rù t t
 d	 ƒ | ƒ ‚ n  Wn# t k
 rt t
 d
 ƒ ƒ ‚ n Xi  |  _ d  } y@ | j d ƒ } | d k rnt | | d ƒ } | |  } n  Wn t k
 r‚n Xt | ƒ |  _ d |  _ y³ t j d |  j ƒ |  _ |  j j |  _ |  j j |  _ t j j |  j ƒ |  _ t  j! |  j t" |  j ƒ ƒ |  _# d  |  _$ |  j# |  _% i  |  _& i  |  _' t j j( |  j ƒ |  _) Wn4 t* k
 r„| j+ ƒ  t	 t
 d ƒ |  j ƒ ‚ n X| rËy t | ƒ } WqËt k
 rÇt, j- t
 d ƒ | ƒ ‚ qËXn  |  j. j/ d d d ƒ j0 d ƒ |  _1 |  j. j/ d d d d ƒ|  _2 y1 t |  j2 ƒ |  _2 |  j2 d k  r=d |  _2 n  Wn- t k
 rmt, j- t
 d ƒ |  j2 ƒ ‚ n Xy |  j3 |  j# | ƒ |  _4 Wn t5 k
 r¦d  |  _4 n X|  j4 sÏt, j- t
 d ƒ |  j# ƒ ‚ n  |  j6 |  j4 ƒ |  _7 d  |  _8 t j j t j j | d ƒ ƒ r| |  _9 n	 d  |  _9 d  |  _: d  S(   NR   s   svn://s
   svn+ssh://s   .svns-   %s does not look like a Subversion repositorys)   could not load Subversion python bindingsi   i   s=   Subversion python bindings %d.%d found, 1.4 or later requireds=   Subversion python bindings are too old, 1.4 or later requiredR   i    s   UTF-8R    s"   svn: revision %s is not an integert   converts	   svn.trunkt   trunkR   s   svn.startrevt   defaults(   svn: start revision %s is not an integers   no revision found in module %ss   .svn/entries(   i   i   (;   t   superR—   RB   t
   startswithR.   R/   R{   R|   R–   R   R   R)   RC   R   R,   t   SVN_VER_MAJORt   SVN_VER_MINORt   AttributeErrort   lastrevst   rfindR   Rs   R5   R    R   RQ   RR   RS   R*   t   ctxt   get_repos_roott   baseurlR%   t   unquoteR   R   t
   prevmodulet
   rootmodulet   commitsRZ   t   get_uuidt   uuidR   t	   tracebackR   Rc   Ri   t   configt   stript	   trunknamet   startrevt   latestt   headR   R!   t   last_changedt   _changescachet   wct	   convertfp(   R@   Ri   R    R   t   versionR°   t   at(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRB   ä   sŒ    !		"			
 		!	c         C   sj   i  } xT | j  ƒ  D]F } t | ƒ \ } } } | j | | ƒ } | | k r | | | <q q W| |  _ d  S(   N(   t   iterkeysR$   t
   setdefaultR    (   R@   t   revmapR    t   revidRª   R   R!   t
   lastrevnum(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt	   setrevmap;  s    c         C   sW   y> t  j j |  j j d ƒ d t | ƒ | t |  j ƒ t SWn t	 k
 rR t SXd  S(   NR   (
   R)   R*   t   lsR    t   rstripR&   R}   R¢   Ro   R   (   R@   R/   R;   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR{   D  s    &c            s˜  ‡  f d †  } ‡  f d †  } t  ˆ  j ƒ } d } | d | ƒ } | d | ƒ ˆ  _ | d | ƒ } | rÑ ˆ  j pu d } ˆ  j d | 7_ ˆ  j ˆ  j ˆ  j ƒ ˆ  _ ˆ  j sÑ t j t d ƒ ˆ  j ƒ ‚ qÑ n  ˆ  j g ˆ  _	 ˆ  j d  k	 rd	 | ˆ  j pd f ˆ  _ n  | rˆ  j j d ƒ } t j j | d t | ƒ | t ˆ  j ƒ } x¶ t | ƒ D]¥ }	 d
 | | |	 f }
 | |
 ˆ  j ƒ sq_n  ˆ  j |
 ˆ  j ƒ } | sËˆ  j j t d ƒ |	 ƒ q_n  ˆ  j j t d ƒ |	 ˆ  j | ƒ f ƒ ˆ  j	 j | ƒ q_Wn  ˆ  j r‘ˆ  j	 r‘t ˆ  j	 ƒ d k rJt j t d ƒ ƒ ‚ n  ˆ  j ˆ  j	 d ƒ } | ˆ  j k  r‘t j t d ƒ ˆ  j ƒ ‚ q‘n  ˆ  j	 S(   Nc            s"   ˆ  j  |  | ƒ } | t j j k S(   N(   t
   _checkpathR)   R,   t   svn_node_dir(   R/   R!   R8   (   R@   (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR0   N  s    c            sÔ   ˆ  j  j d d |  ƒ } | d  k	 r; | j ƒ  d k r; d  S| pD |  j d ƒ } ˆ  j | | ƒ s° ˆ  j j | ƒ r„ |  d k r„ d  S| r¬ t j t	 d ƒ |  | f ƒ ‚ n  d  Sˆ  j  j
 t	 d ƒ |  | f ƒ | S(   NR˜   s   svn.R   R   R™   s&   expected %s to be at %r, but not founds   found %s at %r
(   Ri   R¬   RC   R­   R{   R   t   endswithR   Rc   R   t   note(   R3   R   t   cfgpathR/   (   R@   (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt
   getcfgpathR  s     R   R™   t   tagst   branchesR   s   no revision found in module %ss   %s/%ss   %s/%s/%ss   ignoring empty branch %s
s   found branch %s at %d
i   s>   svn: start revision is not supported with more than one branchi    s.   svn: no revision found after start revision %d(   R;   R²   RÆ   R   R°   R±   R   Rc   R   t   headsRC   R    R­   R)   R*   R¾   R&   R}   R¢   t   sortedRi   RÃ   R!   t   appendR¯   R   (   R@   R0   RÅ   R   t	   oldmoduleR™   RÇ   t   rpatht   branchnamest   branchR   t   brevidR!   (    (   R@   s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   getheadsL  sR    		c         C   s9  |  j  r' |  j  d | k r' |  j  d Sd  |  _  |  j | \ } } | rm |  j | | | ƒ \ } |  _ } n’ t | ƒ \ } } } t j j |  j	 t
 | ƒ t | ƒ t |  j ƒ }	 g  |	 j ƒ  D]' \ }
 } | j t j j k rÀ |
 ^ qÀ } i  } t ƒ  |  _ | j ƒ  t | | g t | ƒ ƒ } |  j | =| | f S(   Ni    i   (   R³   RC   RZ   t   expandpathst   removedR$   R)   R*   R¾   R¤   R&   R;   Ro   R¢   RD   R8   R,   t   svn_node_filet   sett   sortt   zipR   (   R@   R   RZ   t   parentst   filest   copiesRª   R   R!   t   entriest   nt   e(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt
   getchanges”  s"    	$!

c         C   s=   |  j  | ƒ } | | f |  _ g  | d D] } | d ^ q) S(   Ni    (   RÝ   R³   (   R@   R   t   it   changest   f(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   getchangedfiles¬  s    c         C   sÁ   | |  j  k r¦ t | ƒ \ } } } | |  _ |  j | ƒ |  j j | d ƒ } | | k  rh | d } n  |  j | | ƒ | |  j  k r¦ t j t	 d ƒ | ƒ ‚ q¦ n  |  j  | } |  j  | =| S(   Ni    i   s   svn: revision %s not found(
   R¨   R$   R   t   reparentR    R”   t   _fetch_revisionsR   Rc   R   (   R@   R   Rª   R   R!   t   stopR   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt	   getcommit±  s    	
c      	   C   sV  i  } |  j  d  k r | Sg  } |  j  } t j j |  j ƒ } |  j |  j  g | |  j ƒ } zéxâ| D]Ú} | \ } } }	 }
 } g  | j ƒ  D]* \ } } | j r | j | j	 | f ^ q } | j
 d t ƒ | } | r | d d | k r | j ƒ  d } n  x– | D]Ž \ } } } | j | d ƒ s/qn  xc | D]E } | d j | ƒ r6| | d t | ƒ } | | g | d *Pq6q6W| j | | | g ƒ qWt d „  | j ƒ  Dƒ ƒ } t ƒ  } xg | D]_ } xV | D]N \ } } } | j | d ƒ sÒ| j | | d ƒ rqÒn  | j | ƒ PqÒWqÅWxO | D]G } g  | D]4 } | d | k r<| d j | d ƒ r<| ^ q<} q/Wg  } x° | D]¨ \ } } } | j d ƒ d } | j | ƒ rÔ| j | | | g ƒ q‡n  | | k ræq‡n  y5 |  j | | ƒ } | r| | k r| | | <n  Wq‡t k
 r.q‡Xq‡W| } | } qe WWd  | j ƒ  X| S(   Nt   reverseiÿÿÿÿi   i    R   c         s   s<   |  ]2 \ } } | j  d  k r | j r | | j f Vq d S(   t   AN(   R?   R=   (   t   .0RA   RÜ   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pys	   <genexpr>ú  s    	(   RÆ   RC   R)   RS   t   get_latest_revnumt   _getlogR¯   RD   R=   R>   RÕ   Ro   t   popRœ   R   RÊ   t   dictRÔ   t   addR   R°   R   RX   (   R@   RÆ   t   pendingst   tagspathR[   t   streamRt   t	   origpathsR!   RH   RI   RJ   RA   RÜ   RÙ   t   srctagspatht   sourcet	   sourcerevt   destt   tagt   tagpatht   addedst   badrootst   destroott   badroott	   renamingst   tagnamet   tagid(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   gettagsÇ  sp    	:				(c         C   sz   |  j  s d  S|  j d  k rF t t j j |  j  d d ƒ d ƒ |  _ n  |  j j d | |  j | ƒ f ƒ |  j j	 ƒ  d  S(   Ns   .svns	   hg-shamapt   as   %s %d
(
   R´   Rµ   RC   Rƒ   R.   R/   R|   t   writeR!   t   flush(   R@   R   t   destrev(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt	   converted%  s    	#c         C   s   d |  j  | p |  j | f S(   Ns   svn:%s%s@%s(   Rª   R   (   R@   R!   R   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR»   .  s    c         C   s   t  | j d ƒ d ƒ S(   NR   iÿÿÿÿ(   R   R   (   R@   R   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR!   1  s    c            s€  d ‡  f d † } | j ˆ  j ƒ s< ˆ  j j d | ƒ d S| d k r` t j j ˆ  j ƒ } n  yD ˆ  j d ƒ } t j j	 ˆ  j | j
 d ƒ | ƒ } ˆ  j | ƒ Wn t k
 r½ d } n X| sã t t d ƒ | | f ƒ ‚ n  | | | | j ƒ \ } } | d k rF| | | ƒ \ } } | d k rFˆ  j j d | ƒ d Sn  | j ˆ  j ƒ spˆ  j j d | ƒ d Sˆ  j | | ƒ S(   s]  Find the latest revid affecting path, up to stop revision
        number. If stop is None, default to repository latest
        revision. It may return a revision in a different module,
        since a branch may be moved without a change being
        reported. Return None if computed module does not belong to
        rootmodule subtree.
        c      
      s  ˆ  j  |  g | | p d ƒ } zÝ x½ | D]µ } | \ } } } } }	 | d  k rY | rY Pn  | | k ri Pn  xq | D]i }
 |  j |
 ƒ sp | |
 j rš qp n  | |
 j |  t |
 ƒ } ˆ  j j d |  | | f ƒ | }  Pqp Wq( W| sð d  } n  | |  f SWd  | j ƒ  Xd  S(   Ni   s#   branch renamed from %s to %s at %d
(   Rê   RC   Rœ   R=   R   Ri   t   debugRX   (   R/   R[   Rä   Rð   Rt   RZ   R!   RH   RI   RJ   RA   t   newpath(   R@   (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   findchanges<  s*    		s   ignoring foreign branch %r
R   R   s   %s not found up to revision %ds   ignoring empty branch %r
N(   RC   Rœ   R§   Ri   R  R)   RS   Ré   Râ   t   statR­   R   R   R   t   created_revR»   (   R@   R/   Rä   R  R¦   t   direntR!   t   realpath(    (   R@   s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR°   4  s2    $
c         C   s{   |  j  | k r | S|  j t | ƒ } |  j  } | d k rD d } n  |  j j d | ƒ t j j |  j | ƒ | |  _  | S(   s:   Reparent the svn transport and return the previous parent.R   s   reparent to %s
N(	   R¦   R¤   R&   RC   Ri   R  R)   RS   Râ   (   R@   R   t   svnurlR¦   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRâ   ~  s    			c      	   C   su  t  ƒ  t  ƒ  } } i  } t | ƒ d \ } } | |  j k rZ | |  _ |  j |  j ƒ n  xßt | ƒ D]Ñ\ }	 \ }
 } |  j j t d ƒ |	 d |
 d t | ƒ ƒ|  j	 |
 ƒ } |  j
 | | ƒ } | t j j k r“| j |  j | ƒ ƒ | j sg | rqg n  t | d ƒ d \ } } | j | k  r3qg n  |  j	 | j | ƒ } | sTqg n  |  j j d | | | j f ƒ |  j | ƒ | |  j | ƒ <qg | d k rØ|  j j d | j ƒ t | d ƒ d \ } } | d | } |  j
 | | | ƒ } | t j j k r| j |  j | ƒ ƒ q8| t j j k r»| j d ƒ } |
 j d ƒ } |  j | | ƒ } xr | D]M } | j | | ƒ } |  j	 d | | ƒ } | rg| j |  j | ƒ ƒ qgqgWq8|  j j d	 | |
 f ƒ qg | t j j k rg | j d
 k rÿqg n  | j d k rÕ| rÕt | d ƒ d \ } } |  j
 | | | ƒ } | t j j k rn| j |  j | ƒ ƒ qÕ| t j j k rÕxO |  j | | ƒ D]8 } |  j	 d | ƒ } | r“| j |  j | ƒ ƒ q“q“WqÕn  xL |  j |
 | ƒ D]8 } |  j	 d | ƒ } | rè| j |  j | ƒ ƒ qèqèW| j sg | r;qg n  t | d ƒ d \ } } | j | k  rjqg n  |  j	 | j | ƒ } | s‹qg n  |  j j d |
 | | j f ƒ |  j | j | j ƒ } xr | D]g } |  j	 d | | ƒ } | sòqÊn  |
 | t | ƒ } |  j	 | ƒ } |  j | ƒ | |  j | ƒ <qÊWqg qg W|  j j t d ƒ d  ƒ | j | ƒ t | ƒ | | f S(   Ni   s   scanning pathst   itemt   totali    s   copied to %s from %s@%s
s   gone from %s
R   s    unknown path in revision %d: %s
t   Mt   Rs   mark %s came from %s:%d
(   RÔ   R$   R   Râ   t	   enumerateRi   t   progressR   R   t
   getrelpathRÀ   R)   R,   RÓ   Rí   t   recodeR=   R>   R  RÁ   R­   t
   _iterfilest   replaceR?   RC   t   updatet   list(   R@   R   RZ   R×   t   changedRÒ   RÙ   t
   new_moduleR!   RÞ   R/   t   entt	   entrypathR8   t   pmodulet   prevnumR=   t
   parentpatht   fromkindt   oroott   nroott   childrent	   childpatht   pkindt   copyfrompatht
   copytopath(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRÑ   ‹  s     	 #'c            s  | ˆ k  r ˆ | } ‰ n  d  ˆ  _ ‡  ‡ f d †  } ˆ  j j t d ƒ ˆ  j | ˆ f ƒ yjd  } t } ˆ  j ˆ  j g | ˆ ƒ } z¬ x¥ | D] } | \ } }	 }
 } } |	 ˆ  j k  rÅ t	 } Pn  | s÷ ˆ  j j
 d |	 ƒ | pî |	 d k } q‘ n  | | |	 |
 | | ƒ \ } } | r$| } n  | r‘ Pq‘ q‘ WWd  | j ƒ  X| rÆ| rÆ| j rÆyW ˆ  j | j ƒ } | d k r®ˆ  j ˆ  j | d ƒ } | r®| j j | ƒ q®n  WqÆt k
 rÂqÆXn  WnJ t k
 r\ } } | t j j k rt j t d ƒ ˆ ƒ ‚ n  ‚  n Xd  S(   Nc            s#  ˆ  j  j d | t |  ƒ f ƒ t } ˆ  j | ƒ } | ˆ  j k sP | ˆ k  rZ d | f Sg  } t |  j ƒ  ƒ }  g  |  D]* \ } }	 ˆ  j	 j
 | ƒ ry | |	 f ^ qy }
 |
 ry|
 d \ } } | j rft } | j ˆ  j	 t | ƒ } ˆ  j | | j ƒ } | d k	 rvt | ƒ d \ } } | ˆ  j k rc| g } ˆ  j  j t d ƒ ˆ  j	 | | f ƒ qcqvqyˆ  j  j d ƒ n  g  } xB |  D]: \ } } ˆ  j | ƒ d k r­q†n  | j | | f ƒ q†Wt j | d  d d g ƒ } ˆ  j  j d	 d
 ƒ r	t | d ƒ } n  | rˆ  j | ƒ p!d } | r9ˆ  j | ƒ p<d } y2 ˆ  j	 j d ƒ d } | ˆ  j k rpd } n  Wn t k
 rŠd } n Xt d | d t j | d ƒ d | d | d | d | ƒ } | ˆ  j | <| | j f ˆ  j  | <ˆ  j! rˆ  j! j r| g ˆ  j! j (n  | ˆ  _! | | f S(   sl   Return the parsed commit object or None, and True if
            the revision is a branch root.
            s!   parsing revision %d (%d changes)
iÿÿÿÿi   s$   found parent of branch %s at %d: %s
s)   no copyfrom path, don't know what to do.
i   s    UTCs   %Y-%m-%dT%H:%M:%SR˜   t   localtimezonei    R   R   RH   RI   s   %Y-%m-%d %H:%M:%S %1%2t   descR×   RÎ   R   N("   Ri   R  R   R}   R»   R¨   RC   RÉ   RD   R   Rœ   R=   Ro   R°   R>   R$   R¯   RÃ   R   R  RÊ   R   t	   parsedatet
   configboolR   R  R   R®   t
   IndexErrorR   t   datestrR×   RZ   t
   child_cset(   RG   R!   RH   RI   RJ   t   branchedR   R×   RA   RÜ   t
   root_pathsR/   R  R  t   previdR¦   R  RZ   t   logRÎ   t   cset(   R@   t	   to_revnum(    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   parselogentryö  sh    
$				
		s-   fetching revision log for "%s" from %d to %d
s   revision %d has no entries
i    i   s   svn: branch has no revision %s(   RC   R.  Ri   RÃ   R   R   R}   Rê   R¯   Ro   R  RX   R×   R!   R   R°   RÊ   R   R   R)   R,   t   SVN_ERR_FS_NO_SUCH_REVISIONR   Rc   (   R@   t   from_revnumR4  R5  t	   firstcsett   lastonbranchRð   Rt   RZ   R!   RH   RI   RJ   R3  t   firstrevnumR°   Ra   t   num(    (   R@   R4  s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRã   ð  sR    	L	c         C   sv  | |  j  k r t ‚ n  d } yÎ t | ƒ d \ } } |  j | k rb | |  _ |  j |  j ƒ n  t ƒ  } t j j |  j | | | ƒ } | j	 ƒ  } | j
 ƒ  t | t ƒ r» | d } n  d | k rÍ d pÐ d } d | k rå d pè | } WnF t k
 r4}	 t j j t j j f }
 |	 j |
 k r.t ‚ n  ‚  n X| d k rld } | j | ƒ rl| t | ƒ } qln  | | f S(	   NR   i   iÿÿÿÿs   svn:executableR   s   svn:specialt   ls   link (   RÒ   RU   R$   R   Râ   R   R)   RS   t   get_filet   getvalueRX   t
   isinstanceR  R   R,   t   SVN_ERR_FS_NOT_FOUNDt   SVN_ERR_RA_DAV_PATH_NOT_FOUNDt   apr_errRœ   R   (   R@   R   R   t   modeR  R!   t   iot   infoR‰   RÜ   t   notfoundt   link_prefix(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   getfilep  s6    			
		c            s“   ˆ  j  d ƒ ‰  t ƒ  } d j |  j t ˆ  ƒ g ƒ j  d ƒ } t j j | t | ƒ t	 |  j
 | ƒ } ˆ  ry ˆ  d 7‰  n  ‡  f d †  | j ƒ  Dƒ S(   s3   Enumerate all files in path at revnum, recursively.R   c         3   s4   |  ]* \ } } | j  t j j k r ˆ  | Vq d  S(   N(   R8   R)   R,   RÓ   (   Rè   RA   RÜ   (   R/   (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pys	   <genexpr>˜  s    	(   R­   R   R|   R¤   R&   R)   R*   R¾   R;   Ro   R¢   RD   (   R@   R/   R!   RK   RÌ   RÚ   (    (   R/   s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR    s    	''c         C   sˆ   | d  k r |  j } n  | j | ƒ rj | j d ƒ t | ƒ } | j d ƒ rW | d S| d k rj | Sn  |  j j d | | f ƒ d  S(   NR   i   R   s   %r is not under %r, ignoring
(   RC   R   Rœ   R¿   R   Ri   R  (   R@   R/   R   t   relative(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR  ›  s    c         C   sv   | d  k	 r, |  j d ƒ } | d | } n  z& t j j |  j | j d ƒ | ƒ SWd  | d  k	 rq |  j | ƒ n  Xd  S(   NR   R   (   RC   Râ   R)   RS   t
   check_pathR­   (   R@   R/   R!   R   R¦   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRÀ   ¯  s    &i    c         C   s  g  } xG | D]? } | j  d ƒ s6 |  j d | } n  | j | j d ƒ ƒ q W|  j | | | | | | g }	 t |	 ƒ }
 t j ƒ  } d t j | ƒ } t j	 t j
 | ƒ ƒ \ } } | j |
 ƒ y | j ƒ  Wn& t k
 rú t j t d ƒ ƒ ‚ n Xt | ƒ S(   NR   s   %s debugsvnlogs>   Mercurial failed to run itself, check hg executable is in PATH(   Rœ   R   RÊ   R­   R¤   R	   R   t   hgexecutablet
   shellquotet   popen2t   quotecommandR  RX   RU   Rc   R   Rm   (   R@   RZ   R[   R\   R]   R^   R_   t   relpathsRA   Rk   t   argt   hgexet   cmdRf   Rg   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRê   »  s"    N(   R   R   RC   RB   R½   R{   RÐ   RÝ   Rá   Rå   Rÿ   R  R»   R!   R°   Râ   RÑ   Rã   RH  R  R  RÀ   Ro   R}   Rê   (    (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR—   ã   s*   W				H				^			J		e	€	 	sW  #!/bin/sh

REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-branch" ]; then exit 0; fi
if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-rev" ]; then exit 0; fi

echo "Changing prohibited revision property" >&2
exit 1
t   svn_sinkc           B   sã   e  Z e j d  e j ƒ Z e j d e j ƒ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z e 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(   s   Committed revision (\d+).s   Repository UUID:\s*(\S+)c         C   s    |  j  r t j |  j  ƒ n  d  S(   N(   R´   R.   t   chdir(   R@   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   prerunæ  s    	c         C   s    |  j  r t j |  j ƒ n  d  S(   N(   R´   R.   RT  t   cwd(   R@   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   postrunê  s    	c         C   s   t  j j |  j d | ƒ S(   Ns   .svn(   R.   R/   R|   R´   (   R@   R3   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR|   î  s    c         C   s   |  j  d ƒ S(   Ns	   hg-shamap(   R|   (   R@   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt
   revmapfileñ  s    c         C   s   |  j  d ƒ S(   Ns   hg-authormap(   R|   (   R@   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt
   authorfileô  s    c         C   sû  t  j |  | | ƒ t j |  | d ƒ g  |  _ g  |  _ g  |  _ g  |  _ d  |  _ t	 j
 ƒ  |  _ t } t	 j j t	 j j | d d ƒ ƒ r± t	 j j | ƒ |  _ |  j d ƒ nPt j d | ƒ s—t	 j j | ƒ } t	 j j t	 j j | ƒ ƒ r—t	 j j t	 j j | d d ƒ ƒ s\| j t d ƒ t	 j j | ƒ ƒ t | d	 ƒ j d
 | ƒ | } n  t j | ƒ } | j d ƒ s‡d | } n  d | } q—n  t	 j j t	 j
 ƒ  t	 j j | ƒ d ƒ } | j t d ƒ t	 j j | ƒ ƒ |  j d | | ƒ | |  _ t j |  j ƒ |  _ t j |  j ƒ |  _ t  | |  j d ƒ ƒ |  _! t j" |  j ƒ rat j# pdd  |  _$ | rÄt	 j j | d d ƒ } t% | d ƒ } | j& t' ƒ | j( ƒ  t j) | t t* ƒ n  |  j d ƒ } |  j+ j | ƒ j, d ƒ j- ƒ  |  _. d  S(   NR)   s   .svnRÚ   R  s#   ^(file|http|https|svn|svn\+ssh)\://Rz   s   fs-types   initializing svn repository %r
t   svnadmint   createR   s   file://s   -wcs!   initializing svn working copy %r
t   checkouts   hg-childmapRx   s   pre-revprop-changet   wRE  i   (/   R   RB   R   t   deletet   setexect   delexecRÙ   RC   R´   R.   t   getcwdRV  R}   R/   t   isfileR|   R  t   run0t   ret   searchR0   t   dirnameR{   t   statusR   t   basenameR   R1   Rœ   R   R‡   t   wopenerR   t   childmapt	   checkexect   isexect   is_execRƒ   R  t   pre_revprop_changeRX   t   setflagsRo   t   uuid_ret   groupR­   Rª   (   R@   Ri   R/   t   createdt   wcpatht   hookRN   t   output(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRB   ÷  sR    					$$	+	$
c         G   s   t  j j |  j | Œ S(   N(   R.   R/   R|   R´   (   R@   t   names(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   wjoin)  s    c         C   sÎ   t  ƒ  } |  j d d t d t ƒ} t j j j | ƒ } xŽ | j d ƒ D]} } xt | j D]i } | j	 | j
 k sY | j d k r† qY n  d j d „  | j Dƒ ƒ } | j t j | j d ƒ ƒ ƒ PqY WqI W| S(	   NR¾   t	   recursivet   xmlRt   R3   R   c         s   s*   |  ]  } | j  | j k r | j Vq d  S(   N(   t   nodeTypet	   TEXT_NODER‰   (   Rè   t   c(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pys	   <genexpr>8  s    s   utf-8(   RÔ   Rc  Ro   Ry  t   domt   minidomt   parseStringt   getElementsByTagNamet
   childNodesRz  t   ELEMENT_NODEt   tagNameR|   Rí   R   R4   t   encode(   R@   t   mRu  t   docRÜ   RÛ   R3   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   manifest,  s    	!	c         C   s  d | k r" |  j  j | | ƒ nÝ y/ t j j |  j | ƒ ƒ rP t j | ƒ n  Wn t k
 rd n X|  j  j | | ƒ |  j	 rÿ |  j	 |  j | ƒ ƒ r» d | k rÚ |  j
 j | ƒ qÚ n d | k rÚ |  j j | ƒ n  t j |  j | ƒ t d | k ƒ n  d  S(   NR<  R   (   Ri  t   symlinkR.   R/   t   islinkRw  t   unlinkt   OSErrorR  Rm  R`  RÊ   R_  R   Ro  R}   (   R@   t   filenamet   flagsR‰   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   putfileC  s    	c         C   së   |  j  | ƒ } t j j | ƒ } | r~ t j d d d t j j | ƒ ƒ \ } } t j | ƒ t j | ƒ t j	 | | ƒ n  z |  j
 d | | ƒ Wd  |  j j | ƒ | ræ y t j | ƒ Wn t k
 rÒ n Xt j	 | | ƒ n  Xd  S(   Nt   prefixs   hg-copy-t   dirt   copy(   Rw  R.   R/   t   lexistst   tempfilet   mkstempRf  RX   RŠ  t   renameRc  R‡  Rí   R‹  (   R@   Ró   Rõ   t   wdestR{   t   fdt   tempname(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt	   _copyfileW  s"    	!c         C   sw   t  ƒ  } xg | D]_ } t j j |  j | ƒ ƒ rA | j | ƒ n  x+ t j | d ƒ D] } | j | |  ƒ qT Wq W| S(   NR   (   RÔ   R.   R/   R0   Rw  Rí   R    t   rfindall(   R@   RØ   t   dirsRà   RÞ   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   dirs_ofn  s    	c         C   sp   g  t  |  j | ƒ ƒ D] } | |  j k r | ^ q } | rl |  j j | ƒ |  j | d d t d t ƒn  | S(   NRí   t   non_recursivet   quiet(   RÉ   Rœ  R‡  R  t   xargsRo   (   R@   RØ   t   dt   add_dirs(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR¡  w  s    c         C   s[   g  | D] } | |  j  k r | ^ q } | rW |  j  j | ƒ |  j | d d t ƒn  | S(   NRí   Rž  (   R‡  R  RŸ  Ro   (   R@   RØ   Rà   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt	   add_files  s
    (c         C   s„   g  } xw t  |  j | ƒ d t ƒD]Z } |  j | ƒ } t j | ƒ d k r" |  j d | ƒ |  j j | ƒ | j	 | ƒ q" q" W| S(   NRæ   s   .svnR^  (
   RÉ   Rœ  Ro   Rw  R.   t   listdirRc  R‡  t   removeRÊ   (   R@   Rv  t   deletedR   t   wd(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt	   tidy_dirs†  s    "c         C   s   | |  j  | <d  S(   N(   Rj  (   R@   t   parentt   child(    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   addchild  s    c         C   s   d |  j  | f S(   Nu	   svn:%s@%s(   Rª   (   R@   R   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR»   “  s    c      	   C   sß  x: | D]2 } y |  j  |  j | ƒ SWq t k
 r8 q Xq Wx | D]ˆ \ } }	 y | j | |	 ƒ \ }
 } Wn! t k
 r |  j j | ƒ qD X|  j | | |
 ƒ | | k rD |  j j | | | g ƒ qD qD Wg  | D] } | d ^ q× } t	 |  j ƒ } t
 | ƒ } | j |  j | j | ƒ ƒ ƒ |  j rfx' |  j D] \ } } |  j | | ƒ q:Wg  |  _ n  |  j r²|  j |  j d ƒ x! |  j D] } |  j j | ƒ qŒWg  |  _ n  | j |  j | j | ƒ ƒ ƒ | j |  j | ƒ ƒ |  j r|  j |  j d d ƒ g  |  _ n  |  j r@|  j |  j d d d ƒ g  |  _ n  t j d d ƒ \ } } t j | d	 ƒ } | j | j ƒ | j ƒ  zF|  j d
 d t j | j  ƒ d | d d ƒ} y |  j! j" | ƒ j# d ƒ } WnZ t$ k
 r/| sñ| d S|  j% j& t' d ƒ ƒ |  j% j& | ƒ t j( t' d ƒ ƒ ‚ n X| j) r^|  j* d d | j) d t+ d | ƒn  | j, r›| j, d k r›|  j* d d | j, d t+ d | ƒn  x | D] } |  j- | | ƒ q¢W|  j  | ƒ SWd  t j. | ƒ Xd  S(   Ni    R^  t   propdels   svn:executablet   propsett   *R  s   hg-convert-R]  R   t   usernameR   R   s   utf-8i   s   unexpected svn output:
s   unable to cope with svn outputs   hg:convert-revt   revpropt   revisionRš   s   hg:convert-branch(/   R»   Rj  t   KeyErrorRH  RU   R^  RÊ   RŽ  RÙ   RÔ   t	   frozensetR  R¡  t
   differenceR™  RŸ  R‡  R¤  R¢  R§  R`  R_  R“  R”  R.   t   fdopenR  R)  RX   Rc  R   t	   shortuserRH   t	   commit_reRe  Rq  RŸ   Ri   R†   R   Rc   R   t   runRo   RÎ   Rª  RŠ  (   R@   RØ   RÙ   R×   R   Ró   Rº   R¨  Rà   RM   R‰   RC  RÚ   R'   R   R—  t   messagefileRN   Ru  R   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt	   putcommit–  sz    !				
		c         C   s   |  j  j t d ƒ ƒ d S(   Ns/   writing Subversion tags is not yet implemented
(   NN(   Ri   R†   R   RC   (   R@   RÆ   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   puttagsÛ  s    c         C   s0   | |  j  k r t St j t d ƒ | ƒ ‚ d  S(   Ns_   splice map revision %s not found in subversion child map (revision lookups are not implemented)(   Rj  Ro   R   Rc   R   (   R@   R   (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt	   hascommitß  s    (   R   R   Rd  t   compileR  R¶  Rp  RU  RW  R|   RX  RY  RB   Rw  t   propertycacheR‡  RŽ  R™  Rœ  R¡  R¢  R§  Rª  R»   R¹  Rº  R»  (    (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRS  â  s*   						2								
			E	(@   R.   Rd  Re   R“  R%   R   t   xml.dom.minidomRy  t   cPickleRE   t	   mercurialR    R   R   R   t   mercurial.i18nR   R½  t	   cStringIOR   t   commonR   R   R   R	   R
   R   R   R   R   R   t   svn.coreR   R   R)   t
   svn.clientt   svn.rat	   svn.deltaRQ   t   warningst   filterwarningst   DeprecationWarningt   ImportErrorRC   RV   R   R$   R&   R5   R;   t   objectR<   Ro   R}   Rb   Rl   Rm   R€   RŠ   R“   R–   R—   Rn  RS  (    (    (    s<   /sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt   <module>   sX   T"	("
			
						

	"ÿ ÿ ÿ  