
    	^c_+                         d dl mZ d dlmZmZ d dlmZmZmZm	Z	m
Z
 ddlmZmZmZ d ZdZdZddZ G d	 d
ej                  Zd Zd ZdS )    )_)binhex)
bundlerepochangegrouperrormatchmdiff   )	constantsremotefilelogshallowutil   Nc              #     K   t          |t          j                  s0t          | |                              ||||          D ]}|V  d S t	          |          dk    r|                                V  d S t          j        ||j                  }|                    |d                   d         }|	                    d|           t          t	          |          dz
            D ]?}	||	         ||	dz            }}
 ||          }|                    |||
|          D ]}|V  @|                                V  d S )Nunitsr   r   )
isinstancer   supergrouplencloser   	sortnodesparentsinsertrange	nodechunk)clsselfnodelistrloglookupr   reordercpiprevcurrlinknodes                C/usr/lib/python3/dist-packages/hgext/remotefilelog/shallowbundle.pyshallowgroupr*      s\     dM788 sD!!''$e'LL 	 	AGGGG
8}}jjll$Xt|<<H 	Xa[!!!$AOOAq 3x==1$%%  a[(1q5/d6$<<dD(;; 	 	AGGGG	 **,,    c                   F     e Zd Z fdZddZ fdZd Z fdZd Z xZ	S )	shallowcg1packerc                     t          j        | j                  rd} t          t          |           j        ||||fi |S )NF)r   	isenabled_repor   r-   generate)r   
commonrevsclnodesfastpathlinkrevsourcekwargs	__class__s         r)   r1   zshallowcg1packer.generate7   sU     ,, 	$#O5u%t,,5&
 
<B
 
 	
r+   Nc                 6    t          t          | ||||          S )Nr   )r*   r-   )r   r   r    r!   r   r"   s         r)   r   zshallowcg1packer.group?   s&    dHdF%
 
 
 	
r+   c                    	 |\  }}}n# t           $ r |\  }}}}}	}
Y nw xY wt          j        | j                  r| j        t	          t
          j                  r?t
          j                            d           j        rt          j
        dd          g S |                     |          }|t          k    rt          fd|D                       } t          t          |           j        |g|R i |S )Ns   foos   cannot pull from full bundless   use `hg unbundle` instead)hintc                 >    g | ]}                     |          |S  )shallowmatch).0frepos     r)   
<listcomp>z2shallowcg1packer.generatefiles.<locals>.<listcomp>Z   s,    III1D4E4Ea4H4HIQIIIr+   )
ValueErrorr   r/   r0   r   r   bundlerepositoryfile_cgfilesposr   AbortshouldaddfilegroupsNoFileslistr   r-   generatefiles)r   changedfilesargsr6   	linknodesr2   r5   mfdictsr4   fnodesclrevsfilestosendr@   r7   s               @r)   rJ   zshallowcg1packer.generatefilesD   sO   	P,0)Iz66 	P 	P 	PKOHJ&&&&	P ,, 	:D$
 ;<< 
 +00v>>># +89    	226::Kg%%#IIIIIII    ;u%t,,:

 
 
#)
 
 	
s    !!c                    | j         }t          j        |          st          S |dk    s|dk    rt          S |dk    r5|j                            dd          }|dk    rt          S |dk    rt          S | j        pg }|dk    s|d	k    rCt          j	        |v rt          S |j        
                    t          d
                     t          S t          S )Ns   pushs   bundles   strips   remotefilelogs   strip.includefiless   locals   none   serves   pulls   pulling from a shallow repo
)r0   r   r/   AllFilesuiconfig
LocalFiles_bundlecapsr   BUNDLE2_CAPABLITYwarnr   rH   )r   r5   r@   cfgcapss        r)   rG   z$shallowcg1packer.shouldaddfilegroupsa   s    z$T** 	OW) 3 3O X'..!13HIICh!!%2X7!2!2*d22!! Q?@@AAAr+   c                 :   t          |t          j                  s*t          t          |                               |||          S | j        }g }|D ]I}|                    |j        |          }|                                |vr|	                    |           J|S )N)fileid)
r   r   r   r-   pruner0   filectxfilenamelinkrevappend)	r   r    missingr2   r@   resultsfnodefctxr7   s	           r)   r_   zshallowcg1packer.prune   s    $ ;<< 	)40066gz   z 	& 	&E<<e<<<D||~~Z//u%%%r+   c              #     K   d}||j         k    r7|                    |          }t          j        t	          |                    }n|                    ||          }|                    |          \  }}|                    |          }	|                     ||||||	          }
|
|z  }
t	          |
          t	          |          z   }t          j
        |          V  |
