
    ifz                     x   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 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 ddlmZ ej0                  Zej2                  Zej4                  Zej6                  Zej8                  Zej:                  Zej<                  Zej>                  Zej@                  Z ejB                  Z!ejD                  Z"ejF                  Z#ejH                  Z$ejJ                  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+ d dl,Z, e,jZ                  d	d
e.       e&j^                  j`                   da2d Z3d Z4d Z5d Z6 G d de7      Z8d Z9d Z:d Z;d Z< G d d      Z=	 	 	 d(dZ>d Z? G d d      Z@ G d deA      ZBd ZCd ZDeDeDeCd ZEd! ZF G d" d#e      ZGd$ZHd% ZI G d& d'ee      ZJy# e1$ r dZ&Y w xY w))    N)_)open)encodingerrorpycompatutilvfs)dateutilprocutil
stringutil   )common)	transportignorezsvn.core)modulecategoryc                  j   t         y t        j                  rda nDt        j                         5  t        j                  t
        j                        xs da d d d        t        j                  t               j                  a t         t        j                  d      j                  k(  ay # 1 sw Y   SxY w)Nmbcsz
ISO-8859-1utf-8)
fsencodingr   	iswindowsr   with_lc_ctypelocalenl_langinfoCODESETcodecslookupnamefsencoding_is_utf8     :/usr/lib/python3/dist-packages/hgext/convert/subversion.pyinit_fsencodingr#   N   s     
 ! 	L++FNN;K|J	Lz*//J#v}}W'='B'BB	L 	Ls   (B))B2c                 Z    t         r| S | j                  t              j                  d      S )Nr   )r   decoder   encodess    r"   fs2svnr)   _   s$    xx
#**733r!   c                 .    t        j                  | d      S )Ns   %Y-%m-%dT%H:%M:%S.000000Z)r
   datestr)dates    r"   formatsvndater-   f   s    D">??r!   c                 <    t        j                  | d d dz   dg      S )N   s    UTCs   %Y-%m-%dT%H:%M:%S)r
   	parsedater'   s    r"   parsesvndater1   j   s&     afw.1E0FGGr!   c                       e Zd Zy)SvnPathNotFoundN)__name__
__module____qualname__r    r!   r"   r3   r3   q   s    r!   r3   c                    | j                  dd      }d}t        |      dkD  rt        |d         }|d   j                  dd      }d}d}t        |      dkD  r$|d   j	                  d      r|d   dd }d|d   z   }|||fS )	a  Parse a revision string and return (uuid, path, revnum).
    >>> revsplit(b'svn:a2147622-4a9f-4db4-a8d3-13562ff547b2'
    ...          b'/proj%20B/mytrunk/mytrunk@1')
    ('a2147622-4a9f-4db4-a8d3-13562ff547b2', '/proj%20B/mytrunk/mytrunk', 1)
    >>> revsplit(b'svn:8af66a51-67f5-4354-b62c-98d67cc7be1d@1')
    ('', '', 1)
    >>> revsplit(b'@7')
    ('', '', 7)
    >>> revsplit(b'7')
    ('', '', 0)
    >>> revsplit(b'bad')
    ('', '', 0)
       @r   r      /r!   s   svn:   N)rsplitlenintsplit
startswith)revpartsrevnumuuidmods        r"   revsplitrE   u   s     JJtQEF
5zA~U1X!HNN4#ED
C
5zA~%(--g6Qx|U1Xofr!   c                 .    t         j                  | d      S )Ns   !$&'()*+,-./:=@_~)urlreqquoter'   s    r"   rH   rH      s     <</00r!   c                 6   	 t         j                  j                  t         j                  j	                  t        |                   S # t         j                  j                  $ r Y nw xY wt        j                  j                  |       rst        j                  j                  t        j                  |             } t        j                  rdt        j                  |       z   } t        |       } dt        |       z  } t         j                  j	                  |       S )zConvert path or URL to a SVN URL, encoded in UTF-8.

    This can raise UnicodeDecodeError if the path or URL can't be converted to
    unicode using `fsencoding`.
    r9   s	   file://%s)svnclienturl_from_pathcoresvn_path_canonicalizer)   SubversionExceptionospathisdirnormpathr   abspathr   r   rH   )rQ   s    r"   geturlrU      s    zz''HH**6$<8
 	
 88''  
ww}}TwwT 23$----D d|eDk)88))$//s   AA A'&A'c                     t         j                  j                         }t         j                  j                  |_        | |j
                  _        |S N)rJ   rM   svn_opt_revision_tsvn_opt_revision_numberkindvaluenumber)r\   optrevs     r"   r]   r]      s6    XX((*F((22FK FLLMr!   c                       e Zd Zd Zy)changedpathc                 j    |j                   | _         |j                  | _        |j                  | _        y rW   )copyfrom_pathcopyfrom_revaction)selfps     r"   __init__zchangedpath.__init__   s%    __NNhhr!   N)r4   r5   r6   rf   r    r!   r"   r_   r_      s    r!   r_   c           
          d fd}	 t        j                  |      }	t        j                  j	                  |	j                  |||||||       t        j                  d          j                          t        j                  d       y # t        $ r t        j                  d         Y Ht        $ r4}
t        j                  t        j                  |
              Y d }
~
d }
~
ww xY w)Nc                     i }| &| j                         D ]  \  }}t        |      ||<    t        j                  |||||f	
       y rW   )itemsr_   pickledump)
orig_pathsrB   authorr,   messagepoolpathskvfpprotocols            r"   receiverzget_log_child.<locals>.receiver   sR    !"((* *1&q>a*UFFD':BIr!   urlr   )r   SvnRaTransportrJ   raget_logrk   rl   IOError	Exceptionr   forcebytestrflushrP   _exit)rt   rx   rq   startendlimitdiscover_changed_pathsstrict_node_historyrv   tinstru   s   `          @r"   get_log_childr      s     HJ( $$-DD"		
  	D"h'HHJ HHQK  (D"h' AJ++D12x@@As   AB  C-1C-9*C((C-c                    t        j                         5  t        t        j                  t        d            t        | j                  j                               }t        | j                  g|  ddd       y# 1 sw Y   yxY w)ziFetch SVN log in a subprocess and channel them back to parent to
    avoid memory collection issues.
    Ns5   debugsvnlog could not load Subversion python bindings)r   r   rJ   r   Abortr   
