ó
 çƒQc           @   sJ  d  Z  d d l m Z d d l m Z d d l Z d d l Z d d l Z d d l Z d d l	 Z	 d d l
 Z
 d d l Z d d l Z d d l Z d d l Z d e j f d „  ƒ  YZ d e e j f d „  ƒ  YZ d	 e e j f d
 „  ƒ  YZ d e e j f d „  ƒ  YZ d e
 j f d „  ƒ  YZ d e
 j f d „  ƒ  YZ d „  Z d S(   s~   Repository class for "in-memory pull" of one local repository to another,
allowing operations like diff and log with revsets.
iÿÿÿÿ(   t   nullid(   t   _Nt   unionrevlogc           B   sY   e  Z d  „  Z d „  Z d „  Z d „  Z d d d d „ Z d „  Z d „  Z	 d „  Z
 RS(	   c      	   C   s†  t  j | ƒ } t j j |  | | ƒ | |  _ t |  ƒ } | d |  _ t ƒ  |  _ x,|  j D]!} |  j j	 | } | \ } }	 }
 } } } } } | d  k r¸ | | k s¯ t ‚ | } n | | ƒ } | |  j k rð |  j j |  j | ƒ q] n  |  j j | ƒ } |  j j | ƒ } d  d  d  d  | |  j | ƒ |  j | ƒ | f } |  j	 j d | ƒ | |  j | <|  j j | ƒ | d 7} q] Wd  S(   Ni   iÿÿÿÿ(   t   scmutilt   readonlyvfst   revlogt   __init__t   revlog2t   lent
   repotiprevt   sett
   bundlerevst   indext   Nonet   AssertionErrort   nodemapt   addt   nodet   revt   insert(   t   selft   openert	   indexfileR   t
   linkmappert   nt   rev2R   t   _startt   _csizet   _rsizet   _baset   linkrevt   p1revt   p2revR   t   linkt   p1nodet   p2nodet   e(    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR      s0    		$c         C   s;   | |  j  k r" t j j |  | ƒ S|  j j |  j | ƒ ƒ S(   N(   R	   R   t   _chunkR   R   (   R   R   (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR%   =   s    c         C   sÃ   | |  j  k r[ | |  j  k r[ |  j j |  j j |  j | ƒ ƒ |  j j |  j | ƒ ƒ ƒ S| |  j  k r | |  j  k r t j j |  | | ƒ St j |  j |  j | ƒ ƒ |  j |  j | ƒ ƒ ƒ S(   s1   return or calculate a delta between two revisions(	   R	   R   t   revdiffR   R   R   t   mdifft   textdifft   revision(   R   t   rev1R   (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR&   B   s    	c         C   s›   t  | t ƒ r' | } |  j | ƒ } n | } |  j | ƒ } | t k rL d S| |  j k r‚ |  j j | ƒ } | | | f |  _ n t	 j	 j |  | ƒ } | S(   sT   return an uncompressed revision of a given node or revision
        number.
        t    (
   t
   isinstancet   intR   R   R    R	   R   R)   t   _cacheR   (   R   t	   nodeorrevR   R   t   text(    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR)   N   s    c         C   s
   t  ‚ d  S(   N(   t   NotImplementedError(   R   R0   t   transactionR!   t   p1t   p2t   d(    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt   addrevisiond   s    c         C   s
   t  ‚ d  S(   N(   R1   (   R   t   revsR   R2   (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt   addgroupf   s    c         C   s
   t  ‚ d  S(   N(   R1   (   R   R   t   minlink(    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt   striph   s    c         C   s
   t  ‚ d  S(   N(   R1   (   R   (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt	   checksizej   s    N(   t   __name__t
   __module__R   R%   R&   R)   R   R6   R8   R:   R;   (    (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR      s   	(					t   unionchangelogc           B   s   e  Z d  „  Z RS(   c         C   sH   t  j  j |  | ƒ d  } t  j  | ƒ } t j |  | |  j | | ƒ d  S(   N(   t	   changelogR   R   R   R   (   R   R   t   opener2R   t
   changelog2(    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR   n   s
    (   R<   R=   R   (    (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR>   m   s   t   unionmanifestc           B   s   e  Z d  „  Z RS(   c         C   sB   t  j  j |  | ƒ t  j  | ƒ } t j |  | |  j | | ƒ d  S(   N(   t   manifestR   R   R   (   R   R   R@   R   t	   manifest2(    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR   v   s    (   R<   R=   R   (    (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRB   u   s   t   unionfilelogc           B   s   e  Z d  „  Z d „  Z RS(   c         C   sQ   t  j  j |  | | ƒ t  j  | | ƒ } t j |  | |  j | | ƒ | |  _ d  S(   N(   t   filelogR   R   R   t   _repo(   R   R   t   pathR@   R   t   repot   filelog2(    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR   }   s
    c         C   s   |  j  j | ƒ d  S(   N(   RG   t   file(   R   t   f(    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt   _file„   s    (   R<   R=   R   RM   (    (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRE   |   s   	t	   unionpeerc           B   s   e  Z d  „  Z RS(   c         C   s   t  S(   N(   t   False(   R   (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt   canpushˆ   s    (   R<   R=   RP   (    (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRN   ‡   s   t   unionrepositoryc           B   st   e  Z d  „  Z e j d „  ƒ Z d „  Z e j d „  ƒ Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z RS(
   c         C   sj   t  j j |  | | ƒ |  j j d d t ƒ d t j | ƒ t j | ƒ f |  _ t  j | | ƒ |  _	 d  S(   Nt   phasest   publishs   union:%s+%s(
   t	   localrepot   localrepositoryR   t   uit	   setconfigRO   t   utilt
   expandpatht   _urlt   repo2(   R   RV   RH   t   path2(    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR   Œ   s
    c         C   s   t  |  j |  j j ƒ S(   N(   R>   t   sopenerR[   (   R   (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR?   ”   s    c         C   s%   |  j  j j | ƒ } |  j j | ƒ S(   s?   map from repo2 changelog rev to temporary rev in self.changelog(   R[   R?   R   R   (   R   R   R   (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt   _clrev˜   s    c         C   s   t  |  j |  j j |  j ƒ S(   N(   RB   R]   R[   R^   (   R   (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRC      s    c         C   s   |  j  S(   N(   RZ   (   R   (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt   url¢   s    c         C   s"   t  |  j | |  j j |  j |  ƒ S(   N(   RE   R]   R[   R^   (   R   RL   (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRK   ¥   s    c         C   s   |  j  j ƒ  d  S(   N(   R[   t   close(   R   (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR`   ©   s    c         C   s   t  S(   N(   RO   (   R   (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt   cancopy¬   s    c         C   s
   t  |  ƒ S(   N(   RN   (   R   (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt   peer¯   s    c         C   s
   t  j ƒ  S(   N(   t   ost   getcwd(   R   (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRd   ²   s    (   R<   R=   R   RT   t   unfilteredpropertycacheR?   R^   RC   R_   RK   R`   Ra   Rb   Rd   (    (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRQ   ‹   s   							c         C   sJ  | r t  j t d ƒ ƒ ‚ n  |  j d d d ƒ } | sf t j t j ƒ  ƒ } | d  k rf d } qf n  | rÇ t j ƒ  } | | k r d } qÇ t j	 j
 | d ƒ } | j | ƒ rÇ | t | ƒ } qÇ n  | j d ƒ r-| j d d ƒ d j d d ƒ } t | ƒ d k r| | d	 } } q:| \ } } n | | } } t |  | | ƒ S(
   Ns"   cannot create new union repositoryt   bundlet   mainreporootR+   s   union:t   :i   t   +i    (   RX   t   AbortR   t   configt   cmdutilt   findrepoRc   Rd   R   RH   t   joint
   startswithR   t   splitRQ   (   RV   RH   t   createt
   parentpatht   cwdt   st   repopatht	   repopath2(    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt   instanceµ   s*    	"(   t   __doc__R   R    t   i18nR   Rc   RX   R'   Rl   R   RT   R?   RC   RF   R   R   R>   RB   RE   t	   localpeerRN   RU   RQ   Rw   (    (    (    s7   /sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt   <module>   s   0<Y*