V  |V  d S )Nr+   )nullidrawdatar
   trivialdiffheaderr   revdiffr   flagsbuilddeltaheaderr   chunkheader)r   revlognodeprevnoder(   prefixdeltap1p2rm   metals               r)   r   zshallowcg1packer.nodechunk   s      v}$$NN4((E,SZZ88FF NN8T22E%%BT""$$T2r8XuMMIIE

"%a(((((


r+   NN)
__name__
__module____qualname__r1   r   rJ   rG   r_   r   __classcell__)r7   s   @r)   r-   r-   6   s        
 
 
 
 

 
 
 


 
 
 
 
:  >          r+   r-   c                 t   t          j        |          s | ||||g|R i |S |j        }	 |dk    r|                    d          }d }	d }
|pg D ]}|                    d          r/|t          d          d          }|r|                    d          }	F|                    d          r.|t          d          d          }|r|                    d          }
|	s|
r#t          j        |j        dd |	|
          |_        nt          j	                    |_         | ||||g|R i |||_        S # ||_        w xY w)NrS   
bundlecapss   includepattern=    s   excludepattern=r+   )
r   r/   r=   get
startswithr   splitr	   rootalways)origr@   outgoingversionr5   rL   r6   originalr   includepatternexcludepatterncapraws                r)   makechangegroupr      s    && FtD(GVEdEEEfEEE H%XL11J!N!N!'R : :>>"455 :c"455778C :),5)9)9^^$677 :c"455778C :),5)9)9 3 3$)KIsD..% %!! %*LNN!tD(GVEdEEEfEE$H$$$$s   C:D. .	D7c           	        %&' t          j                  s | ||||g|R i |S d}t                      }	i 'g &j                            t          d          |          }
	 |                                }|sn|d         }j                            d|z             |
                                 	                    |          sA
                    |          }|                                }|                    |||           d }	 |                    |          }|snE|d         }|'||f<   &                    ||f           ||	vr|dz  }|	                    |           ]|!t!          j        t          d                    ,t                      %%&'fd	}d}g }&D ]a\  }}'||f         }|d         |d
         |d         g}|D ]8}|j        k    s||f'v r|                    |t'          |          f           9bj                            |           &r&                    d          \  }}||f%v r"|dz  }|t/          &          dz   k    r!t!          j        t          d                    
                    |          }'||f         }|\	  }}}}}}}}} |||||          s|                    |          }t3          j        ||          } t7          | t8                    st9          |           } t          j        |           \  }!} d|!v r-|!d         }"t=          |!d                   }# ||||"|#          s.||fD ]}$|$j        k    r |||||$          s|                    | |!||||           %                    ||f           d}&|
                                 t/          '          |fS )Nr   s   files)totalTs   filenames   adding %s revisions
r   s#   received file revlog group is emptyc                     |j         k    r@||fvr:||fvrdS                     d| |f                               d||f           dS dS )NTr   F)ri   r   )r?   rq   depfdepnode	processedqueuer@   revisiondatass       r)   	availablez&addchangegroupfiles.<locals>.available   sn    dk!!tWoY&F&F'?m33 tLLQI&&&LLT7O,,,5tr+   r      s   circular node dependencys   copys   copyrev) r   r/   setrU   makeprogressr   filelogheaderdebug	incrementr=   rD   	deltaiteraddgroup
deltachunkrc   addr   rF   ri   r   fileserviceprefetchpopr   rj   r
   patchr   bytes	parsemetar   complete)(r   r@   r5   revmaptrpexpectedfilesrL   r6   newfilesvisitedprogress	chunkdatar?   fldeltaschainrevisiondatar   	skipcountprefetchfilesrq   
dependents	dependentru   rv   r(   	deltabasert   rm   sidedataproto_flagsbasetextrw   copyfromcopynoder$   r   r   r   s(    `                                   @@@r)   addchangegroupfilesr      s     && OtD&&#}NtNNNvNNNHeeGME w##AhKK}#EEH)I((**	 	k".2333  ## 	1B%%''FKK,,,	 ",,U33L  OE(4M1e*%LL!U$$$AA/	2 =+a FGGHHHS)IV I        I M 6 64$aY/"1o|AQH
# 	6 	6IDK''Ay>]+J+J  !S^^!45555	6
 	m,,,  /))A,,4t9	!!Q	s5zzA~%%+a ;<<===YYq\\$aY/ 
	
 yD!Y// 	zz)$${4''$&& 	;;D *400
dd??G}H4
+,,H9Qh99 b 	 	ADK yD!Q// 
tT3"b111q$i   	_  /b }x''r+   ry   )mercurial.i18nr   mercurial.noder   r   	mercurialr   r   r   r	   r
    r   r   r   rH   rW   rT   r*   cgpackerr-   r   r   r<   r+   r)   <module>r      s1         # # # # # # # #                       
   4g g g g g{+ g g gT% % %>R( R( R( R( R(r+   