decodeargsfinreadr   fout)uioptsargss      r"   debugsvnlogr      sk     
			 &;++JK  "&&++-(bgg%%& & &s   AA<<Bc                   "    e Zd ZdZd Zd Zd Zy)	logstreamz$Interruptible revision log iterator.c                     || _         y rW   )_stdout)rd   stdouts     r"   rf   zlogstream.__init__  s	    r!   c              #   .  K   	 	 t        j                  | j                        }	 |\  }}}}}| .# t        $ r t	        j
                  t        d            w xY w# t        t        f$ r& |Y y t	        j
                  t        d      |z        w xY ww)N>   Mercurial failed to run itself, check hg executable is in PATHs   log stream exception '%s')	rk   loadr   EOFErrorr   r   r   	TypeError
ValueError)rd   entryrm   rB   rn   r,   ro   s          r"   __iter__zlogstream.__iter__  s     DLL1K<A9
FFD'
 K!   kk5  z* K=kk!$@"AE"IJJKs6   B2 A B(ABB.B0"BBc                 `    | j                   r"| j                   j                          d | _         y y rW   )r   closerd   s    r"   r   zlogstream.close  s%    <<LL DL r!   N)r4   r5   r6   __doc__rf   r   r   r    r!   r"   r   r      s    .& r!   r   c                   $    e Zd ZdZ	 	 	 ddZd Zy)directlogstreamzDirect revision log iterator.
    This can be used for debugging and development but it will probably leak
    memory and is not suitable for real conversions.c           
            fd}t        j                  |      }	t        j                  j	                  |	j                  |||||||       y )Nc                     i }| &| j                         D ]  \  }}t        |      ||<    	j                  |||||f       y rW   )rj   r_   append)
rm   rB   rn   r,   ro   rp   rq   rr   rs   rd   s
            r"   rv   z*directlogstream.__init__.<locals>.receiver,  sN    E%&,,. .DAq*1~E!H.KKg>?r!   rw   )r   ry   rJ   rz   r{   )
rd   rx   rq   r   r   r   r   r   rv   r   s
   `         r"   rf   zdirectlogstream.__init__"  sG    	@ $$-DD"		
r!   c                      y rW   r    r   s    r"   r   zdirectlogstream.closeA  s    r!   Nr   TF)r4   r5   r6   r   rf   r   r    r!   r"   r   r     s    8 #!
>r!   r   c                     dD ]A  }t         j                  j                  t         j                  j                  ||            rA y y)N)s   locks   hookss   format   dbFT)rP   rQ   existsjoin)r   rQ   protoxs       r"   	filecheckr   H  s8    3 ww~~bggll434 r!   c                    	 t         j                         }|j                  t        j                  d||fz        d      }|j                         }d|v S # t        j                  $ rU}|j                  dk7  r| j                  t        d             Y d }~y|j                  j                         }Y d }~d|v S d }~wt        $ r Y yw xY w)Ns   %s://%s/!svn/ver/0/.svns   rbi  sw   svn: cannot probe remote repository, assume it could be a subversion repository. Use --source-type if you know better.
TFs#   <m:human-readable errcode="160013">)rG   buildopenerr   r   strurlr   urlerr	httperrorcodewarnr   rt   r}   )r   rQ   r   openerrspdatar   s          r"   	httpcheckr   R  s    ##%kkOO6%FG
 xxz  2T99  99GG& ww||~ 2T99  s$   AA C')B7B77CC)   https   https   filec                 >   	 |j                  dd      \  }}|dk(  rt        j                  r?|d d dk(  r7|dd j                         r$|dd j	                         dk(  r|d d dz   |dd  z   }	 |j                  t              }t        j                  |      }d|v r| j                  t        d             y
|j                  t              }|dk(  rt        j"                  |      }n4|dv r0t%        j&                  |      s| j                  t        d             y
t(        j+                  |d       }d|v r% || ||      ry|j-                  dd      d   }d|v r%y
# t        $ r7 | j                  t        d	      t        j                  t              z         Y y
w xY w# t        $ rv d}t        j                   |      }	 |j                  t               nD# t        $ r8 | j                  t        d      t        j                  t              z         Y Y y
w xY wY Qw xY w)Ns   ://r   r   r9         s   %3a/s   :/sf   Subversion requires that file URLs can be converted to Unicode using the current locale encoding (%s)
Fu   �sI   Subversion does not support non-UTF-8 percent-encoded bytes in file URLs
sb   Subversion requires that paths can be converted to Unicode using the current locale encoding (%s)
)r   httpssc   Subversion sources don't support non-ASCII characters in HTTP(S) URLs. Please percent-encode them.
c                       y)NFr    )r   s    r"   <lambda>zissvnurl.<locals>.<lambda>  s    r!   Tr   )r>   r   r   isalphalowerr%   r   UnicodeDecodeErrorr   r   sysbytesrG   url2pathnamer&   r   r   rT   pconvertr   
isasciistrprotomapgetr;   )r   rx   r   rQ   unicodepathchecks         r"   issvnurlr   r  s5   9ii*tG""!H$1I%%'1IOO%0BQx%'$qr(2
"kk*5" !--k:K+{:@  %%j1D }}T"	$	$""4(GGC LL 34E
$,T5!{{4#A& $, } & O ''
3	4 @  ||C 
	KK
#! 	GGH ##J/	0 	 $	s`   A)F ,E 3F 5F =FF FF  H>GH=HHHHHc                        e Zd Zd fd	Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd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dZ xZS )
svn_sourcec                    t         t        |   ||||       t                |j	                  d      s|j	                  d      st
        j                  j                  |      r=t
        j                  j                  t
        j                  j                  |d            s#t        ||      st        t        d      |z        t        #t        t        d      t        d      dz  z         	 t        j                  j                  t        j                  j                   f}|d	k  r&t        t        d
      |z  t        d      dz  z         	 i | _        d }	 |j'                  d      }|dk\  rt)        ||dz   d        }|d | }t-        |      | _        d| _        	 t3        j4                         5  t7        j8                  | j.                        | _        | j6                  j:                  | _        | j6                  j<                  | _        t        j:                  jA                  | j:                        | _!        tD        jG                  | j.                  tI        | jB                        d        | _%        d | _&        | jJ                  | _'        i | _(        i | _)        t        j:                  jU                  | j:                        | _+        d d d        |r;tI        |      dkD  rt_        j`                  t        d            	 t)        |d         }| jb                  je                  dd      }	|	d}	|	jg                  d      | _4        | jb                  je                  dd      | _5        	 t)        | jj                        | _5        | jj                  dk  rd| _5        	 t3        j4                         5  | jm                  | jJ                  |      | _7        d d d        | jn                  s+t_        j`                  t        d      | jJ                  z        | js                  | jn                        | _:        d| _;        t
        j                  j                  t
        j                  j                  |d            r|| _<        d | _=        y d | _<        d | _=        y # t"        $ r$ t        t        d      t        d      dz  z         w xY w# t*        $ r Y Ew xY w# 1 sw Y   xY w# t        j                  jX                  $ r |j[                          dt        j                  j                  t        j                  j                   t        j                  j\                  fz  }t        t        d      | j.                  |fz        w xY w# t*        $ r% t_        j`                  t        d      |d   z        w xY w# t*        $ r, t_        j`                  t        d      | jj                  z        w xY w# 1 sw Y   xY w# tp        $ r d | _7        Y 3w xY w) N)revss   svn://s
   svn+ssh://   .svns-   %s does not look like a Subversion repositorys)   could not load Subversion python bindingss     (try installing the %s package)s   python3-subversion)r   r:   s=   Subversion python bindings %d.%d found, 1.4 or later requireds    (try upgrading the %s package)s   python-subversions=   Subversion python bindings are too old, 1.4 or later requiredr8   r   r   s   UTF-8rw   s   %d.%d.%dsB   %s does not look like a Subversion repository to libsvn version %ss@   subversion source does not support specifying multiple revisionss"   svn: revision %s is not an integer   converts	   svn.trunk   trunkr9   s   svn.startrevs(   svn: start revision %s is not an integer   no revision found in module %sNNs   .svn/entries)>superr   rf   r#   r?   rP   rQ   r   r   r   NoRepor   rJ   MissingToolrM   SVN_VER_MAJORSVN_VER_MINORAttributeErrorlastrevsrfindr=   r   rU   rx   r   r   r   r   ry   rz   rK   ctxget_repos_rootbaseurlrG   unquoter<   r   
