
    6h+                       S r SSKJ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JrJrJrJrJrJrJr  SSKJr   " S S	\R"                  5      r " S
 S\\R                  5      r " S S\\R4                  5      r " S S\R                  5      r " S S\R:                  5      r\r \RB                  (       a  \RD                  r  " S S\ 5      r#SS jr$S r%g)z~Repository class for "in-memory pull" of one local repository to another,
allowing operations like diff and log with revsets.
    )annotationsN   )_)	changelogcmdutilencodingerrorfilelog	localrepomanifestmdiffpathutilrevlogutilvfs)	constantsc                     ^  \ rS rSrSS jr\R                  U 4S j5       rU 4S jrU 4S jr	SU 4S jjr
SS\R                  SS4S jr     SS	 jrS
 rS rSrU =r$ )unionrevlog)   c                   [         R                  " U5      n[        USS 5      nUcG  [        U[        R                  [
        R
                  45      (       a   eUR                  R                  n[
        R
                  R                  XXRS9  X0l	        [        U 5      nUS-
  U l        [        5       U l        U R                   GHG  nU R                  R                  U   nUu  n	n
nnnnnnnnnnnU	S-  nUc
  X:X  d   eUnOU" U5      nUb  U" U5      nU R                  R                  U5      nUb  U R                  R!                  U5        M  U R                  R#                  U5      nU R                  R#                  U5      nUSUUUU R%                  U5      U R%                  U5      USS[&        R(                  [&        R(                  U4nU R                  R+                  U5        U R                  R!                  U5        US-  nGMJ     g )Ntarget)r   radixr   i  r   )vfsmodreadonlyvfsgetattr
isinstancer   r   _revlogr   __init__revlog2len
repotiprevset
bundlerevsindexget_revaddnoderevrevlog_constantsCOMP_MODE_INLINEappend)selfopenerr   r    
linkmapperr   nrev2r)   _start_csizersizebaselinkrevp1revp2revr(   _sdo_sds_dcm_sdcmrankflagslinkthis_revp1nodep2nodees                               5/usr/lib/python3/dist-packages/mercurial/unionrepo.pyr   unionrevlog.__init__*   s    ##F+(D1> "'I,?,?+OPPPP __++FtFHIa%%LLD,,$$T*C  VOE!&!'*%!$'zz))$/H###H-\\&&u-F\\&&u-F
    11 11A JJa OO"FAs !    c              #    >#    S[        U R                  5      s=::  a  [        U R                  5      :  a  O  O[        TU ]  nO[
        R                  nS[        U R                  5      :  a  U R                  R                  nO[
        R                  nU" 5          U" 5          S v   S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7f)Nr   )r!   r$   r%   superreadingr   nullcontextmanagerr    )r-   read_1read_2	__class__s      rD   rI   unionrevlog.reading}   s     DOO$6s4::6W_F,,Fs4??##\\))F,,FXvx  XXxxXXs6   BCC$B:)C1	C:
C	C
CCc                   > XR                   ::  a  [        TU ]  R                  U5      $ U R                  R                  U R                  U5      5      $ N)r"   rH   _inner_chunkr    r(   )r-   r)   rM   s     rD   rR   unionrevlog._chunk   s?    //!7>((--||""499S>22rF   c                  > XR                   :  a{  X R                   :  al  U R                  R                  U R                  R                  U R	                  U5      5      U R                  R                  U R	                  U5      5      5      $ XR                   ::  a  X R                   ::  a  [
        TU ]	  X5      $ [        R                  " U R                  U5      U R                  U5      5      $ )z1return or calculate a delta between two revisions)	r"   r    revdiffr)   r(   rH   r   textdiffrawdata)r-   rev1r1   rM   s      rD   rU   unionrevlog.revdiff   s    //!d__&<<<''  41  41  __$)@7?4..~~dll40$,,t2DEErF   c                  > [        U[        5      (       a  UnU R                  U5      nOUnU R                  U5      nX0R                  :  a.  [        U R                  SU R                  5      nUR                  nO
