Ñò
3Nc           @€  sº  d  d k  l Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k l	 Z	 d  d k
 l Z d  d k l Z d d k l Z d d k l Z l Z e i ƒ  Z e i ƒ  Z e ƒ  Z d	 „  Z d
 „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ e i d „  ƒ Z d e! d d „ Z" d „  Z# d „  Z$ d „  Z% d „  Z& e! d „ Z' d „  Z( d „  Z) d „  Z* d e+ f d „  ƒ  YZ, d „  Z- d „  Z. d „  Z/ d „  Z0 d S(   iÿÿÿÿ(   t   with_statementN(   t   config(   t   Element(   t   TransactionAbortedi   (   t	   svndriven(   t   customt   formatc         C€  sb   |  i  d ƒ } d } xF | D]> } | | d 7} t i i | ƒ p t i i | d ƒ q q Wd  S(   Nt   /t    (   t   splitt   ost   patht   existst   statet   clientt   mkdir(   R   t   bitst   pathpntt   b(    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   _mkdir_p   s     c         C€  s   |  i  d d ƒ \ } } t | ƒ t |  d ƒ i i ƒ  } z | ~ } | i | d ƒ Wd  QXy t i i |  ƒ Wn t	 i
 j
 o n Xd  S(   NR   i   t   ws   
(   t   rsplitR   t   opent   __exit__t	   __enter__t   writeR   R   t   addt   pysvnt   ClientError(   R   t   valt   dirt   filt   _[1](    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   _setaddfile   s    
&t   InvalidStatec           B€  s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyR"   &   s   t
   LockFailedc           B€  s   e  Z RS(    (   R#   R$   (    (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyR%   )   s   c       	   C€  s@   t  i i ƒ  z( x! t D] }  t i |  d t ƒq WWd  QXd  S(   Nt   ignore_errors(   t   checkouts_lockR   R   t	   checkoutst   shutilt   rmtreet   True(   t   c(    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   cleanup_checkouts,   s     c         C€  sð   g  } | d  j o |  i } n x½ t oµ t | ƒ d j o; |  i ƒ  o |  i |  i d g } qˆ |  i d g } n |  i g | } | d  j	 o | }  d  } n
 |  i }  |  d  j o Pn |  t j o d  S|  i } q# Wt i	 i
 | Œ  S(   Ni    s   .yaml(   t   Nonet   orgmodeR+   t   lent   hasChildrent   enamet   parentt   FalseR
   R   t   join(   t   elementR3   t   symlinkR/   t   above(    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   _elementpath2   s(     
	c         C€  s2   t  i i |  d |  d f j o t t _ n d  S(   Nt   content_statet
   prop_state(   R   t   wc_notify_statet
   conflictedR+   R   t   conflict(   t   dct(    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   notifyJ   s    c          C€  s=  t  i ƒ  }  |  o |  i d ƒ }  n d }  t i ƒ  t _ t t i _ t i i	 |  ƒ h  t _
 t t _ t i ƒ  d t _ t t _ y+ t i i ƒ  z t i ƒ  t _ Wd  QXWnO t j
 oC t i d ƒ t _ t i d d „  d t i t i f ƒ t _ n, Xt i d d „  d t i t i f ƒ t _ t i i ƒ  d  S(	   Ns   utf-8t   nobodyi   s	   .bazsvncot   targetc         S€  s#   |  i  d  t i i t i ƒ | ƒ S(   s   file:///(   t   checkoutR
   R   t   abspathR   t
   REPOSITORY(   t   clt   tempd(    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   <lambda>e   s    t   argsc         S€  s   |  i  | ƒ S(    (   t   update(   RF   RG   (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyRH   h   s    (   R   t   get_usernamet   encodeR   t   ClientR   R   R@   t   callback_notifyt   set_default_usernamet   deltasR4   t
   lock_stateR
   t   unamet   hostnameR>   R'   R   R   R(   t   popRG   t   KeyErrort   tempfilet   mkdtempt	   threadingt   Threadt   checkout_threadt   start(   t   username(    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   beginP   s,    				&		c         C€  s8   t  |  ƒ } | t i i | h  ƒ i |  i h  ƒ | <d  S(   N(   R9   R   RP   t
   setdefaultR2   (   R6   t   pnameR   R   (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   setpropl   s    c         C€  s8   t  |  ƒ } d  t i i | h  ƒ i |  i h  ƒ | <d  S(   N(   R9   R.   R   RP   R^   R2   (   R6   R_   R   (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   deletep   s    c         C€  s  | d j oÕ|  d  j	 p t ‚ t | t ƒ p | d  j p t | i ‚ h  } |  i | j o | o d  S|  i t j	 oO t |  ƒ } | t i	 j o/ |  i
 t i	 | j o t i	 | |  i
 } qÍ n t |  d | ƒ} | i d ƒ ow |  i t j p | i d ƒ oV |  i t j	 o t |  ƒ n | t i	 i | h  ƒ i d h  ƒ i | h  ƒ |  i
 <q	|  i t j	 o, | i d ƒ o | i d ƒ o t ƒ  q	|  i t j	 o+ | i d ƒ o | i d ƒ o t ƒ  q	| t i	 j p t |  | t i	 | f ‚ | d  j	 o| i ƒ  oú | i d j oê t i i | ƒ d } t i i | ƒ d | i
 d } t i i ƒ  t i i t i d t i i | ƒ d ƒ t i i t i d | t i d | d t ƒ| t i	 j p t ‚ | t i	 j o" t i	 | t i	 | <t i	 | =qn |  i t j p | o) t i i ƒ  t t i d | d ƒ nq| | j oct i i ƒ  | i d	 |  i
 |  i
 f ƒ oO | i d	 |  i
 |  i
 f ƒ p t ‚ t i i | ƒ } t i i | ƒ } n |  i i ƒ  d
 j ož t i i t i i t ƒ |  i i
 d ƒ } t i i t i i t i i t ƒ ƒ |  i i
 d ƒ } t i i | | d t ƒt i i t i i | ƒ g ƒ n t i i t i d | t i d | d t ƒn |  i d j ot i i ƒ  |  i | j o1 t |  d t ƒ}	 t i i t i d |	 ƒ n t |  d | d t ƒ}
 t i i t i d |
 ƒ o" t i  t i d |
 ƒ t } n t } t i! d |
 i" d ƒ | t i d |
 ƒ | p t i i# t i d |
 ƒ qÞq	n(| d j o[ t p
 t d ‚ t$ t
 ƒ } t i i t i i | ƒ | ƒ } t i i | | d t ƒnÀ| d j o¢t |  ƒ } t |  d | ƒ} | | j os| t i	 j p t ‚ | t i	 j o" t i	 | t i	 | <t i	 | =n t i i ƒ  |  i d j o t p t ‚ qõ
| d j o t p t ‚ qõ
| d j oö|  i d j p t ‚ | i d ƒ oð t i i t i d t i i | ƒ t i d t i i | ƒ d t ƒxt i	 i% ƒ  D]‘ } | i& t i i | ƒ d ƒ ok | t' t i i | ƒ ƒ } t i i | ƒ | } | t i	 j p t ‚ t i	 | t i	 | <t i	 | =q¤q¤Wnq | i d ƒ p t ‚ t i i t i d t i i | ƒ d ƒ t i i t i d | t i d | d t ƒt |  d | d t ƒ} t i! d | i" d ƒ t i i | ƒ t i d | ƒ t i i# t i d | ƒ qõ
| d j o¸|  i d j p t ‚ | i d ƒ oð t i i t i d t i i | ƒ t i d t i i | ƒ d t ƒxt i	 i% ƒ  D]‘ } | i& t i i | ƒ d ƒ ok | t' t i i | ƒ ƒ } t i i | ƒ | } | t i	 j p t ‚ t i	 | t i	 | <t i	 | =q§	q§	Wnq | i d ƒ p t ‚ t i i t i d | t i d | d t ƒt i i t i d t i i | ƒ g ƒ t |  d t ƒ} t i i t i d | ƒ qõ
t( d | ƒ ‚ q	n t) d | ƒ ‚ d  S(   NR3   s   .listt	   parentaget   toplevels   .yamlR   R   t   forces
   %s/%s.yamli   R7   s   ../R2   s   esetattr.ename not implementedR/   t   listt   normals   .defs   .elms   Invalid orgmode '%s'!s   Unknown eattr %s!(*   R.   t   AssertionErrort
   isinstanceR   t	   __class__R3   R4   R9   R   RP   R2   t   endswitht   edeleteR^   t   do_somethingt   do_something_elseR1   R/   R
   R   t   dirnameRZ   R5   R   R   RG   t   moveR+   R!   t   countDescendantst   removeR   t   unlinkR7   t   countR   t	   _getepatht   keyst
   startswithR0   R"   t	   Exception(   R6   t   attrR   t   bootstrappingt   olddeltst   oldpatht   newpatht
   oldparpatht
   newparpatht
   oldsymlinkt
   newsymlinkt   dontaddt   fil1t   fil2t   wast   willt   kt   newt   sympath(    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   esetattrt   s   * 8 *+!	!#
'!#  #&#  *c         C€  s  t  |  ƒ } t i i ƒ  t i i t i | ƒ } | i d |  i |  i f ƒ o t	 d ƒ ‚ n| i d ƒ o² t i i
 | ƒ |  i d j o2 |  i ƒ  p t ‚ t i i | g d t ƒqðd  t i i | h  ƒ |  i <| t i j o, |  i t i | j o t i | |  i =n d  SnÎ t i i | g d t ƒ|  i i ƒ  d j ož t i i t i i | ƒ |  i i d ƒ } t i i t i i t i i | ƒ ƒ |  i i d ƒ } t i i | | d t ƒt i i t i i | ƒ g ƒ n | t i j o t i | =n d  S(   Ns
   %s/%s.yamls   Removing a node with children!s   .listRd   i   s   .yaml(   R9   R   RZ   R5   R
   R   RG   Rj   R2   R"   t   basenameR1   Rg   R   Rq   R+   R.   RP   R^   R3   Rp   Rn   Ro   (   R6   t   rpathR   R}   R~   (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyRk     s0      '$#c         C€  s®  | d j p t  ‚ t i i ƒ  | d j oÔ d |  i } d | } | t i j p t  ‚ t i i t i	 d | ƒ oe t i
 i t i	 d | t i	 d | d t ƒ| t i j o" t i | t i | <t i | =qþ qªt t i i t i	 | ƒ d	 ƒ n© d |  i } t | t ƒ p t t | ƒ d
 ƒ } n | t i i | h  ƒ i |  i h  ƒ t | d
 ƒ <t i i t i	 d | ƒ p# t t i i t i	 | ƒ d	 ƒ n d  S(   Nt   flavort   defaultt   commentR_   t   visibles   props/%s.yamlR   Rd   R   s   utf-8(   s   flavors   defaults   comments   pnames   visible(   Rg   R   RZ   R5   t   nameRP   R
   R   R   RG   R   Ro   R+   R!   Rh   t   unicodet   strR^   (   t   propRx   R   R‚   Rƒ   R   (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   psetattr*  s&    
#1c         C€  s`   t  i i ƒ  d |  i } t  i i t  i d | g d t ƒ| t  i j o t  i | =n d  S(   Ns   props/%s.yamlR   Rd   (	   R   RZ   R5   R   R   Rq   RG   R+   RP   (   R“   R   (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   pdeleteB  s    t   parse_handlerc           B€  sS   e  Z d  „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   c         C€  s6   | |  _  t i d t i i | ƒ |  _ t |  _ d  S(   NR   (	   t   subsR   RG   R
   R   Rn   R   R4   t   noprop(   t   selfR—   R   (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   __init__K  s    	 c         C€  sb   |  i  p t ‚ | |  i j o8 | |  i | j o$ |  i | | } |  i | | =| S| Sd  S(   N(   R˜   Rg   R—   (   R™   t   et   pt   contentst   ret(    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyR“   O  s    $c         C€  s1   | |  i  j o |  i  | d  j o t St Sd  S(   N(   R—   R.   R4   R+   (   R™   R›   R3   (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   start_elementW  s    $c         C€  s   d  S(   N(    (   R™   R›   (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   end_element\  s    c         €  s-   t  ˆ  _ t ‡  ‡ f d †  ˆ  i ˆ Dƒ ƒ S(   Nc         3€  s*   x# |  ] } | ˆ  i  ˆ | f Vq Wd  S(   N(   R—   (   t   .0Rœ   (   R™   R›   (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pys	   <genexpr>`  s   	 (   R+   R˜   t   dictR—   (   R™   R›   (    (   R™   R›   s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   get_new_properties^  s    	c         C€  s$   | |  i  j o |  i  | Sg  Sd  S(   N(   Rb   (   R™   R›   (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   get_new_childrena  s    c         C€  sR   t  i i |  i | ƒ } t | d ƒ i i ƒ  } z | ~ } | i ƒ  SWd  QXd  S(   Nt   rb(   R
   R   R5   R   R   R   R   t   read(   R™   R   R    R   (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   get_includef  s    &c         C€  sÔ   t  i i |  i | ƒ } | d  j	 ol | oT d } | } xE t  i i | ƒ o- | d 7} d | i | i d d ƒ ƒ } q; Wn t | | ƒ n@ | p t ‚ t  i i | ƒ o t	 i
 i | g d t ƒn | S(   Ni   s   .%s.t   .Rd   (   R
   R   R5   R   R.   R   R   R!   Rg   R   R   Rq   R+   (   R™   R   R   R‡   t   cntt   origpath(    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   set_includej  s     
(N(   R#   R$   Rš   R“   R.   RŸ   R    R£   R¤   R§   R«   (    (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyR–   J  s   						c         C€  s<   |  i  | d | ƒt i i ƒ  z t i | ƒ Wd  QXd  S(   Nt   log_message(   t   checkinR'   R   R   R(   R   (   R   RG   t   messageRQ   (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt
   do_checkinz  s    c          C€  sé  t  ƒ  p t ‚ t i i ƒ  yxÝ t i D]Ò }  t t i d |  ƒ } t i	 t i d |  ƒ t t i d |  d d ƒ} t i |  } |  i
 d ƒ o t | ƒ d j p t ‚ n t i t i d |  t t i |  |  ƒ | | ƒ | i ƒ  | i ƒ  q, Wt i i t i ƒ t i o t d ƒ ‚ n Wn> t i d t d t i t i f ƒ t _ t i i ƒ  ‚  n Xd	 t i ƒ  } t oA t i d t d t i t i | t i f ƒ t _ t i i ƒ  n t t i t i | t i ƒ d  S(
   NR   t   modeR   s   .yamli   s   Subversion conflict!RB   RI   s
   Web Edit: (   R   Rg   R   RZ   R5   RP   R   RG   R
   Rr   Rj   R0   R   t   parseR–   t   closeR   RJ   R>   R   RX   RY   t	   do_revertt   revert_threadR[   R   t   get_commit_messageR4   R¯   RQ   t   commit_thread(   R   t   inft   outft   elmsR¬   (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   commit€  sB    
 

	c         C€  s<   |  i  | d t ƒt i i ƒ  z t i | ƒ Wd  QXd  S(   Nt   recurse(   t   revertR+   R'   R   R   R(   R   (   R   RG   (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyR³   ¨  s    c           C€  sW   t  ƒ  p t ‚ t i i ƒ  t i d t d t i t i	 f ƒ t _
 t i
 i ƒ  d  S(   NRB   RI   (   R   Rg   R   RZ   R5   RX   RY   R³   R   RG   R´   R[   (    (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   abort­  s
    (1   t
   __future__R    R
   RV   RX   t   atexitR)   R   t   bazbaseR   t   bazbase.modelR   t
   bazbase.dbR   t   shareR   R   R   R   t   localR   t   LockR'   t   setR(   R   R!   Rw   R"   R%   t   registerR-   R.   R4   R9   R@   R]   R`   Ra   R‰   Rk   R”   R•   t   objectR–   R¯   Rº   R³   R½   (    (    (    s;   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazsvn/hook.pyt   <module>   s:   <								™			0		(	