prevmodule
rootmodulecommitsrq   get_uuidrC   rO   	tracebackSVN_VER_MICROr   r   r   configstrip	trunknamestartrevlatestheadr3   rB   last_changed_changescachewc	convertfp)rd   r   repotyperx   r   versionr   at
svnversiontrunkcfg	__class__s             r"   rf   zsvn_source.__init__  s,   j$(Xs(FNN9%~~m,s#GGNN277<<W#=>C BCcI  ;a LM CDG\\] ^ ^	hh,,chh.D.DDG!1 	
 89<PPQ   $ 	 4BQwSa]+#2h #; 	##% 5!*!9!9dhh!G..++>>00"vv44TWW= %nnTXXc$,,6G6I-JK"&"&++!
FFOODGG4	58 4y1}kk9 T!W 77>>*l;H!-z?C	.DM}}q  !	##% = KKV<	= yy++34t{{B  !KK		2)77>>"'',,sO<=DG  DGE  	) 458LL	M 	&  		
5 5 xx++ 	LLN$&&&&&&( J
 , 88Z(	) 	2  kk;<tAwF   	++=>N 	= = 	DI	s   .AR ,R= S 0DSS ?U> %0V/ W4 *"W'W4 -R:=	S
	S
SS B!U;>.V,/5W$'W1,W4 4XXc                 j    t        j                         | _        | j                  j                          y rW   )r   r   	__enter__r   s    r"   beforezsvn_source.beforeR  s%    !//1$$&r!   c                 >    | j                   j                  d d d        y rW   )r   __exit__r   s    r"   afterzsvn_source.afterV  s    ##D$5r!   c                 |    i }|D ].  }t        |      \  }}}|j                  ||      }||kD  s*|||<   0 || _        y rW   )rE   
setdefaultr   )rd   revmapr   revidrC   r   rB   
lastrevnums           r"   	setrevmapzsvn_source.setrevmapY  sS     	*E#+E? D&&!,,VV<J
"#) 		*
 !r!   c                     	 t         j                  j                  | j                  j	                  d      dz   t        |      z   |d| j                         y# t         j                  j                  $ r Y yw xY w)Nr9   FT)	rJ   rK   lsrx   rstriprH   r   rM   rO   )rd   rQ   r]   s      r"   r   zsvn_source.existsb  sc    		JJMM%,uT{:	 xx++ 		s   AA A76A7c                      fd} fd}t         j                        }d} |d|      } |d|       _         |d|      }|r j                  xs d} xj                  d|z   z  c_         j	                   j                   j                         _         j
                  s+t        j                  t        d       j                  z         j
                  g _	         j                  d	| j                  xs dfz   _        |r j                  j                  d      }t        j                  j                  |dz   t        |      z   |d
 j                         }t#        |      D ]  }	d|||	fz  }
 ||
 j                        s j	                  |
 j                        }|s( j$                  j'                  t        d      |	z         e j$                  j'                  t        d      |	 j)                  |      fz          j                  j+                  |         j,                  r j                  rt/         j                        dkD  rt        j                  t        d             j)                   j                  d         }| j,                  k  r+t        j                  t        d       j,                  z         j                  S )Nc                 b    j                  | |      }|t        j                  j                  k(  S rW   )