[        TU ]  nU" XBS9$ )Nr   )raw)	r   intr(   r)   r"   r   r    _revisiondatarH   )r-   	nodeorrevr[   r)   r(   r    funcrM   s          rD   r]   unionrevlog._revisiondata   st    i%%C99S>DD((4.C dllIt||DG((D7(DD""rF   Nc                    [         erP   NotImplementedError)r-   texttransactionr?   p1p2
cachedeltar(   r>   deltacomputersidedatas              rD   addrevisionunionrevlog.addrevision   s
     "!rF   c	                    [         erP   rb   )	r-   deltasr/   re   alwayscacheaddrevisioncbduplicaterevisioncb
debug_infodelta_base_reuse_policys	            rD   addgroupunionrevlog.addgroup   s
     "!rF   c                    [         erP   rb   )r-   minlinkre   s      rD   stripunionrevlog.strip       !!rF   c                    [         erP   rb   r-   s    rD   	checksizeunionrevlog.checksize   rz   rF   )r$   r"   r    )r.   z
typing.Any)F)FNNNN)__name__
__module____qualname____firstlineno__r   
contextlibcontextmanagerrI   rR   rU   r]   r   REVIDX_DEFAULT_FLAGSrk   rt   rx   r}   __static_attributes____classcell__)rM   s   @rD   r   r   )   su    Qf 
 
3

F#. ))"(   $""" "rF   r   c                      \ rS rSrS rSrg)unionchangelog   c                    [         R                   R                  X5        S n[         R                   " U5      n[        R                  XU R                  XC5        g rP   )r   r   r   r   )r-   r.   opener2r/   
changelog2s        rD   r   unionchangelog.__init__   sA    $$T2
((1
T4::zNrF    N)r   r   r   r   r   r   r   rF   rD   r   r      s    OrF   r   c                  0    \ rS rSr% S\S'   S\S'   S rSrg)	unionmanifest   r\   r"   zmanifest.manifestrevlogr    c                    [         R                  R                  XU5        [         R                  " X5      n[        R                  XU R                  R
                  XT5        g rP   )r   manifestrevlogr   r   r   r   )r-   nodeconstantsr.   r   r/   	manifest2s         rD   r   unionmanifest.__init__   sI     	((fE++MC	$,,,,i	
rF   r   N)r   r   r   r   __annotations__r   r   r   rF   rD   r   r      s    O$$
rF   r   c                  @    \ rS rSr% S\S'   S\S'   S\S'   S rS	 rS
rg)unionfilelog   r   r   r\   r"   zrevlog.revlogr    c                H   [         R                   R                  XU5        [         R                   " X25      n[        XR                  R                  UR                  U5      U l        XPl        U R                  R                  U l        U R                  R                  U l        g rP   )r
   r   r   r   r   _repor"   r    )r-   r.   pathr   r/   repofilelog2s          rD   r   unionfilelog.__init__   sp      t4??71"LL&&(8(8*
 
,,11||++rF   c                    XR                   ::  a  [        R                  R                  X5      $ U R                  U5      nU R                  R                  U R                  R                  U5      5      $ )z Check if a revision is censored.)r"   r
   
iscensoredr(   r    r)   )r-   r)   r(   s      rD   r   unionfilelog.iscensored   sR    //!??--d88yy~||&&t||'7'7'=>>rF   )r   r   r"   r    N)r   r   r   r   r   r   r   r   r   rF   rD   r   r      s    O,?rF   r   c                      \ rS rSrS rSrg)	unionpeer   c                    gNFr   r|   s    rD   canpushunionpeer.canpush       rF   r   N)r   r   r   r   r   r   r   rF   rD   r   r      s    rF   r   c                      \ rS rSrSrS r\R                  S 5       r\R                  S 5       r	S r
S rS rS	 rS
 rSS jrS rSrg)unionrepositoryi  zRepresents the union of data in 2 repositories.

