
    6hZ                    v   S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJrJrJrJrJr  S SKJrJrJr  SSKJr  \R0                  r\R2                  r\R4                  r\R6                  r\R8                  r\R:                  r\R<                  r\R>                  r\R@                  r \RB                  r!\RD                  r"\RF                  r#\RH                  r$\RJ                  r% S SK&r&S SK'r&S SK(r&S SK)r&S SK*r&SSKJ+r+  S SK,r,\,RZ                  " S	S
\.S9  \&R^                  R`                    Sq2S r3S r4S r5S r6 " S S\75      r8S r9S r:S r;S r< " S S5      r=   S(S jr>S r? " S S5      r@ " S S\A5      rBS rCS rD\D\D\CS .rES! rF " S" S#\5      rGS$rHS% rI " S& S'\\5      rJg! \1 a    Sr& Nf = f))    )annotationsN)_)encodingerrorpycompatutilvfs)dateutilprocutil
stringutil   )common)	transportignorezsvn.core)modulecategoryc                    [         b  g [        R                  (       a  Sq OK[        R                  " 5          [
        R                  " [
        R                  5      =(       d    Sq S S S 5        [        R                  " [         5      R                  q [         [        R                  " S5      R                  :H  qg ! , (       d  f       NZ= f)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#   O   s~     
 !++FNN;K|J "z*//J#v}}W'='B'BB "!s   .B88
Cc                d    [         (       a  U $ U R                  [        5      R                  S5      $ )Nr   )r   decoder   encodess    r"   fs2svnr)   `   s'    xx
#**733r!   c                0    [         R                  " U S5      $ )Ns   %Y-%m-%dT%H:%M:%S.000000Z)r
   datestr)dates    r"   formatsvndater-   g   s    D">??r!   c                >    [         R                  " U S S S-   S/5      $ )N   s    UTCs   %Y-%m-%dT%H:%M:%S)r
   	parsedater'   s    r"   parsesvndater1   k   s&     afw.1E0FGGr!   c                      \ rS rSrSrg)SvnPathNotFoundr   r    N)__name__
__module____qualname____firstlineno____static_attributes__r    r!   r"   r3   r3   r   s    r!   r3   c                   U R                  SS5      nSn[        U5      S:  a  [        US   5      nUS   R                  SS5      nSnSn[        U5      S:  a)  US   R	                  S5      (       a  US   SS nSUS   -   nX4U4$ )	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"   revsplitrH   v   s     JJtQEF
5zA~U1X!HNN4#ED
C
5zA~%(--g66Qx|U1Xofr!   c                .    [         R                  U S5      $ )Ns   !$&'()*+,-./:=@_~)urlreqquoter'   s    r"   rK   rK      s     <</00r!   c                P    [         R                  R                  [         R                  R	                  [        U 5      5      5      $ ! [         R                  R                   a     Of = f[        R                  R                  U 5      (       az  [        R                  R                  [        R                  " U 5      5      n [        R                  (       a  S[        R                  " U 5      -   n [        U 5      n S[        U 5      -  n [         R                  R	                  U 5      $ )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`.
r<   s	   file://%s)svnclienturl_from_pathcoresvn_path_canonicalizer)   SubversionExceptionospathisdirnormpathr   abspathr   r   rK   )rT   s    r"   geturlrX      s    zz''HH**6$<8
 	
 88''  
ww}}TwwT 23$----D d|eDk)88))$//s   AA A('A(c                    [         R                  R                  5       n[         R                  R                  Ul        XR
                  l        U$ N)rM   rP   svn_opt_revision_tsvn_opt_revision_numberkindvaluenumber)r_   optrevs     r"   r`   r`      s4    XX((*F((22FK LLMr!   c                      \ rS rSrS rSrg)changedpath   c                j    UR                   U l         UR                  U l        UR                  U l        g rZ   )copyfrom_pathcopyfrom_revaction)selfps     r"   __init__changedpath.__init__   s%    __NNhhr!   )rg   re   rf   N)r5   r6   r7   r8   rj   r9   r    r!   r"   rb   rb      s    r!   rb   c           
       ^ ^ SmU U4S jn [         R                  " US9n	[        R                  R	                  U	R                  UUUUUUU5        [
        R                  " S T T5        T R                  5         [        R                  " S5        g ! [         a    [
        R                  " S T T5         NK[         a6  n
[
        R                  " [        R                  " U
5      T T5         S n
A
NS n
A
ff = f)Nc                   > 0 nU b&  U R                  5        H  u  px[        U5      Xg'   M     [        R                  " XaX#U4T	T
5        g rZ   )itemsrb   pickledump)
orig_pathsrE   authorr,   messagepoolpathskvfpprotocols            r"   receiverget_log_child.<locals>.receiver   sE    !"((*&q> +UF':BIr!   urlr   )r   SvnRaTransportrM   raget_logrp   rq   OSError	Exceptionr   forcebytestrflushrS   _exit)ry   r~   rv   startendlimitdiscover_changed_pathsstrict_node_historyr{   tinstrz   s   `          @r"   get_log_childr      s     HJ( $$-DD"		
  	D"h'HHJ HHQK  (D"h' AJ++D12x@@As   AB "C34	C3=,C..C3c                    [         R                  " 5          [        c  [        R                  " [        S5      5      e[        U R                  R                  5       5      n[        U R                  /UQ76   SSS5        g! , (       d  f       g= f)zaFetch 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   rM   r   Abortr   
decodeargsfinreadr   fout)uioptsargss      r"   debugsvnlogr      sb     
			;++JK  "&&++-(bgg%% 
		s   A A??
Bc                  *    \ rS rSrSrS rS rS rSrg)	logstream   z$Interruptible revision log iterator.c                    Xl         g rZ   _stdout)rh   stdouts     r"   rj   logstream.__init__  s    r!   c              #  8  #      [         R                  " U R                  5      n Uu  p#pEnUv   M.  ! [         a     [        R
                  " [        S5      5      ef = f! [        [        4 a(    Uc   g [        R
                  " [        S5      U-  5      ef = f7f)N>   Mercurial failed to run itself, check hg executable is in PATHs   log stream exception '%s')	rp   loadr   EOFErrorr   r   r   	TypeError
ValueError)rh   entryrr   rE   rs   r,   rt   s          r"   __iter__logstream.__iter__  s     DLL1K<A9
F'
 K!   kk5  z* K=kk!$@"AE"IJJKs6   B 2 A B*ABB2B4#BBc                j    U R                   (       a"  U R                   R                  5         S U l         g g rZ   )r   closerh   s    r"   r   logstream.close  s%    <<LL DL r!   r   N)	r5   r6   r7   r8   __doc__rj   r   r   r9   r    r!   r"   r   r      s    .& r!   r   c                  .    \ rS rSrSr   SS jrS rSrg)directlogstreami  zDirect 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           
        ^  U 4S jn[         R                  " US9n	[        R                  R	                  U	R                  UUUUUUU5        g )Nc                   > 0 nU b&  U R                  5        H  u  px[        U5      Xg'   M     T	R                  XaX#U45        g rZ   )ro   rb   append)
rr   rE   rs   r,   rt   ru   rv   rw   rx   rh   s
            r"   r{   *directlogstream.__init__.<locals>.receiver-  sA    E%&,,.DA*1~EH /KKg>?r!   r}   )r   r   rM   r   r   )
rh   r~   rv   r   r   r   r   r   r{   r   s
   `         r"   rj   directlogstream.__init__#  sG    	@ $$-DD"		
r!   c                    g rZ   r    r   s    r"   r   directlogstream.closeB  s    r!   r    Nr   TF)r5   r6   r7   r8   r   rj   r   r9   r    r!   r"   r   r     s    8 #!
>r!   r   c                    S HF  n[         R                  R                  [         R                  R                  X5      5      (       a  MF    g   g)N)s   locks   hookss   format   dbFT)rS   rT   existsjoin)r   rT   protoxs       r"   	filecheckr   I  s4    3ww~~bggll4344 4 r!   c                    [         R                  5       nUR                  [        R                  " SX!4-  5      S5      nUR                  5       nSU;   $ ! [        R                   aW  nUR                  S:w  a  U R                  [        S5      5         S nAgUR                  R                  5       n S nASU;   $ S nAf[         a     gf = f)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">)rJ   buildopeneropenr   strurlr   urlerr	httperrorcodewarnr   ry   r   )r   rT   r   openerrspdatar   s          r"   	httpcheckr   S  s    ##%kkOO6%FG
 xxz  2T99  99GG& ww||~ 2T99  s$   AA C)*B;B;;C
C)   https   https   filec                    UR                  SS5      u  p#US:X  a  [        R                  (       aF  US S S:X  a=  USS R                  5       (       a%  USS R	                  5       S:X  a  US S S-   USS  -   n UR                  [        5      n[        R                  U5      nSU;   a  U R                  [        S5      5        g
UR                  [        5      nUS:X  a  [        R"                  " U5      nO<US;   a6  [$        R&                  " U5      (       d  U R                  [        S5      5        g
[(        R+                  US 5      nSU;   a,  U" XU5      (       a  gUR-                  SS5      S   nSU;   a  M,  g
! [         a8    U R                  [        S	5      [        R                  " [        5      -  5         g
f = f! [         ax    Sn[        R                   " U5      n UR                  [        5         GN#! [         a9    U R                  [        S5      [        R                  " [        5      -  5          g
f = ff = f)Ns   ://r   r   r<         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                     g)NFr    )r   s    r"   <lambda>issvnurl.<locals>.<lambda>  s    er!   Tr   )rA   r   r   isalphalowerr%   r   UnicodeDecodeErrorr   r   sysbytesrJ   url2pathnamer&   r   r   rW   pconvertr   
isasciistrprotomapgetr>   )r   r~   r   rT   unicodepathchecks         r"   issvnurlr   s  s5   9ii*G""!H$1I%%''1IOO%0BQx%'$qr(2
"kk*5" !--k:K*k9@  %%j1D }}T"	$	$""4((GGC LL 34E
$,5!!{{4#A& $, } & O ''
3	4 @  ||C 
	KK
#! 	GGH ##J/	0 	sT   A5G  8E; 5G  G  ;?F=:G  <F==G   "I#G;;?H>:I=H>>Ic                     ^  \ rS rSrSU 4S jjrS rS rS rS rS r	S r
S	 rS
 rS rSS jrS rS rS rSS jrS rSS jrS rS rS rS rS rSS jrSS jr   SS jrSrU =r$ )
svn_sourcei  c                t  > [         T
U ]  XX4S9  [        5         UR                  S5      (       d  UR                  S5      (       d  [        R
                  R                  U5      (       aB  [        R
                  R                  [        R
                  R                  US5      5      (       d'  [        X5      (       d  [        [        S5      U-  5      e[        c#  [        [        S5      [        S5      S-  -   5      e [        R                  R                  [        R                  R                  4nUS	:  a&  [        [        S
5      U-  [        S5      S-  -   5      e 0 U l        S n UR%                  S5      nUS:  a  ['        X7S-   S  5      nUS U n[+        U5      U l        SU l         [0        R2                  " 5          [4        R6                  " U R,                  S9U l        U R4                  R8                  U l        U R4                  R:                  U l        [        R8                  R?                  U R8                  5      U l         [B        RE                  U R,                  [G        U R@                  5      S  5      U l$        S U l%        U RH                  U l&        0 U l'        0 U l(        [        R8                  RS                  U R8                  5      U l*        S S S 5        U(       a=  [G        U5      S:  a  [\        R^                  " [        S5      5      e ['        US   5      nU R`                  Rc                  SS5      n	U	c  Sn	U	Re                  S5      U l3        U R`                  Rc                  SS5      U l4         ['        U Rh                  5      U l4        U Rh                  S:  a  SU l4         [0        R2                  " 5          U Rk                  U RH                  U5      U l6        S S S 5        U Rl                  (       d,  [\        R^                  " [        S5      U RH                  -  5      eU Rq                  U Rl                  5      U l9        SU l:        [        R
                  R                  [        R
                  R                  US5      5      (       a  X0l;        OS U l;        S U l<        g ! [          a$    [        [        S5      [        S5      S-  -   5      ef = f! [(         a     GNSf = f! , (       d  f       GN= f! [        R                  RV                   a    URY                  5         S[        R                  R                  [        R                  R                  [        R                  RZ                  4-  n[        [        S5      U R,                  U4-  5      ef = f! [(         a&    [\        R^                  " [        S5      US   -  5      ef = f! [(         a-    [\        R^                  " [        S5      U Rh                  -  5      ef = f! , (       d  f       GN1= f! [n         a    S U l6         GNHf = f) 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 requiredr;   r   r   s   UTF-8r}   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   trunkr<   s   svn.startrevs(   svn: start revision %s is not an integer   no revision found in module %sNNs   .svn/entries)=superrj   r#   rB   rS   rT   r   r   r   NoRepor   rM   MissingToolrP   SVN_VER_MAJORSVN_VER_MINORAttributeErrorlastrevsrfindr@   r   rX   r~   r   r   r   r   r   r   rN   ctxget_repos_rootbaseurlrJ   unquoter?   r   
prevmodule
rootmodulecommitsrv   get_uuidrF   rR   	tracebackSVN_VER_MICROr   r   r   configstrip	trunknamestartrevlatestheadr3   rE   last_changed_changescachewc	convertfp)rh   r   repotyper~   r   versionr  at
svnversiontrunkcfg	__class__s             r"   rj   svn_source.__init__  s   s6NN9%%~~m,,s##GGNN277<<W#=>>  BCcI  ;a LM CDG\\] ^ ^	hh,,chh.D.DDG!1 	
 89<PPQ   $ 	 4BQwSa]+#2h #; 	##%!*!9!9dhh!G..++>>00"vv44TWW= %nnTXXc$,,6G6I-JK"&"&++!
FFOODGG4	 &8 4y1}kk9 T!W 77>>*l;H!-z?C	.DM}}q  !	##% KKV<	 & yy++34t{{B  !KK		2)77>>"'',,sO<==GDGE  	) 458LL	M 	&  		
 &% xx++ 	LLN$&&&&&&( J
 , 88Z(	) 	2  kk;<tAwF   	++=>N 	 &% 	DI	s   >A R* ),S -S> DS,S> V# =1W /X" "X&X" *.S
S)(S),
S;6S> ;S> >B"V #0W7X
XX" X" "X76X7c                l    [         R                  " 5       U l        U R                  R                  5         g rZ   )r   r   	__enter__r   s    r"   beforesvn_source.beforeS  s%    !//1$$&r!   c                >    U R                   R                  S S S 5        g rZ   )r   __exit__r   s    r"   aftersvn_source.afterW  s    ##D$5r!   c                z    0 nU H-  n[        U5      u  pEnUR                  XV5      nXg:  d  M)  XbU'   M/     X l        g rZ   )rH   
setdefaultr   )rh   revmapr   revidrF   r   rE   
lastrevnums           r"   	setrevmapsvn_source.setrevmapZ  sD    E#+E? D&!,,V<J"#) 	 
 !r!   c                     [         R                  R                  U R                  R	                  S5      S-   [        U5      -   USU R                  5        g! [         R                  R                   a     gf = f)Nr<   FT)	rM   rN   lsr~   rstriprK   r   rP   rR   )rh   rT   r`   s      r"   r   svn_source.existsc  sc    		JJMM%,uT{:	 xx++ 		s   AA A87A8c                  ^  U 4S jnU 4S jn[        T R                  5      nSnU" SU5      nU" SU5      T l        U" SU5      nU(       a  T R                  =(       d    SnT =R                  SU-   -  sl        T R	                  T R                  T R                  5      T l        T R
                  (       d,  [        R                  " [        S5      T R                  -  5      eT R
                  /T l	        T R                  b  S	UT R                  =(       d    S4-  T l        U(       Ga(  T R                  R                  S5      n[        R                  R                  US-   [        U5      -   US
T R                   5      n[#        U5       H  n	SXFU	4-  n
U" U
T R                  5      (       d  M$  T R	                  U
T R                  5      nU(       d)  T R$                  R'                  [        S5      U	-  5        Mp  T R$                  R'                  [        S5      U	T R)                  U5      4-  5        T R                  R+                  U5        M     T R,                  (       a  T R                  (       a  [/        T R                  5      S:  a  [        R                  " [        S5      5      eT R)                  T R                  S   5      nUT R,                  :  a,  [        R                  " [        S5      T R,                  -  5      eT R                  $ )Nc                `   > TR                  X5      nU[        R                  R                  :H  $ rZ   )
_checkpathrM   rP   svn_node_dir)rT   rE   r]   rh   s      r"   rU   "svn_source.getheads.<locals>.isdirp  s&    ??40D3880000r!   c                  > TR                   R                  SSU -   5      nUb  UR                  5       S:X  a  g U=(       d    U R                  S5      nTR                  X15      (       dR  TR                  R                  U5      (       a  U S:X  a  g U(       a#  [        R                  " [        S5      X4-  5      eg TR                   R                  [        S5      U [        R                  " U5      4-  5        U$ )Nr   s   svn.r!   r<   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   rC   cfgpathrT   rh   s       r"   
getcfgpath'svn_source.getheads.<locals>.getcfgpatht  s    ggnnZ4@G"w}}#'=Ot**40D;;t));;''--$(2B++CD,'  GGLL%&$0@0@0F)GG Kr!   r!   r   s   tagss   branchesr<   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   headsr~   r   rM   rN   r  rK   r   sortedr   r(  rE   r   r   r?   )rh   rU   r+  rC   	oldmoduletrunkbranchesrpathbranchnamesbranchr   brevidrE   s   `            r"   getheadssvn_source.getheadso  sn   	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 !-$	V'DDVT%6%67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                j   U R                   U   u  p40 nU(       a  U R                  XU5      u  o`l        nU(       d  U(       d  [        U5      u  pxn	[        R
                  R                  U R                  [        U5      -   [        U	5      SU R                  5      n
U
R                  5        VVs/ s H1  u  pUR                  [        R                  R                  :X  d  M/  UPM3     nnn[        5       U l        WR!                  5         ["        R$                  " Xa/['        U5      -  5      nXe4$ s  snnf NT)rv   expandpathsremovedrH   rM   rN   r  r   rK   r`   r   ro   r]   rP   svn_node_filesetsortr   ziplistr?   )rh   rC   fullrv   parentscopiesfilesrF   r   rE   entriesnes                r"   _getchangessvn_source._getchanges  s    ::c?*.*:*:3w*O'E<w#+C= D&jjmmuV},fVndDHHG
 $MMO+DA66SXX333 +  
 5DL

  E
(:;s   /.D/!D/c                    U R                   S   U:X  a  U(       d  U R                   S   u  p4O U R                  X5      u  p4U R                  U	 X4[        5       4$ )Nr   r   )r  rH  rv   r>  )rh   rC   rA  rD  rC  s        r"   
getchangessvn_source.getchanges  sY    a C' #003OUF #..s9OU

3su%%r!   c                r    U R                  US5      u  p4XU44U l        U Vs/ s H  oUS   PM	     sn$ s  snf )NFr   )rH  r  )rh   rC   irD  rC  fs         r"   getchangedfilessvn_source.getchangedfiles  s?    **36!6?3#$e!e$$$s   4c                v   XR                   ;  a  [        U5      u  p#nX0l        U R                  U5        U R                  R                  US5      nXE:  a  US-   nU R                  XE5        XR                   ;  a"  [        R                  " [        S5      U-  5      eU R                   U   nU R                   U	 U$ )Nr   r   s   svn: revision %s not found)
r   rH   r   reparentr   r   _fetch_revisionsr   r   r   )rh   rC   rF   r   rE   stop	revcommits          r"   	getcommitsvn_source.getcommit  s    ll"#+C= D& KMM&! ==$$VQ/D}z!!&/,,&kk!$A"BV"KLLLL%	LLr!   c                    [         R                  " SU5      (       d#  [        R                  " [	        S5      X!4-  5      eg)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   )rh   revstrmapnames      r"   checkrevformatsvn_source.checkrevformat  sI    xx$ 	
 
 ++CD#$ 
r!   c                l    [        U R                  R                  SS5      S   5      U R                  -
  $ )Nr;   r   )r@   r  r>   r   r   s    r"   
numcommitssvn_source.numcommits  s,    499##D!,Q/04==@@r!   c           	        0 nU R                   c  U$ / nU R                   n[        R                  R                  U R                  5      nU R	                  U R                   /X@R
                  5      n U GH  nUu  pxpnU(       d  / nUR                  5        VVs/ s H1  u  pUR                  (       d  M  UR                  UR                  U4PM3     nnnUR                  SS9  UnU(       a  US   S   U:X  a  UR                  5       S   nU Hv  u  nnnUR                  US-   5      (       d  M"  U H:  nUS   R                  U5      (       d  M  UUS   [        U5      S  -   nUU/US S&   M`     UR                  UUU/5        Mx     UR                  5        VVs0 s H6  u  pUR                  S:X  d  M  UR                  (       d  M*  XR                  _M8     nnn[        5       nU HY  nU HP  u  nnnUR                  US-   5      (       a  UR                  UU   S-   5      (       a  M>  UR!                  U5          MW     M[     U H>  nU Vs/ s H.  nUS   U:w  d  M  US   R                  US-   5      (       a  M,  UPM0     nnM@     / nU Hx  u  nnnUR#                  S5      S   nUR                  U5      (       a  UR                  UUU/5        MG  UU;   a  MO   U R%                  UU5      nU(       a  UU;  a  UUU'   Mv  Mx  Mz     UnUnGM     UR)                  5         U$ s  snnf s  snnf s  snf ! [&         a     M  f = f! UR)                  5         f = f)NT)reverserm   r   r   r<      A)r-  rM   r   get_latest_revnum_getlogr   ro   re   rf   r?  poprB   r?   r   rg   r>  addrA   r  r3   r   )rh   r-  pendingstagspathr   streamr   	origpathsrE   rs   r,   rt   ri   rG  rC  srctagspathsource	sourcerevdesttagtagpathaddedsbadrootsdestrootbadroot	renamingstagnametagids                               r"   gettagssvn_source.gettags  sd   99K 99((1tyyk5--@S	;@8	6  "I !* 1 1 9Q__anna8 1   D)&fRjmx7"(**,q/K/5+FIt??8d?;; 'q6,,T22&,s1vc$ik/B&BG'.	&:CG!	  ( !D(AB 06( !* 1 1xx4' ',-OO 'A& 1  
 5 &H3;/	4#$tO   #..vh/?$/FGG$ X. 4< !'  (G "* !)AQ47?  !"!$ ? !)   H  ( 	/7+FIt"jj.r2G((55!((&)W)EF $ 	 $FI > WD%8,1DM &95 08& %&a  d LLN_>  , + 
  LLNs   1(M L"4L"A:M AM L(4L(L(A5M L.L.;L.AM $L3?M "M 3
M=M  MM Mc           	     n   U R                   (       d  g U R                  c:  [        [        R                  R                  U R                   SS5      S5      U l        U R                  R                  [        R                  " SX R                  U5      4-  5      5        U R                  R                  5         g )Nr   	   hg-shamapabs   %s %d
)r  r  r   rS   rT   r   writer   tonativeeolrE   r   )rh   rC   destrevs      r"   	convertedsvn_source.converted  s    ww>>!!TWWg|<dDN 	Z7KK4D*EEF	
 	r!   c                L    SU R                   U=(       d    U R                  U4-  $ )Ns   svn:%s%s@%d)rF   r   )rh   rE   r   s      r"   r  svn_source.revid  s!    F,Adkk6 JJJr!   c                <    [        UR                  S5      S   5      $ )Nr;   rm   )r@   rA   rh   rC   s     r"   rE   svn_source.revnum  s    399T?2&''r!   c                V  ^  SU 4S jjnUR                  T R                  5      (       d  T R                  R                  SU-  5        gUc)  [        R
                  R                  T R
                  5      n T R                  S5      n[        R
                  R                  T R
                  UR                  S5      U5      nT R                  U5        U(       d  [        [        S5      X4-  5      eU" XUR                  5      u  pgUc,  U" X5      u  pgUc  T R                  R                  SU-  5        gUR                  T R                  5      (       d  T R                  R                  SU-  5        gT R                  Xg5      $ ! [        R                  R                   a    Sn Nf = f)	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                  > TR                  U /X=(       d    S5      n U H  nUu  pVpxn	Uc	  U(       a    OUb  Xb::  a    OxU Hn  n
U R                  U
5      (       a  XZ   R                  (       d  M.  XZ   R                  U [        U
5      S  -   nTR                  R                  SXU4-  5        Un   M     M     W(       d  S nWU 4UR                  5         $ ! UR                  5         f = f)Nr   s#   branch renamed from %s to %s at %d
)rg  rB   re   r?   r   debugr   )rT   r   rU  rl  r   rv   rE   rs   r,   rt   ri   newpathrh   s               r"   findchanges&svn_source.latest.<locals>.findchanges  s    \\4&%;F#E;@8E6| 'FN"#q119O9O$"'("8"84A>"IC#f56  ' # $& !Ft|s   B%C C's   ignoring foreign branch %r
r!   r<   s   %s not found up to revision %ds   ignoring empty branch %r
rZ   )rB   r   r   r  rM   r   rf  rS  statr   rP   rR   r3   r   created_revr  )rh   rT   rU  r  r   direntrE   realpaths   `       r"   r  svn_source.latest  s]   	8 t//GGMM9D@A<66++DGG4D	s+JVV[[$**T*:DAFMM*% !34|C  't63E3EF>  +46F~;hFG""4??33GGMM9HDEzz&++7 xx++ 	F	s   6AF  F('F(c                   U R                   U:X  a  U$ U R                  [        U5      -   nU R                   nUc  SnU R                  R	                  SU-  5        [
        R                  R                  U R                  U5        Xl         U$ )z:Reparent the svn transport and return the previous parent.r!   s   reparent to %s
)r   r   rK   r   r  rM   r   rS  )rh   r   svnurlr   s       r"   rS  svn_source.reparent  sp    ??f$Mf-__
J)F23( r!   c                   [        5       [        5       pT0 n[        U5      SS  u  pxXpR                  :w  a!  Xpl        U R                  U R                  5        U R                  R                  [        S5      [        S5      [        U5      S9n	[        U5       GH:  u  n
u  pU	R                  XS9  U R                  U5      nU R                  X5      nU[        R                  R                  :X  a  UR                  U R!                  U5      5        UR"                  (       a  U(       d  M  [        US   5      SS  u  nnUR$                  U:  a  M  U R                  UR"                  U5      nU(       d  M  U R                  R'                  SUUUR$                  4-  5        U R!                  U5      X`R!                  U5      '   GM-  US:X  Gah  U R                  R'                  SUR$                  -  5        [        US   5      SS  u  nnUS	-   U-   nU R                  UUU5      nU[        R                  R                  :X  a#  UR                  U R!                  U5      5        GM  U[        R                  R(                  :X  a  UR+                  S	5      nUR+                  S	5      nU R-                  UU5      nU HS  nUR/                  UU5      nU R                  S	U-   U5      nU(       d  M3  UR                  U R!                  U5      5        MU     GMz  U R                  R'                  S
X4-  5        GM  U[        R                  R(                  :X  d  GM  UR0                  S:X  a  GM  UR0                  S:X  a  U(       a  [        US   5      SS  u  nnU R                  UUU5      nU[        R                  R                  :X  a!  UR                  U R!                  U5      5        OtU[        R                  R(                  :X  aV  U R-                  UU5       H@  nU R                  S	U-   5      nU(       d  M   UR                  U R!                  U5      5        MB     U R-                  X5       H@  nU R                  S	U-   5      nU(       d  M   UR                  U R!                  U5      5        MB     UR"                  (       a  U(       d  GM1  [        US   5      SS  u  nnUR$                  U:  a  GMX  U R                  UR"                  U5      nU(       d  GM~  U R                  R'                  SUUUR$                  4-  5        U R-                  UR"                  UR$                  5      nU He  nU R                  S	U-   U5      nU(       d  M!  UU[        U5      S  -   nU R                  U5      nU R!                  U5      X`R!                  U5      '   Mg     GM=     U	R3                  5         UR                  U5        [5        U5      XV4$ )Nr   s   scanning pathss   paths)unittotal)itemr   s   copied to %s from %s@%d
s   gone from %d
r<   s    unknown path in revision %d: %s
   M   Rs   mark %s came from %s:%d
)r>  rH   r   rS  r   makeprogressr   r?   	enumerateupdate
getrelpathr#  rM   rP   r=  ri  recodere   rf   r  r$  r   
_iterfilesreplacerg   completelist)rh   rC   rv   rB  changedr<  rC  
new_modulerE   progressrN  rT   ent	entrypathr]   pmoduleprevnumre   
parentpathfromkindorootnrootchildren	childpathpkindcopyfrompath
copytopaths                              r"   r;  svn_source.expandpaths  s   5#%%c]12.
$$KMM$++&77'' q{#e* ( 
 (.NA{OOAO)-I??95Dsxx---DKK	23(( $,GAJ#7#; ##g- $0A0A7 K$0 -1A1ABC 26]1K{{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	$9#KKI(>?	 &. GGMM<~M ...::% ::%' (0
';AB'?$GW OOIwHE 6 66DKK	$:;#(("7"77 *.')JI(,y8H(II(y 'DKK	,B C *K
 "&!>I $y0@ AI yDKK	$:; "? (( $,GAJ#7#; ##g-#s/@/@'J#0\3+;+;<=  ??3+<+<c>N>NO!)I $y0@' JI$ !%	#l2C2E(F!FJ!%!<J6:kk)6LF;;z23 "*i /x 	wWw//r!   c                :  ^ ^ UT:  a  TUsnmS T l         U U4S jnT R                  R                  [        S5      T R                  UT4-  5         S nSnT R                  T R                  /UT5      n U Hp  nUu  ppnU	T R                  :  a  Sn  OWU(       d.  T R                  R                  SU	-  5        U=(       d    U	S:H  nMR  U" XXU5      u  pU(       a  UnU(       d  Mp    O   UR                  5         U(       d  U(       ax  UR                  (       df   T R                  UR                  5      nUS:  aC  T R                  T R                  US-
  5      nU(       a  UR                  R                  U5        g g g g g g ! UR                  5         f = f! [         a     g f = f! [        R                   R"                   aU  nUR$                  u  nnU[        R                   R&                  :X  a"  [(        R*                  " [        S5      T-  5      ee S nAff = f)	Nc           	       > TR                   R                  SU[        U 5      4-  5        SnTR                  U5      nUTR                  ;   d  UT:  a  SU4$ / n[        U R                  5       5      n U  VV	s/ s H*  u  pTR                  R                  U5      (       d  M'  X4PM,     n
nn	U
(       a  U
S   u  pUR                  (       a  SnUR                  TR                  [        U5      S -   nTR                  XR                  5      nUbX  [        U5      SS u  nnUTR                  :  a7  U/nTR                   R                  [        S5      TR                  UU4-  5        OTR                   R                  S5        / nU  H+  u  pTR!                  U5      c  M  UR#                  X45        M-     [%        U5      nTR                   R'                  S	S
5      (       a  [)        US   5      nU(       a  TR+                  U5      nOSnU(       a  TR+                  U5      nOSn TR                  R-                  S5      S   nUTR.                  :X  a  Sn[3        U[4        R6                  " US5      UUUUS9nUTR                  U'   UUR8                  4TR:                  U'   TR<                  (       a5  TR<                  R8                  (       d  U/TR<                  R8                  SS& UTl        UU4$ s  sn	nf ! [0         a    Sn Nf = f)zTReturn the parsed commit object or None, and True if
the revision is a branch root.
s!   parsing revision %d (%d changes)
FNrm   Tr   s$   found parent of branch %s at %d: %s
s)   no copyfrom path, don't know what to do.
r   s   localtimezoner   r!   r<   s   %Y-%m-%d %H:%M:%S %1%2)rs   r,   descrB  r5  rC   )r   r  r?   r  r   r/  ro   r   rB   re   r  rf   rH   r   r(  r   r  r   r1   
configboolmakedatetimestampr  rA   r   
IndexErrorcommitr
   r+   rB  rv   
child_cset)rr   rE   rs   r,   rt   branchedrC   rB  ri   rG  
root_pathsrT   r  r  previdr   r  rv   logr5  csetrh   	to_revnums                        r"   parselogentry2svn_source._fetch_revisions.<locals>.parselogentry]  s    GGMM53z?+,
 H**V$C dll"fy&8X~%G  
 0 0 23J#-#-411G1G1J:   &rN	$$#H!//$++c$ik2JJG![[2B2BCF).6v.>qr.B+
G"dmm3'-hG GGLL !"J K#';;"D!E
 GGMM"OPE'	??4(0d[) (
  %Dww!!*.>??(a1kk'*V,**404T^^+!F %%d,EFD !%DLL  %dll3DJJsOt'>'>.1U''*"DO>!C\  s   8&K6"K6(0K< <L
L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   rg  r   r  r   rB  rE   rC   r  r   r3   rM   rP   rR   r   SVN_ERR_FS_NO_SUCH_REVISIONr   r   )rh   from_revnumr  r  	firstcsetlastonbranchrl  r   rv   rE   rs   r,   rt   r  firstrevnumr  xxx_todo_changemer   nums   ` `                r"   rT  svn_source._fetch_revisionsW  s   "%."KU	"n 	?@{{K34	

,	I L\\4;;-iHF#E;@8E6-'+ &E&NO (4'Bv{ )6vW*&D $(	#|# $& Ii6G6G"&++imm"<K"Q!%T[[+/!J!%--44V< " ' 7HI<  ' xx++ 	+00KT3chh:::kk789D  	sW   "F' 4A.F &F */F' A"F FF' 
F$!F' #F$$F' 'HAHHc                   XR                   ;   a  g [        U5      SS  u  p4U R                  U:w  a!  X0l        U R                  U R                  5        [	        5       n[
        R                  R                  U R                  XU5      nUR                  5       nUR                  5         [        U[        5      (       a  US   nSU;   =(       a    S=(       d    SnSU;   =(       a    S=(       d    UnUS:X  a&  S	nUR#                  U5      (       a  U[%        U5      S  nXx4$ ! [
        R                  R                   aO  n	[
        R                  R                  [
        R                  R                  4n
U	R                   U
;   a   S n	A	ge S n	A	ff = f)
Nr   r   rm      svn:executable   xr!   s   svn:special   ls   link )r<  rH   r   rS  stringiorM   r   get_filegetvaluer   
isinstancer  rP   rR   SVN_ERR_FS_NOT_FOUNDSVN_ERR_RA_DAV_PATH_NOT_FOUNDapr_errrB   r?   )rh   filerC   r  rE   ioinfor   moderG  notfoundlink_prefixs               r"   getfilesvn_source.getfile  sE   <<	!)#qr!2J{{j((dkk*B66??477D"=D;;=D HHJ$%%Bx%-74>3D"d*4<D 4<"K{++C,./z xx++ 	--66H yyH$!	s   CD F=AFFFc                  ^ TR                  S5      m[        R                  R                  5       nSR	                  U R
                  [        T5      /5      R                  S5      n[        R                  R                  U[        U5      SU R                  U5      nT(       a  TS-  mU4S jUR                  5        5       $ )z3Enumerate all files in path at revnum, recursively.r<   Tc              3     >#    U  H6  u  pUR                   [        R                  R                  :X  d  M/  TU-   v   M8     g 7frZ   )r]   rM   rP   r=  ).0ri   rG  rT   s      r"   	<genexpr>(svn_source._iterfiles.<locals>.<genexpr>  s6      
'vv/// TAX's
   .AA)r   rM   rP   Poolr   r   rK   rN   r  r`   r   ro   )rh   rT   rE   ru   r3  rE  s    `    r"   r  svn_source._iterfiles  s    zz$xx}}		4<<t56<<TB**--vf~tTXXtLDLD

 	
r!   c                ^   Uc  U R                   nUR                  U5      (       a@  UR                  S5      [        U5      S  nUR                  S5      (       a  USS  $ US:X  a  U$ U R                  R                  S[        R                  " U5      [        R                  " U5      4-  5        g )Nr<   r   r!   s   %r is not under %r, ignoring
)r   rB   r  r?   r   r  r   r)  )rh   rT   r   relatives       r"   r  svn_source.getrelpath  s    >[[F ??6""{{4(V7H""4((|#S 	-%x'7'7'?@A	
 r!   c                   Ub  U R                  S5      nUS-   U-   n [        R                  R                  U R                  UR	                  S5      U5      Ub  U R                  W5        $ $ ! Ub  U R                  W5        f f = f)Nr!   r<   )rS  rM   r   
check_pathr   )rh   rT   rE   r   r   s        r"   r#  svn_source._checkpath-  s}    s+JD=4'D	* 66$$TWWdjj.>G!j) "v!j) "s   9A- -Bc                v   / nU HK  nUR                  S5      (       d  U R                  S-   U-   nUR                  UR                  S5      5        MM     U R                  UUUUUU/n	U R
                  R                  SS5      (       d  [        U	6 $ [        U	5      n
[        R                  " 5       nS[        R                  " U5      -  n[        R                  " U5      u  pUR                  U
5         UR                  5         ['        U5      $ ! [         a     [         R"                  " [%        S5      5      ef = f)Nr<   r   s   svn.debugsvnlogs   %s debugsvnlogr   )rB   r   r   r   r   r   r  r   
encodeargsr   hgexecutable
shellquotepopen2r  r   r   r   r   r   r   )rh   rv   r   r   r   r   r   relpathsri   r   arghgexecmdstdinr   s                  r"   rg  svn_source._getlog9  s#    A<<%%KK$&*OOAGGDM* 
 LL"
 ww!!*.@AA"D))%%'("5"5e"<< ,C	KKM     	++1 	s   3D *D8)r  r   r  r   r  r   r   r  r.  r  r   r   rv   r   r   r<  r   r   r-  r   r   r~   rF   r  r   rZ   )s	   splicemapr   )r5   r6   r7   r8   rj   r  r  r  r   r7  rH  rK  rP  rW  r^  ra  r{  r  r  rE   r  rS  r;  rT  r  r  r  r#  rg  r9   __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    / nU  H  u  p#UR                  SX#4-  5        M     [        SSR                  U5      0-  $ )Ns>   if [ "$ACTION" = "%s" -a "$PROPNAME" = "%s" ]; then exit 0; fis   rules   
)r   pre_revprop_change_templater   )prop_actions_allowedrulesrg   propnames       r"   gen_pre_revprop_change_hookr  u  sM    E0#  	!	
 1 '(EJJu4E)FFFr!   c                     \ rS rSr\R
                  " S\R                  5      r\R
                  " S\R                  5      rS r	S r
S rS rS rS	 rS
 r\S 5       rS rS rS rS rS rS rS rS rS rS rS rSrg)svn_sinki  s   Committed revision (\d+).s   Repository UUID:\s*(\S+)c                h    U R                   (       a!  [        R                  " U R                   5        g g rZ   )r  rS   chdirr   s    r"   prerunsvn_sink.prerun  s    77HHTWW r!   c                h    U R                   (       a!  [        R                  " U R                  5        g g rZ   )r  rS   r  cwdr   s    r"   postrunsvn_sink.postrun  s    77HHTXX r!   c                X    [         R                  R                  U R                  SU5      $ )Nr   rS   rT   r   r  )rh   r   s     r"   r   svn_sink.join  s    ww||DGGWd33r!   c                $    U R                  S5      $ )Nr~  r   r   s    r"   
revmapfilesvn_sink.revmapfile  s    yy&&r!   c                $    U R                  S5      $ )Ns   hg-authormapr  r   s    r"   
authorfilesvn_sink.authorfile  s    yy))r!   c                &	   [         R                  " SSS9  [         R                  " SSS9  [        R                  XX#5        [        R                  XS5        / U l        / U l        / U l        / U l        S U l	        [        R                  " 5       U l        Sn[        R                  R                  [        R                  R!                  USS5      5      (       a7  [        R                  R#                  U5      U l	        U R%                  S5        GO[&        R(                  " S	U5      (       Gd1  [        R                  R#                  U5      n[        R                  R+                  [        R                  R-                  U5      5      (       a  [        R                  R/                  [        R                  R!                  US
S5      5      (       dX  UR1                  [3        S5      [        R                  R5                  U5      -  5        [	        US5      R%                  SU5        Un[6        R8                  " U5      nUR;                  S5      (       d  SU-   nSU-   n[        R                  R!                  [        R                  " 5       [        R                  R5                  U5      S-   5      nUR1                  [3        S5      [        R                  R5                  U5      -  5        U R%                  SX55        XPl	        [<        R>                  " U R                  5      U l         [<        R>                  " U R                  5      U l!        [E        XR!                  S5      5      U l#        [6        RH                  " U R                  5      (       a  [6        RJ                  U l&        OS U l&        U(       a  / SQnU RN                  RQ                  SS5      (       a  URS                  S5        [        R                  R!                  USS5      n[6        RT                  " U[W        U5      5        [6        RX                  " USS5        U R%                  S5      nU RZ                  R)                  U5      R]                  S5      R_                  5       U l0        g )Ns   svns
   subversion)debnames   svnadminFr   s   entriess   updates"   ^(file|http|https|svn|svn\+ssh)://r   s   fs-types!   initializing svn repository '%s'
s   creater<   s   file://s   -wcs#   initializing svn working copy '%s'
s   checkouts   hg-childmap))r  s   svn:log)re     hg:convert-branch)re     hg:convert-revr      svn.dangerous-set-commit-dates)r     svn:dater   s   pre-revprop-changeTs   infor   )1r   	checktoolconverter_sinkrj   commandlinedeletesetexecdelexecrC  r  r   getcwdr
  rS   rT   isfiler   r  run0rZ  searchrU   dirnamer   statusr   basenamer   rV   rB   vfsmodr	   r   wopenermapfilechildmap	checkexecisexecis_execr   r  r   	writefiler  setflagsuuid_regroupr   rF   )	rh   r   r  rT   createdwcpathr  hookoutputs	            r"   rj   svn_sink.__init__  s4   7m<(9Tv.??$77>>"'',,tWjABBgg&&t,DGIIi 99CTJJww''-77==!67777>>T5*=  		CD gg..t45 $B499)TJ"&==.D??400#d{%,DWW\\!277#3#3D#9F#BF II9:''""6*+ IIk40Gjj)zz$''*IIn$=>>>$''"";;DLDL$  ww!!=  %++,?@77<<3HIDNN12FG MM$t,7#LL''/55a8>>@	r!   c                X    [         R                  R                  " U R                  /UQ76 $ rZ   r  )rh   namess     r"   wjoinsvn_sink.wjoin  s    ww||DGG,e,,r!   c                   [        5       nU R                  SSSS9n[        R                  R                  R                  U5      nUR                  S5       H  nUR                   Hw  nUR                  UR                  :w  d  UR                  S:w  a  M/  SR                  S UR                   5       5      nUR                  [        R                  " U5      5          M     M     U$ )Ns   lsT)	recursivexmlr   r    c              3  p   #    U  H,  oR                   UR                  :X  d  M  UR                  v   M.     g 7frZ   )nodeType	TEXT_NODEr   )r  cs     r"   r  $svn_sink.manifest.<locals>.<genexpr>  s&      $0qJJ!++4MFAFFLs   66)r>  r%  r@  domminidomparseStringgetElementsByTagName
childNodesrC  ELEMENT_NODEtagNamer   ri  r   
unitolocal)rh   mr8  docrG  rF  r   s          r"   manifestsvn_sink.manifest  s    
 E5Dd;ggoo))&1))'2A\\::/1993Fww $%LL  h))$/0 " 3 r!   c                   SU;   a  U R                   R                  X15        g  [        R                  R	                  U R                  U5      5      (       a  [        R                  " U5        U R                  (       aU  Sn[        R                  R                  U R                  U5      5      (       a   U R                  U R                  U5      5      nU R                   R                  X5        U R                  (       au  W(       a"  SU;  a  U R                  R                  U5        O!SU;   a  U R                  R                  U5        [        R                  " U R                  U5      SSU;   5        g g ! [         a     GNf = f)Nr  Fr  )r+  symlinkrS   rT   islinkr<  unlinkr   r0  r   r  r"  r   r!  r   r2  )rh   filenameflagsr   wasexecs        r"   putfilesvn_sink.putfile  s   5=LL  077>>$**X"677IIh' ||  77>>$**X"677"ll4::h+?@GLLx.||5(++H5u}++H5djj2E45=I   s   A	E5 5
FFc                   U R                  U5      n[        R                  R                  U5      nU(       av  [        R
                  " S[        R                  R                  U5      S9u  pV[        R                  " U5        [        R                  " U5        [        R                  " X65         U R                  SX5        U R                  R                  U5        U(       a/   [        R                  " U5        [        R                  " WU5        g g ! [         a     N%f = f! U R                  R                  U5        U(       a@   [        R                  " U5        O! [         a     Of = f[        R                  " WU5        f f = f)Ns   hg-copy-)prefixdirs   copy)r<  rS   rT   lexistsr   mkstempr'  r   rV  renamer%  rQ  ri  r   )rh   ro  rq  wdestr   fdtempnames          r"   	_copyfilesvn_sink._copyfile  s     

4 '#++"(>LB HHRLIIhIIe&		+IIgv,MMd#IIe$ 		(E*   	 MMd#IIe$ 		(E* sB   /D# $D 
D D ##FEF
E+(F*E++Fc                &  ^^ [        5       nU H~  m[        R                  R                  U R	                  T5      5      (       a  UR                  T5        [        T5      m[        UU4S jS5       H  mUR                  TS T 5        M     M     U$ )Nc                 *   > T R                  SST5      $ )Nr<   r   )r   )rO  rN  s   r"   r   "svn_sink.dirs_of.<locals>.<lambda>8  s    !''$1"5r!   rm   )r>  rS   rT   rU   r<  ri  r?   iter)rh   rD  dirsrO  rN  s      @@r"   dirs_ofsvn_sink.dirs_of2  sm    uAww}}TZZ]++AA5r:2A ;	  r!   c                    [        U R                  U5      5       Vs/ s H  o"U R                  ;  d  M  UPM     nnU(       a-  U R                  R                  U5        U R	                  USSSS9  U$ s  snf )N   addT)non_recursivequiet)r/  rl  rQ  r  xargs)rh   rD  dadd_dirss       r"   rt  svn_sink.add_dirs<  sk    dll512
2!t}}6LA2 	 
 MM  *JJxt4JH
s
   A2A2c                    U Vs/ s H  o"U R                   ;  d  M  UPM     nnU(       a,  U R                   R                  U5        U R                  USSS9  U$ s  snf )Nro  T)rq  )rQ  r  rr  )rh   rD  rO  s      r"   	add_filessvn_sink.add_filesE  sP    !<Eqdmm%;E<MM  'JJufDJ1	 =s
   AAc                     X R                   U'   g rZ   )r-  )rh   parentchilds      r"   addchildsvn_sink.addchildL  s     %fr!   c                $    SU R                   U4-  $ )Ns	   svn:%s@%s)rF   r  s     r"   r  svn_sink.revidO  s    tyy#...r!   c	                P
   U H"  n	 U R                  U R                  U	   5      s  $    U Hp  u  pUR                  X5      u  pUc  U R                  R                  U
5        M8  U R                  XU5        X;   d  MQ  U R                  R                  X*   U
/5        Mr     U(       a=  U R                  R                  [        U R                  R                  U5      5      5        U V
s/ s H  oS   PM	     nn
[        U R                  5      n[        U5      nUR                  U R                  UR                  U5      5      5        U R                  (       a/  U R                   H  u  nnU R!                  UU5        M     / U l        U R                  (       aQ  U R#                  U R                  S5        U R                   H  n
U R                  R%                  U
5        M      / U l        UR                  U R'                  UR                  U5      5      5        U R(                  (       a$  U R#                  U R(                  SS5        / U l        U R*                  (       a%  U R#                  U R*                  SSS5        / U l        [,        R.                  " SS9u  nn[0        R2                  " US	5      nUR5                  [6        R8                  " UR:                  5      5        UR=                  5          U R?                  S
[@        RB                  " URD                  5      USS9n U RF                  RI                  U5      RK                  S5      nURZ                  (       a  U R]                  SSURZ                  SUS9  UR^                  (       a-  UR^                  S:w  a  U R]                  SSUR^                  SUS9  U RP                  Ra                  SS5      (       aC  [b        Rd                  " URf                  5      nUS   S4nU R]                  SS[i        U5      SUS9  U H  n	U Rk                  U	U5        M     U R                  U5      [0        RN                  " U5        $ ! [         a     GMh  f = fs  sn
f ! [L         a    U(       d&  U(       a  US   OSs [0        RN                  " U5        $ U RP                  RS                  [U        S5      5        U RP                  RS                  U5        [V        RX                  " [U        S5      5      ef = f! [0        RN                  " U5        f = f)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   rZ  rC  extendr/  rQ  
differencer>  	frozensetr  rt  re  rr  removerw  r"  r!  r   r`  rS   fdopenr  r   r  r  r   r%  r   	shortuserrs   	commit_rer&  r4  r   rV  r   r   r   r   r   rC   runr5  r  r
   r0   r,   r-   r|  )rh   rD  rC  rB  r  ro  r  rA  cleanp2rz  rO  rx   r   r  rE  r(   rs  rc  messagefilery   r8  rC   r,   s                          r"   	putcommitsvn_sink.putcommitR  s    Fzz$--"788  DA-JD|""1%Qd+;KK&&	1~6  KKvdmm&>&>u&EFG$%u!1u%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   Q'Q/00T !*Q4 C;T 
Q,+Q,4T
T +AT

T T%c                L    U R                   R                  [        S5      5        g)Ns/   writing Subversion tags is not yet implemented
r   )r   r   r   )rh   r-  s     r"   puttagssvn_sink.puttags  s    QJKLr!   c                    gr:  r    r  s     r"   hascommitfrommapsvn_sink.hascommitfrommap  s     r!   c                f    XR                   ;   a  g[        R                  " [        S5      U-  5      e)NTs_   splice map revision %s not found in subversion child map (revision lookups are not implemented))r-  r   r   r   r  s     r"   hascommitforsplicemapsvn_sink.hascommitforsplicemap  s:     --kkD 	
 	
r!   )r-  rC  r
  r   r"  r0  r   r!  rF   r  r+  N)r5   r6   r7   r8   rZ  compileMr  r3  r  r  r   r  r  rj   r<  propertycacherQ  rZ  re  rl  rt  rw  r|  r  r  r  r  r  r9   r    r!   r"   r  r    s    

8"$$?Ijj5rtt<G4'*JAX-  .J8+0&/b#H

r!   r  r   )K
__future__r   r   r   rS   rp   rZ  xml.dom.minidomr@  mercurial.i18nr   	mercurialr   r   r   r   r	   r*  mercurial.utilsr
   r   r   rA  r   r  r  r   rJ   r  r  r  converter_sourcer   r  r  r,  r   r   rM   
svn.clientsvn.coresvn.ra	svn.deltar   warningsfilterwarningsDeprecationWarningrP   rR   ImportErrorr   r#   r)   r-   r1   r   r3   rH   rK   rX   r`   rb   r   r   r   r  r   r   r   r   r   r   r  r  r  r    r!   r"   <module>r     s  
 #   	  	     ==""		  	&&** 

,, 
..  	 .@ HH   
C"4@H	i 	6100  ,^&   >%d %V:4 KxT!! T!n 
GH
~{ H
)  
Cs   ,AF- -F87F8