_checkpathrJ   rM   svn_node_dir)rQ   rB   rZ   rd   s      r"   rR   z"svn_source.getheads.<locals>.isdiro  s(    ??40D3880000r!   c                    j                   j                  dd| z         }||j                         dk(  ry |xs | j                  d      }j                  ||      sGj                  j                  |      r| dk(  ry |r#t        j                  t        d      | |fz        y j                   j                  t        d      | t        j                  |      fz         |S )Nr   s   svn.r!   r9   r   s&   expected %s to be at %r, but not founds   found %s at %r
)r   r   r   r   r   endswithr   r   r   noter   bytestr)r   r@   cfgpathrQ   rd   s       r"   
getcfgpathz'svn_source.getheads.<locals>.getcfgpaths  s    ggnnZ4@G"w}}#'=Ot**40D;;tS);;''-$(2B++CD,'  GGLL%&$0@0@0F)GG Kr!   r!   r   s   tagss   branchesr9   r   s   %s/%sFs   %s/%s/%ss   ignoring empty branch %s
s   found branch %s at %d
r   s>   svn: start revision is not supported with more than one branchr   s.   svn: no revision found after start revision %d)r]   r   tagsr   r   r   r   r   r   headsrx   r   rJ   rK   r
  rH   r   sortedr   r  rB   r   r   r<   )rd   rR   r  r@   	oldmoduletrunkbranchesrpathbranchnamesbranchr   brevidrB   s   `            r"   getheadszsvn_source.getheadsn  sr   	1	( T&&'	8S)w,	k3/ *sIKK4%<'KDKK1B1BCDI99kk784;;F 
 ii[
99  I		0DW#FFDI HHNN4(E**--uX.UDHHK !- *$	8V'DDVT%6%67VT->->?GGLL#@!AF!JK01t{{6234 

!!&)* ==TZZ4::"kk5  [[A/F%kkGHmm$ 
 zzr!   c                 L   | j                   |   \  }}i }|r| j                  |||      \  }| _        }|s|st        |      \  }}}	t        j
                  j                  | j                  t        |      z   t        |	      d| j                        }
|
j                         D cg c].  \  }}|j                  t        j                  j                  k(  r|0 }}}t               | _        j!                          t#        j$                  ||gt'        |      z        }||fS c c}}w NT)rq   expandpathsremovedrE   rJ   rK   r
  r   rH   r]   r   rj   rZ   rM   svn_node_filesetsortr   ziplistr<   )rd   r@   fullrq   parentscopiesfilesrC   r   rB   entriesnes                r"   _getchangeszsvn_source._getchanges  s    ::c?*.*:*:3w*O'E4<w#+C= D&&jjmmuV},fVndDHHG
 $MMOAq66SXX333 E 
 5DL

  E
(:;vs   $3D c                     | j                   d   |k(  r|s| j                   d   \  }}n"| j                  ||      \  }}| j                  |= ||t               fS )Nr   r   )r   r0  rq   r&  )rd   r@   r)  r,  r+  s        r"   
getchangeszsvn_source.getchanges  s_    a C' #003OUF #..sD9OUF

3vsu%%r!   c                 r    | j                  |d      \  }}|||ff| _        |D cg c]  }|d   	 c}S c c}w )NFr   )r0  r   )rd   r@   ir,  r+  fs         r"   getchangedfileszsvn_source.getchangedfiles  sA    **36!E6?3#$!$$$s   4c                 v   || j                   vrt        |      \  }}}|| _        | j                  |       | j                  j                  |d      }||k  r|dz   }| j                  ||       || j                   vr!t        j                  t        d      |z        | j                   |   }| j                   |= |S )Nr   r   s   svn: revision %s not found)
r   rE   r   reparentr   r   _fetch_revisionsr   r   r   )rd   r@   rC   r   rB   stop	revcommits          r"   	getcommitzsvn_source.getcommit  s    dll"#+C= D&& DKMM&! ==$$VQ/D}z!!&$/$,,&kk!$A"BV"KLLLL%	LLr!   c                 v    t        j                  d|      s#t        j                  t	        d      ||fz        y)z:fails if revision format does not match the correct formatsW   svn:[0-9a-f]{8,8}-[0-9a-f]{4,4}-[0-9a-f]{4,4}-[0-9a-f]{4,4}-[0-9a-f]{12,12}(.*)@[0-9]+$s.   %s entry %s is not a valid revision identifierN)rematchr   r   r   )rd   revstrmapnames      r"   checkrevformatzsvn_source.checkrevformat  sF    xx$ 	
 ++CDF#$ 
r!   c                 l    t        | j                  j                  dd      d         | j                  z
  S )Nr8   r   )r=   r   r;   r   r   s    r"   
numcommitszsvn_source.numcommits  s,    499##D!,Q/04==@@r!   c           	         i }| j                   |S g }| j                   }t        j                  j                  | j                        }| j	                  | j                   g|| j
                        }	 |D ]9  }|\  }}}	}
}|sg }|j                         D cg c]*  \  }}|j                  r|j                  |j                  |f, }}}|j                  d       |}|r|d   d   |k(  r|j                         d   }|D ]g  \  }}}|j                  |dz         s|D ]3  }|d   j                  |      s||d   t        |      d  z   }||g|d d  S |j                  |||g       i |j                         D ci c]-  \  }}|j                  dk(  r|j                  r||j                  / }}}t               }|D ]K  }|D ]D  \  }}}|j                  |dz         r|j                  ||   dz         r3|j!                  |        K M |D ]0  }|D cg c]#  }|d   |k7  r|d   j                  |dz         s|% }}2 g }|D ]c  \  }}}|j#                  d      d   }|j                  |      r|j                  |||g       A||v rF	 | j%                  ||      }|r	||vr|||<   e |}|}< 	 |j)                          |S c c}}w c c}}w c c}w # t&        $ r Y w xY w# |j)                          w xY w)NT)reverserh   r   r   r9      A)r  rJ   rz   get_latest_revnum_getlogr   rj   ra   rb   r'  popr?   r<   r   rc   r&  addr>   r   r3   r   )rd   r  pendingstagspathr   streamr   	origpathsrB   rn   r,   ro   re   r/  r+  srctagspathsource	sourcerevdesttagtagpathaddedsbadrootsdestrootbadroot	renamingstagnametagids                               r"   gettagszsvn_source.gettags  sf   99K 99((1tyyk5$--@S	 P';@8	664  "I !* 11 __anna8  D)&fRjmx7"(**,q/K/5 	C+FIt??8d?; ' Cq6,,T2&,s1vc$ik/B&BG'.	&:CG!	C !D(AB	C( !* 11xx4'AOO q& 
 5 & H3; /	4#$tO #..vh/?$/FG$ X.  ( G "* Q47? !!$ ?  H   	/7 +FIt"jj.r2G((5!((&)W)EF $ 	 $FI > WD%8,1DM& %&aP'd LLN_>  , + 
  LLNsd   1%K# /KA.K# 4AK# ;2K	-A&K# (K;AK# 
K'	K# K# 	K K# K  K# #K5c           	      b   | j                   sy | j                  :t        t        j                  j                  | j                   dd      d      | _        | j                  j                  t        j                  d|| j                  |      fz               | j                  j                          y )Nr   	   hg-shamaps   abs   %s %d
)r   r   r   rP   rQ   r   writer   tonativeeolrB   r   )rd   r@   destrevs      r"   	convertedzsvn_source.converted~  s    ww>>!!TWWg|<eDN 	Z7DKK4D*EEF	
 	r!   c                 B    d| j                   |xs | j                  |fz  S )Ns   svn:%s%s@%d)rC   r   )rd   rB   r   s      r"   r  zsvn_source.revid  s!    F,Adkk6 JJJr!   c                 <    t        |j                  d      d         S )Nr8   rh   )r=   r>   rd   r@   s     r"   rB   zsvn_source.revnum  s    399T?2&''r!   c                 8    d fd	}|j                   j                        s j                  j                  d|z         y|)t        j
                  j                   j
                        }	  j                  d      }t        j
                  j                   j
                  |j                  d      |      } j                  |       |st        t        d      ||fz         ||||j                        \  }}|- |||      \  }}| j                  j                  d|z         y|j                   j                        s j                  j                  d|z         y j                  ||      S # t        j                  j                  $ r d}Y w xY w)	a]  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.
        Nc                    j                  | g||xs d      }	 |D ]  }|\  }}}}}	||r nu|||k  r nl|D ]e  }
| j                  |
      r||
   j                  s$||
   j                  | t        |
      d  z   }j                  j                  d| ||fz         |}    sd }| f|j                          S # |j                          w xY w)Nr   s#   branch renamed from %s to %s at %d
)rI  r?   ra   r<   r   debugr   )rQ   r   r:  rN  r   rq   rB   rn   r,   ro   re   newpathrd   s               r"   findchangesz&svn_source.latest.<locals>.findchanges  s    \\4&%;F# E;@8E664| 'FdN" 	#q1q9O9O$"'("8"84A>"IC#Wf56  '	& !Ft|s   BB; ;Cs   ignoring foreign branch %r
r!   r9   s   %s not found up to revision %ds   ignoring empty branch %r
rW   )r?   r   r   ri  rJ   rz   rH  r8  statr   rM   rO   r3   r   created_revr  )rd   rQ   r:  rk  r   direntrB   realpaths   `       r"   r   zsvn_source.latest  sc   	8 t/GGMM9D@A<66++DGG4D	s+JVV[[$**T*:DAFMM*% !34d|C  'tT63E3EF>  +46FH~;hFG""4??3GGMM9HDEzz&(++7 xx++ 	F	s   .AE7 7FFc                    | j                   |k(  r|S | j                  t        |      z   }| j                   }|d}| j                  j	                  d|z         t
        j                  j                  | j                  |       || _         |S )z:Reparent the svn transport and return the previous parent.r!   s   reparent to %s
)r   r   rH   r   ri  rJ   rz   r8  )rd   r   svnurlr   s       r"   r8  zsvn_source.reparent  sr    ??f$Mf-__
J)F23( r!   c                 r   t               t               }}i }t        |      dd  \  }}|| j                  k7  r"|| _        | j                  | j                         | j                  j                  t        d      t        d      t        |            }	t        |      D ]  \  }
\  }}|	j                  |
|       | j                  |      }| j                  ||      }|t        j                  j                  k(  r|j                  | j!                  |             |j"                  r|st        |d         dd  \  }}|j$                  |k  r| j                  |j"                  |      }|s| j                  j'                  d|||j$                  fz         | j!                  |      || j!                  |      <   |dk(  r\| j                  j'                  d|j$                  z         t        |d         dd  \  }}|d	z   |z   }| j                  |||      }|t        j                  j                  k(  r"|j                  | j!                  |             |t        j                  j(                  k(  r|j+                  d	      }|j+                  d	      }| j-                  ||      }|D ]L  }|j/                  ||      }| j                  d	|z   |      }|s-|j                  | j!                  |             N _| j                  j'                  d
||fz         |t        j                  j(                  k(  s|j0                  dk(  r|j0                  dk(  r|rt        |d         dd  \  }}| j                  |||      }|t        j                  j                  k(  r!|j                  | j!                  |             nk|t        j                  j(                  k(  rN| j-                  ||      D ]9  }| j                  d	|z         }|s|j                  | j!                  |             ; | j-                  ||      D ]9  }| j                  d	|z         }|s|j                  | j!                  |             ; |j"                  r|st        |d         dd  \  }}|j$                  |k  r| j                  |j"                  |      }|s5| j                  j'                  d|||j$                  fz         | j-                  |j"                  |j$                        }|D ]_  }| j                  d	|z   |      }|s||t        |      d  z   }| j                  |      }| j!                  |      || j!                  |      <   a  |	j3                          |j                  |       t5        |      ||fS )Nr   s   scanning pathss   paths)unittotal)itemr   s   copied to %s from %s@%d
s   gone from %d
r9   s    unknown path in revision %d: %s
   M   Rs   mark %s came from %s:%d
)r&  rE   r   r8  r   makeprogressr   r<   	enumerateupdate
getrelpathr  rJ   rM   r%  rK  recodera   rb   ri  r  r   
_iterfilesreplacerc   completelist)rd   r@   rq   r*  changedr$  r+  
new_modulerB   progressr4  rQ   ent	entrypathrZ   pmoduleprevnumra   
parentpathfromkindorootnrootchildren	childpathpkindcopyfrompath
copytopaths                              r"   r#  zsvn_source.expandpaths  s$   5#%%c]12.
F$$DKMM$++&77'' q{#e* ( 
 (. Z	MNA{cOOADO)-I??9f5Dsxx---DKK	23(( $,GAJ#7#; ##g- $0A0A7 K$0 -1A1ABC 26]1Kt{{9-./#2B2BBC#+GAJ#7#; $t^i7
??9gwGsxx555KKI 67!6!66&,,T2E JJt,E#ug>H%- @	$-$5$5eU$C	$(OOD94Dg$N	$#KKI(>?	@ GGMM<~M ...::% ::%' (0
';AB'?$GW OOIwHE 6 66DKK	$:;#(("7"77 *.')J DI(,y8H(II( 'DKK	,B CD
 "&v!> <I $y0@ AI DKK	$:;< (( $,GAJ#7#; ##g-#s/@/@'J#0\3+;+;<=  ??3+<+<c>N>NO!) MI $y0@' JI$ !%	#l2C2E(F!FJ!%!<J6:kk)6LF4;;z23MiZ	Mx 	wWw//r!   c                     |k  r|c}d  _          fd} j                  j                  t        d       j                  |fz         	 d }d} j                   j                  g|      }	 |D ]^  }|\  }}	}
}}|	 j                  k  rd} nC|s( j                  j                  d|	z         |xs |	dk(  }H |||	|
||      \  }}|r|}|s^ n |j                          |sp|rm|j                  s`	  j                  |j                        }|dkD  r> j                   j                  |dz
        }|r|j                  j                  |       y y y y y y # |j                          w xY w# t        $ r Y y w xY w# t        j                   j"                  $ rS}|j$                  \  }}|t        j                   j&                  k(  r!t)        j*                  t        d      z         d }~ww xY w)	Nc                    j                   j                  d|t        |       fz         d}j                  |      }|j                  v s|k  rd|fS g }t        | j                               } | D 	cg c]%  \  }}	j                  j                  |      s"||	f' }
}}	|
r|
d   \  }}|j                  rd}|j                  j                  t        |      d z   }j                  ||j                        }|st        |      dd \  }}|j                  k\  rS|g}j                   j                  t        d      j                  ||fz         nj                   j                  d       g }| D ]*  \  }}j!                  |      |j#                  ||f       , t%        |      }j                   j'                  d	d
      rt)        |d         }|rj+                  |      }nd}|rj+                  |      }nd}	 j                  j-                  d      d   }|j.                  k(  rd}t3        |t5        j6                  |d      ||||      }|j                  |<   ||j8                  fj:                  |<   j<                  r0j<                  j8                  s|gj<                  j8                  dd |_        ||fS c c}	}w # t0        $ r d}Y w xY w)zlReturn the parsed commit object or None, and True if
            the revision is a branch root.
            s!   parsing revision %d (%d changes)
FNrh   Tr   s$   found parent of branch %s at %d: %s
s)   no copyfrom path, don't know what to do.
r   s   localtimezoner   r!   r9   s   %Y-%m-%d %H:%M:%S %1%2)rn   r,   descr*  r  r@   )r   ri  r<   r  r   r  rj   r   r?   ra   r   rb   rE   r   r  r   r{  r   r1   
configboolmakedatetimestampr|  r>   r   
IndexErrorcommitr
   r+   r*  rq   
child_cset)rm   rB   rn   r,   ro   branchedr@   r*  re   r/  
root_pathsrQ   r  rj  previdr   r  rq   logr  csetrd   	to_revnums                        r"   parselogentryz2svn_source._fetch_revisions.<locals>.parselogentry\  s    GGMM53z?+,
 H**V$C dll"fy&8X~%G  
 0 0 23J#-1a1G1G1JAJ  &rN	c$$#H!//$++c$ik2JJG![[#2B2BCF).6v.>qr.B+
G"dmm3'-hG GGLL !"J K#';;"D!E
 GGMM"OPE' *	c??4(0dC[)*
  %Dww!!*.>?(a1kk'*V,**404T^^+!F %%d,EFD !%DLL  %dll3DJJsOt'>'>.1U''*"DO>!C\  s   5#KK/K KKs-   fetching revision log for "%s" from %d to %d
FTs   revision %d has no entries
r   r   s   svn: branch has no revision %s)r  r   r  r   r   rI  r   ri  r   r*  rB   r@   r   r   r3   rJ   rM   rO   r   SVN_ERR_FS_NO_SUCH_REVISIONr   r   )rd   from_revnumr  r  	firstcsetlastonbranchrN  r   rq   rB   rn   r,   ro   r  firstrevnumr   xxx_todo_changemer   nums   ` `                r"   r9  zsvn_source._fetch_revisionsV  s   "%."KU	"n 	?@{{K34	

,	I L\\4;;-iHF# E;@8E664-'+ &E&NO (4'Bv{ )6vvtW*&D, $(	##& Ii6G6G"&++imm"<K"Q!%T[[+/!J!%--44V< " ' 7HI<  ' xx++ 	+00KT3chh:::kk789D  	sW   "E< 2AE E  E< 6AE- E**E< -	E96E< 8E99E< <G,AG''G,c                    || j                   v ry	 t        |      dd  \  }}| j                  |k7  r"|| _        | j                  | j                         t	               }t
        j                  j                  | j                  |||      }|j                         }|j                          t        |t              r|d   }d|v xr dxs d}d|v xr dxs |}|dk(  r!d	}|j#                  |      r|t%        |      d  }||fS # t
        j                  j                  $ rM}	t
        j                  j                  t
        j                  j                  f}
|	j                   |
v rY d }	~	y d }	~	ww xY w)
Nr   r   rh      svn:executable   xr!   s   svn:special   ls   link )r$  rE   r   r8  stringiorJ   rz   get_filegetvaluer   
isinstancer  rM   rO   SVN_ERR_FS_NOT_FOUNDSVN_ERR_RA_DAV_PATH_NOT_FOUNDapr_errr?   r<   )rd   filer@   r  rB   ioinfor   moder/  notfoundlink_prefixs               r"   getfilezsvn_source.getfile  sI   4<<	!)#qr!2J{{j((dkk*B66??477D&"=D;;=D HHJ$%Bx%-74>3D"d*4<D 4<"K{+C,./Tz xx++ 	--66H yyH$!	s   CD   E*AE%$E%%E*c                 x   j                  d      t        j                  j                         }dj	                  | j
                  t              g      j                  d      }t        j                  j                  |t        |      d| j                  |      }rdz  fd|j                         D        S )z3Enumerate all files in path at revnum, recursively.r9   Tc              3   |   K   | ]3  \  }}|j                   t        j                  j                  k(  r|z    5 y wrW   )rZ   rJ   rM   r%  ).0re   r/  rQ   s      r"   	<genexpr>z(svn_source._iterfiles.<locals>.<genexpr>  s7      
1vv/// AX
s   9<)r   rJ   rM   Poolr   r   rH   rK   r
  r]   r   rj   )rd   rQ   rB   rp   r  r-  s    `    r"   r}  zsvn_source._iterfiles  s    zz$xx}}		4<<t56<<TB**--vf~tTXXtLDLD

 	