Instances are not usable if constructed directly. Use ``instance()``
or ``makeunionrepository()`` to create a usable instance.
c                X    Xl         X l        U R                  R                  SSSS5        g )Ns   phasess   publishFs	   unionrepo)repo2_urlui	setconfig)r-   r   urls      rD   r   unionrepository.__init__  s$    
	)ZErF   c                V    [        U R                  U R                  R                  5      $ rP   )r   svfsr   r|   s    rD   r   unionrepository.changelog  s    dii99rF   c                    [        U R                  U R                  U R                  R                  U R	                  5       R
                  5      n[        R                  " U R                  XU R                  5       5      $ rP   )	r   r   r   r   
unfiltered_clrevr   manifestlognarrowmatch)r-   	rootstores     rD   r   unionrepository.manifestlog  s`    !IIJJOOOO$$	
	 ##IIt(8(8(:
 	
rF   c                    U R                   R                  R                  U5      nU R                  R                  U5      $ )z?map from repo2 changelog rev to temporary rev in self.changelog)r   r   r(   r)   )r-   r1   r(   s      rD   r   unionrepository._clrev$  s1    zz##((.~~!!$''rF   c                    U R                   $ rP   )r   r|   s    rD   r   unionrepository.url)  s    yyrF   c                    [        U R                  XR                  R                  U R                  5       R                  U 5      $ rP   )r   r   r   r   r   )r-   fs     rD   fileunionrepository.file,  s1    IIq**//4??+<+C+CT
 	
rF   c                8    U R                   R                  5         g rP   )r   closer|   s    rD   r   unionrepository.close1  s    

rF   c                    gr   r   r|   s    rD   cancopyunionrepository.cancopy4  r   rF   Nc                    [        U S US9$ )N)r   remotehidden)r   )r-   r   r   s      rD   peerunionrepository.peer7  s    D|DDrF   c                ,    [         R                  " 5       $ rP   )r   getcwdr|   s    rD   r   unionrepository.getcwd:  s      rF   )r   r   r   )r   r   r   r   __doc__r   r   unfilteredpropertycacher   r   r   r   r   r   r   r   r   r   r   rF   rD   r   r     se    F &&: ': &&	
 '	
(


E!rF   r   c                ^   U(       a  [         R                  " [        S5      5      eU R                  SS5      nU(       d.  [        R
                  " [        R                  " 5       5      nUc  SnU(       aW  [        R                  " 5       nXV:X  a  SnO:[        R                  " U5      nUR                  U5      (       a  U[        U5      S  nUR                  S5      (       a?  UR                  SS5      S   R                  SS5      n[        U5      S:X  a  XWS	   pOUu  pOXQp[        XU	5      $ )
Ns"   cannot create new union repositorys   bundles   mainreporootrF   s   union:   :r      +r   )r	   Abortr   configr   findrepor   r   r   normasprefix
startswithr!   splitmakeunionrepository)
r   r   createintents
createopts
parentpathcwdsrepopath	repopath2s
             rD   instancer   >  s    kk!ABCC9o6J%%hoo&78
J ooJ'',C$$S))'C
3
y!!JJtQ"((q1q6Q;",di"#Hi()rY77rF   c                (   [         R                  " XSS9n[         R                  " XSS9nS[        R                  " U5      [        R                  " U5      4-  n " S S[        UR
                  5      nUnXgl        [        R                  X4U5        U$ )z7Make a union repository object from 2 local repo paths.F)r   s   union:%s+%sc                      \ rS rSrSrg)3makeunionrepository.<locals>.derivedunionrepositoryig  r   N)r   r   r   r   r   r   rF   rD   derivedunionrepositoryr   g  s    rF   r   )r   r   r   
expandpathr   rM   r   )r   	repopath1r   repo1r   r   r   r   s           rD   r   r   ]  s    rU;ErU;E
	"	" C
%//  D+NU3/KrF   )NN)&r   
__future__r   r   typingi18nr    r   r   r   r	   r
   r   r   r   r   r   r   r   r   revlogutilsr   r*   r   r   r   r   r   	localpeerr   object_union_repo_baseclassTYPE_CHECKINGlocalrepositoryr   r   r   r   rF   rD   <module>r      s    #      
b"&-- b"JO[)"5"5 O
K!8!8 
?7?? ?.	## 
  	%555!+ 5!p8>rF   