r!   c                 B   || j                   }|j                  |      r:|j                  d      t        |      d  }|j                  d      r|dd  S |dk(  r|S | j                  j                  dt        j                  |      t        j                  |      fz         y )Nr9   r   r!   s   %r is not under %r, ignoring
)r   r?   r  r<   r   ri  r   r  )rd   rQ   r   relatives       r"   r{  zsvn_source.getrelpath  s    >[[F ??6"{{4(V7H""4(|#S 	-%x'7'7'?@A	
 r!   c                    || j                  d      }|dz   |z   }	 t        j                  j                  | j                  |j	                  d      |      || j                         S S # || j                         w w xY w)Nr!   r9   )r8  rJ   rz   
check_pathr   )rd   rQ   rB   r   r   s        r"   r  zsvn_source._checkpath,  s}    s+JD=4'D	* 66$$TWWdjj.>G!j) "v!j) "s   9A+ +Bc                 V   g }|D ]E  }|j                  d      s| j                  dz   |z   }|j                  |j                  d             G | j                  ||||||g}	| j
                  j                  dd      st        |	 S t        |	      }
t        j                         }dt        j                  |      z  }t        j                  |      \  }}|j                  |
       	 |j                          t'        |      S # t        $ r t!        j"                  t%        d            w xY w)Nr9   r   s   svn.debugsvnlogs   %s debugsvnlogr   )r?   r   r   r   r   r   r  r   
encodeargsr   hgexecutable
shellquotepopen2r`  r   r|   r   r   r   r   )rd   rq   r   r   r   r   r   relpathsre   r   arghgexecmdstdinr   s                  r"   rI  zsvn_source._getlog8  s$     	+A<<%KK$&*OOAGGDM*	+
 LL"
 ww!!*.@A"D))%%'("5"5e"<< ,vC	KKM     	++1 	s   %D   (D(rW   )s	   splicemapr   )r4   r5   r6   rf   r   r  r  r   r   r0  r2  r6  r<  rB  rD  r]  rc  r  rB   r   r8  r#  r9  r  r}  r{  r  rI  __classcell__)r   s   @r"   r   r     s    AF'6!
Rh,& %,AhT
K(K,Zj0XN`B
.
*" #!*!r!   r   s   #!/bin/sh

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

%(rules)s

echo "Changing prohibited revision property" >&2
exit 1
c                 z    g }| D ]  \  }}|j                  d||fz          t        ddj                  |      iz  S )Ns>   if [ "$ACTION" = "%s" -a "$PROPNAME" = "%s" ]; then exit 0; fis   rules   
)r   pre_revprop_change_templater   )prop_actions_allowedrulesrc   propnames       r"   gen_pre_revprop_change_hookr  t  sV    E0 
# x 	!	

 '(EJJu4E)FFFr!   c                       e Zd 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y)svn_sinks   Committed revision (\d+).s   Repository UUID:\s*(\S+)c                 \    | j                   r t        j                  | j                          y y rW   )r   rP   chdirr   s    r"   prerunzsvn_sink.prerun  s    77HHTWW r!   c                 \    | j                   r t        j                  | j                         y y rW   )r   rP   r  cwdr   s    r"   postrunzsvn_sink.postrun  s    77HHTXX r!   c                 X    t         j                  j                  | j                  d|      S )Nr   rP   rQ   r   r   )rd   r   s     r"   r   zsvn_sink.join  s    ww||DGGWd33r!   c                 $    | j                  d      S )Nr_  r   r   s    r"   
revmapfilezsvn_sink.revmapfile  s    yy&&r!   c                 $    | j                  d      S )Ns   hg-authormapr  r   s    r"   
authorfilezsvn_sink.authorfile  s    yy))r!   c                 	   t        j                  dd       t        j                  dd       t        j                  | |||       t        j                  | |d       g | _        g | _        g | _        g | _        d | _	        t        j                         | _        d}t        j                  j                  t        j                  j!                  |dd            r7t        j                  j#                  |      | _	        | j%                  d       nt'        j(                  d	|      s!t        j                  j#                  |      }t        j                  j+                  t        j                  j-                  |            rt        j                  j/                  t        j                  j!                  |d
d            sX|j1                  t3        d      t        j                  j5                  |      z         t	        |d      j%                  d|       |}t7        j8                  |      }|j;                  d      sd|z   }d|z   }t        j                  j!                  t        j                         t        j                  j5                  |      dz         }|j1                  t3        d      t        j                  j5                  |      z         | j%                  d||       || _	        t=        j>                  | j                        | _         t=        j>                  | j                        | _!        tE        || j!                  d            | _#        t7        jH                  | j                        rt6        jJ                  | _&        nd | _&        |rg d}| jN                  jQ                  dd      r|jS                  d       t        j                  j!                  |dd      }tU        |d      }|jW                  tY        |             |j[                          t7        j\                  |dd       | j%                  d      }	| j^                  j)                  |	      ja                  d      jc                         | _2        y )Ns   svns
   subversion)debnames   svnadminFr   s   entriess   updates"   ^(file|http|https|svn|svn\+ssh)://r   s   fs-types!   initializing svn repository '%s'
s   creater9   s   file://s   -wcs#   initializing svn working copy '%s'
s   checkouts   hg-childmap))rv  s   svn:log)rG     hg:convert-branch)rG     hg:convert-revr      svn.dangerous-set-commit-dates)rv     svn:dater   s   pre-revprop-changes   wbTs   infor   )3r   	checktoolconverter_sinkrf   commandlinedeletesetexecdelexecr+  r   r   getcwdr  rP   rQ   isfiler   ro  run0r>  searchrR   dirnamer   statusr   basenamer   rS   r?   vfsmodr	   r   wopenermapfilechildmap	checkexecisexecis_execr   r  r   r   r`  r  r   setflagsuuid_regroupr   rC   )
rd   r   r   rQ   createdwcpathr  hookrt   outputs
             r"   rf   zsvn_sink.__init__  s5   7m<b(D9T2v.??$77>>"'',,tWjABgg&&t,DGIIi 99CTJww''-77==!6777>>T5*= 		CD gg..t45 $B499)TJ"&==.D??40#d{%,DWW\\!277#3#3D#9F#BF II9:''""6*+ IIk40DGjj)zz$''*DIIn$=>>>$''";;DLDL$  ww!!= %++,?@77<<3HIDdE"BHH01EFGHHJMM$t,7#LL''/55a8>>@	r!   c                 V    t        j                  j                  | j                  g| S rW   r  )rd   namess     r"   wjoinzsvn_sink.wjoin  s    ww||DGG,e,,r!   c                    t               }| j                  ddd      }t        j                  j                  j                  |      }|j                  d      D ]  }|j                  D ]r  }|j                  |j                  k7  s|j                  dk7  r,dj                  d |j                  D              }|j                  t        j                  |                |S )Ns   lsT)	recursivexmlr   r    c              3   h   K   | ]*  }|j                   |j                  k(  s|j                   , y wrW   )nodeType	TEXT_NODEr   )r  cs     r"   r  z$svn_sink.manifest.<locals>.<genexpr>  s(       AJJ!++4MAFFs   22)r&  r  r	  domminidomparseStringgetElementsByTagName
childNodesr  ELEMENT_NODEtagNamer   rK  r   
unitolocal)rd   mr  docr/  r.  r   s          r"   manifestzsvn_sink.manifest  s    
 E5Dd;ggoo))&1))'2 	A\\ ::/1993Fww $%LL  h))$/0	 r!   c                    d|v r| j                   j                  ||       y 	 t        j                  j	                  | j                  |            rt        j                  |       | j                  rPd}t        j                  j                  | j                  |            r | j                  | j                  |            }| j                   j                  ||       | j                  rjr d|vr;| j                  j                  |       nd|v r| j                  j                  |       t        j                  | j                  |      dd|v        y y # t        $ r Y w xY w)Nr  Fr  )r  symlinkrP   rQ   islinkr  unlinkOSErrorr  r   r`  r  r   r  r   r  )rd   filenameflagsr   wasexecs        r"   putfilezsvn_sink.putfile  s   5=LL  x077>>$**X"67IIh' ||  77>>$**X"67"ll4::h+?@GLLx.||5(++H5u}++H5djj2E45=I   s   AE 	E! E!c                    | j                  |      }t        j                  j                  |      }|rwt	        j
                  dt        j                  j                  |            \  }}t        j                  |       t        j                  |       t        j                  ||       	 | j                  d||       | j                  j                  |       |r-	 t        j                  |       t        j                  |       y y # t        $ r Y #w xY w# | j                  j                  |       |r=	 t        j                  |       n# t        $ r Y nw xY wt        j                  |       w w xY w)Ns   hg-copy-)prefixdirs   copy)r  rP   rQ   lexistsr   mkstempr  r   r  renamer  r  rK  r  )rd   rQ  rS  wdestr   fdtempnames          r"   	_copyfilezsvn_sink._copyfile  s&    

4 '#++"(>LB HHRLIIhIIeX&		+IIgvt,MMd#IIe$ 		(E*   	 MMd#IIe$ 		(E* sB   +D D	 		DDE47EE4	EE4EE4c                    t               }|D ]u  t        j                  j                  | j	                              r|j                         t              t        fdd      D ]  |j                  d          w |S )Nc                  *     j                  dd      S )Nr9   r   )r   )r5  r4  s   r"   r   z"svn_sink.dirs_of.<locals>.<lambda>5  s    !''$1"5 r!   rh   )r&  rP   rQ   rR   r  rK  r<   iter)rd   r,  dirsr5  r4  s      @@r"   dirs_ofzsvn_sink.dirs_of/  st    u 	 Aww}}TZZ]+AA5r:  2A 		  r!   c                     t        | j                  |            D cg c]  }|| j                  vs| }}|r0| j                  j                  |       | j	                  |ddd       |S c c}w )N   addT)non_recursivequiet)r  r1  r  rz  xargs)rd   r,  dadd_dirss       r"   r8  zsvn_sink.add_dirs9  sj    dll512
at}}6LA
 
 MM  *JJxt4JH
s
   A+A+c                     |D cg c]  }|| j                   vs| }}|r/| j                   j                  |       | j                  |dd       |S c c}w )Nr3  T)r5  )r  rz  r6  )rd   r,  r5  s      r"   	add_fileszsvn_sink.add_filesB  sQ    !<qQdmm%;<<MM  'JJufDJ1	 =s
   AAc                 "    || j                   |<   y rW   )r  )rd   parentchilds      r"   addchildzsvn_sink.addchildI  s     %fr!   c                 $    d| j                   |fz  S )Ns	   svn:%s@%s)rC   rf  s     r"   r  zsvn_sink.revidL  s    tyy#...r!   c	                 	   |D ]"  }		 | j                  | j                  |	         c S  |D ]p  \  }
}|j                  |
|      \  }}|| j                  j                  |
       9| j                  |
||       |
|v sQ| j                  j                  ||
   |
g       r |r=| j                  j                  t        | j                  j                  |                   |D 
cg c]  }
|
d   	 }}
t        | j                        }t        |      }|j                  | j                  |j                  |                   | j                  r-| j                  D ]  \  }}| j!                  ||        g | _        | j                  rO| j#                  | j                  d       | j                  D ]  }
| j                  j%                  |
        g | _        |j                  | j'                  |j                  |                   | j(                  r$| j#                  | j(                  dd       g | _        | j*                  r%| j#                  | j*                  ddd       g | _        t-        j.                  d      \  }}t1        j2                  |d	      }|j5                  t7        j8                  |j:                               |j=                          	 | j?                  d
tA        jB                  |jD                        |d      }	 | jF                  jI                  |      jK                  d      }|jZ                  r | j]                  dd|jZ                  d|       |j^                  r/|j^                  dk7  r | j]                  dd|j^                  d|       | jP                  ja                  dd      rEtc        jd                  |jf                        }|d   df}| j]                  ddti        |      d|       |D ]  }	| jk                  |	|        | j                  |      t1        jN                  |       S # t        $ r Y <w xY wc c}
w # tL        $ r |s |r|d   ndcY t1        jN                  |       S | jP                  jS                  tU        d             | jP                  jS                  |       tW        jX                  tU        d            w xY w# t1        jN                  |       w xY w)Nr   s   deletes   propdelr  s   propset   *s   hg-convert-)r$  wbs   commits   utf-8)usernamer  r   r   s   Nones   unexpected svn output:
s   unable to cope with svn outputr  T)revproprevisions   defaultr  r   r  r  )6r  r  KeyErrorr  r  r   r"  r+  extendr  r  
differencer&  	frozensetrz  r8  r,  r6  remover:  r  r  r   r'  rP   fdopenr`  r   ra  r  r   r  r   	shortuserrn   	commit_rer  r  r   r  r   r   r   r   r   r@   runr  r  r
   r0   r,   r-   r>  )rd   r,  r+  r*  r  rQ  r  r)  cleanp2r<  r5  rs   r   r  r-  r(   r7  r*  messagefilert   r  r@   r,   s                          r"   	putcommitzsvn_sink.putcommitO  s5     	Fzz$--"788	  	7DAq1-JD$|""1%Qd+;KK&&q	1~6	7 KKvdmm&>&>u&EFG$%!1%%dkk"% t}}U%5%5g%>?@;; %1q!$%DK;;JJt{{I.[[ ($$Q'(DKt~~e&6&6w&?@A<<JJt||Z1BCDL<<JJt||Z1BDIDL"**.AKYYr4 
!!&++./

4	#YY#--fmm< !	  FHnn++F399!< zz%JJ     }}*!<(MM     ww!!=  ))&++6Q| !$'     " +fc*+::c?IIk"y   &F " H)071:g=R IIk"Q Q:;<V$kk!$E"FGGHV IIk"sI   P3 Q2S *Q ,C1S 3	Q ?Q SS 3ASS S+c                 L    | j                   j                  t        d             y)Ns/   writing Subversion tags is not yet implemented
r   )r   r   r   )rd   r  s     r"   puttagszsvn_sink.puttags  s    QJKLr!   c                      yr"  r    rf  s     r"   hascommitfrommapzsvn_sink.hascommitfrommap  s     r!   c                 b    || j                   v ryt        j                  t        d      |z        )NTs_   splice map revision %s not found in subversion child map (revision lookups are not implemented))r  r   r   r   rf  s     r"   hascommitforsplicemapzsvn_sink.hascommitforsplicemap  s<     $--kkD 	
 	
r!   N)r4   r5   r6   r>  compileMrM  r  r  r  r   r  r  rf   r  propertycacher  r"  r,  r1  r8  r:  r>  r  rQ  rS  rU  rW  r    r!   r"   r  r    s    

8"$$?Ibjj5rtt<G4'*HAT-  .J8+0&/b#H

r!   r  r   )Kr   r   rP   rk   r>  xml.dom.minidomr	  mercurial.i18nr   mercurial.pycompatr   	mercurialr   r   r   r   r	   r  mercurial.utilsr
   r   r   r
  r   r  rZ  r   rG   r  r  r  converter_sourcer   r  r  r  r   r   rJ   
svn.clientsvn.coresvn.ra	svn.deltar   warningsfilterwarningsDeprecationWarningrM   rO   ImportErrorr   r#   r)   r-   r1   r}   r3   rE   rH   rU   r]   r_   r   r   r   r  r   r   r   r   r   r   r  r  r  r    r!   r"   <module>ri     s  
   	  	   #   ==""		  	&&** 

,, 
..  	 H.@ HH   
C"4@H	i 	6100  ,^&   >%d %V:4 KxT!! T!n 
GF
~{ F
)  
Cs   ,A	F/ /F98F9