
    6h4                        S SK Jr  S SKrS SKrS SKJrJrJrJr  S SK	J
r
  S SKJrJrJrJrJrJr  S SKJr  SSKJrJrJrJrJrJr  SS	 jrSS
 jrSS jrS rS r S r!S r"S r#S r$S r%S r&S r'S r(g)    )annotationsN)binhexsha1nodeconstantsshort)_)errorfileloglockpycompatrevlogutil)hashutil   )	constantsdatapackfileserverclienthistorypackrepackshallowutilc           	        UR                  S5      n[        X5      u  pEnU R                  [        S5      U-  5        U R                  [        S5      U-  5        U R                  [        S5      [	        U5      -  5        U R                  [        S5      5        U R                  [        S5      S-  5        U/nU(       a  UR                  S5      nXh   u  ppU R                  [        S	5      [	        U5      [	        U	5      [	        U
5      [	        U5      U4-  5        U	[        R                  :w  a  UR                  U	5        U
[        R                  :w  a  UR                  U
5        U(       a  M  g g )
N
decompresss   size: %d bytes
s
   path: %s 
s	   key: %s 
   
s   %12s => %12s %13s %13s %12s
)s   nodes   p1s   p2s   linknodes   copyfromr   s   %s => %s  %s  %s  %s
)	getparsefileblobstatusr   r   popr   nullidappend)uipathoptsr   size	firstnodemappingqueuenodep1p2linknodecopyfroms                C/usr/lib/python3/dist-packages/hgext/remotefilelog/debugcommands.pydebugremotefilelogr-   '   s1   ,'J,T>DWIIa#$t+,IIa$&'IIa%	"234IIahII	
*+
;	<
 KE
yy|%,]"
		'(T{E"IuRy%/8LM	
 ")))LL")))LL %    c           
        [        [        R                  " U5      R                  5       5      n[        R
                  R                  U R
                  SU5      n/ n[        R                  " U5       H3  nSU;  d  M  UR                  U R                  U[        U5      S95        M5     [        US S9nU R                  S5      n[        R
                  R                  U5      (       a  [        R                  " U5        [        R                  " U R                   S5      n " S S	5      nU" 5       n	U H  n
U
R#                  5       U ;  a  M  U
R                  5       R%                  U
R'                  5       5      n0 nU
R)                  5       (       a5  U
R)                  5       S
   US'   [        U
R)                  5       S   5      US'   UR+                  U
R-                  5       XU
R/                  5       US
   US   5        M     U$ )Ns
   store/datas   _old)fileidc                "    U R                  5       $ N)linkrev)xs    r,   <lambda>!buildtemprevlog.<locals>.<lambda>N   s
    		r.   )keys   data/temprevlog.is
   temprevlogc                      \ rS rSrS rSrg)buildtemprevlog.<locals>.faketV   c                    g r2    )selfabcs       r,   add"buildtemprevlog.<locals>.faket.addW   s    r.   r<   N)__name__
__module____qualname____firstlineno__rA   __static_attributes__r<   r.   r,   faketr9   V   s    	r.   rH   r   s   copyr   s   copyrev)r   r   sha1digestosr!   joinlistdirr   filectxr   sortedsjoinexistsremover
   svfsr'   parentsfilenoderenamedrA   datar3   )repofilefilekeyfiledirfctxsrU   temppathrrH   tfctxpmetas                r,   buildtemprevlogrc   C   s   (--%,,./Gggll499mW=G EJJw'("LLd3x=AB ( 534E zz./H	ww~~h
		(		=1A  	A99;d"LLN""4==?3<<>> LLN1-DM"4<<>!#45D	diik4DLLNAaD!A$?  Hr.   c                V   UR                  S5      (       d]  UR                  S5      (       dG  UR                  S5      (       d1  [        R                  " U5      (       a  UR                  U5      (       d
  U " XU40 UD6$ [	        X#5      nUR                  SS5      nUS;  a"  [
        R                  " [        S5      U-  5      eUR                  5       R                  [        R                  -  nU(       a  SnOS	nUS:X  a  UR                  S
U-   S-   5        OUS:X  a  UR                  SU-   S-   5        U GH  n	UR                  U	5      n
U(       a   UR                  5       R                  U	5      nOUR                  5       R                  U	5      nUS:X  a   UR!                  U
5      nUR'                  SU	UR                  5       R)                  U	5      UR                  5       R+                  U	5      UUR-                  U	5      [/        U
5      [/        US   5      [/        US   5      4-  5        M  US:X  d  GM  UR1                  U	5      nUR'                  SU	UR                  5       R3                  U	5      UR                  5       R)                  U	5      UR                  5       R+                  U	5      UR                  5       R5                  U	5      UUR-                  U	5      US   US   [/        U
5      4
-  5        GM     g! ["         a    UR$                  UR$                  /n GN}f = f)z"dump the contents of an index file	changelogmanifestdirformatr   )r   r   s   unknown format %ds    deltas     bases      rev    offset  length s&    linkrev nodeid       p1           p2
r   s'      rev flag   offset   length     size s#      link     p1     p2       nodeid
s"   % 6d % 9d % 7d % 6d % 7d %s %s %s
s0   % 6d %04x % 8d % 8d % 8d % 6d % 6d % 6d % 6d %s
N)r   r   	isenabledshallowmatchrc   r	   Abortr   
get_revlog_format_flagsr   FLAG_GENERALDELTAwritenoi18nr'   deltaparent	chainbaserT   	Exceptionr   writestartlengthr3   r   
parentrevsflagsrawsize)origr    rX   file_r"   r^   rh   generaldeltabasehdrir'   baseppprs                 r,   
debugindexr   j   s    	88J88E??$$T**  ''Be,t,,$A XXh"FVkk!01F:;;<<>//&2J2JJL{
(72 6/ /	
 
1
#$'	
 vvay<<>--a0D<<>++A.DQ;0YYt_ HH6LLN((+LLN))!,IIaL$K"Q%L"Q%L	
 q[aBHHDLLN((+LLN((+LLN))!,LLN**1-IIaLqEqE$K5   0kk4;;/0s   L"L('L(c                   [         R                  " U5      (       d	  U " XU5      $ [        U[        R                  R                  U5      SS 5      nUR                  S5        U H  nUR                  U5      nUR                  U5      nUR                  SUR                  US   5      U4-  5        US   UR                  :w  d  Mb  UR                  SUR                  US   5      U4-  5        M     UR                  S5        g)z(dump an index DAG as a graphviz dot fileNs   digraph G {
s
   	%d -> %d
r   r   s   }
)r   ri   rc   rK   r!   basenamero   r'   rT   rs   revr   )ry   r    rX   rz   r^   r}   r'   r   s           r,   debugindexdotr      s      &&Be$$bgg..u5cr:;ANN#$vvayYYt_
AEE"Q%L!#445a5DKKHH_bea'889  HHVr.   c                   UR                  S5      n[        R                  " U5       H  u  pEnU H  nUS:X  a  M  [        R                  R	                  XG5      n[        X5      u  pnUR                  5        H  u  ppU[        R                  :X  d  M  [        R                  R                  XA5      n[        R                  " SUU5      nU R                  SU[        R                  R                  X5      4-  5        M     M     M     g )Nr   s   reposs   reponames   %s %s
)r   rK   walkr!   rL   r   valuesr   r   relpathr   getcachekeyr   )r    r!   r"   r   rootdirsfilesrY   filepathr#   r$   r%   r(   r)   r*   r+   
actualpathr7   s                     r,   verifyremotefilelogr      s    ,'JWWT]EDxww||D/H'4X'J$DW.5nn.>*0777!#!<J*66#ZC II"c277??8+J%KK /?  +r.   c                .    [         R                  " U 5      $ r2   )zlibr   )raws    r,   _decompressblobr      s    ??3r.   c                   [         R                  " U 5      nU(       a  [        U5      n[        R                  " U5      u  p4nX4-   nS n0 nU[        U5      :  af  UR                  SUS-   5      n	X&US-    n
U(       d  U
nX&S-   US-    nX&S-   US-    nX&S-   US-    nX&S-   U	 nXX4X'   U	S-   nU[        U5      :  a  Mf  XGU4$ )N    P      (   <   r   )r   readfiler   r   parsesizeflagslenindex)r!   r   r   offsetr#   rw   rt   r$   r%   dividercurrentnoder(   r)   r*   r+   s                  r,   r   r      s    
--
Cc"%44S9F%MEIG
#c(
))E52:.52:/#I"*-"*-
urz3
g. ";! #c(
 G##r.   c                  ^ ^^^^ U GHz  nSU;   a  US UR                  S5       nT R                  SU-  5        [        R                  " U5      nUR                  S5      nU(       a*  UR	                  S[        U5      5      n[        T U40 UD6    g UR                  S5      (       a	  [        nSmO[        nSmS mSmSmUUUUU 4S	 jn0 n	[        5       n
SnUR                  5        GHW  u  ppXU'   XZ;   a"  T R                  S
[        U5      -  5        US-  nU
R                  U5        UT:w  a  U" 5         US:X  a  SOUnT R                  SU-  5        T R                  SSR                  T5      SR                  T5      SR                  S5      SR                  S5      4-  5        UmSmSmUR                  X5      n[        R                   U;   a  U[        R                      nTU-  mTU-  mOSnT R                  SU" U5      U" U5      SU-  R                  S5      ["        R$                  " U5      4-  5        GMZ     Wb  U" 5         U['        T [        U
5      U	5      -  nUS:  d  GMg  T R)                  SU-  5          g   g )Ns   .datas   %s:
r'   r.   long*      r   c            	     F  > Tb  TR                  S5        T(       a  T(       d  g TT-
  n SS[        U 5      -  T-  U S:  a  SOS4-  nTR                  SSR                  S	T-  [	        S
5      -
  5      ST-  R                  S5      ST-  R                  S5      U4-  5        g )Nr   s
   %0.1f%% %sg      Y@r   s   smallers   biggers   Total:%s%s  %s (%s)
r.      s   Total:   %d   	   )rs   absro   ljustr   )
differencedeltastrhashlenlastfilenametotalblobsizetotaldeltasizer    s     r,   printtotals"debugdatapack.<locals>.printtotals  s    '!&7J$Z(=8)A~9( H
 NN(IIa'kC	N:;^+2226]*11!4	r.   s   Bad entry: %s appears twice
r   s   (empty name)s	   %s%s%s%s
   Node
   Delta Base   Delta Lengths	   Blob Sizer   s	   (missing)s   %s  %s  %s%s
r   s   %d failures
)r   rs   r   r   getdeltachainr   dumpdeltachainr   r   setiterentriesro   rA   r   getmetar   METAKEYSIZEr   bytestr_sanitycheck
warnnoi18n)r    pathsr"   r!   dpackr'   
deltachainhashformatterr   basesnodesfailuresfilename	deltabasedeltalennamerb   blobsizer   r   r   r   s   `                 @@@@r,   debugdatapackr      s   t.$**X./D
D!!!$'xx,,S#d)<J2z2T288FMG!MG	 	* 383D3D3F/HI#$K}?%+MNAIIdO<'*2c/xD)!g.%++G4'--b1$**1-	  ( !!" ==0D$$,	 5 56(*)'HH!!$'!),X%,,R0$$X.	? 4GR MLSZ77a<MM*X56{ r.   c                   SnU H  n[        5       nUnX&   nU[        R                  :w  a  Xq;  a.  U R                  S[	        U5      [	        U5      4-  5        US-  nO`Xu;   a.  U R                  S[	        U5      [	        U5      4-  5        US-  nO-UnUR                  U5        X&   nU[        R                  :w  a  M  [        R                  X$'   M     U$ )z
Does some basic sanity checking on a packfiles with ``nodes`` ``bases`` (a
mapping of node->base):

- Each deltabase must itself be a node elsewhere in the pack
- There must be no cycles
r   s,   Bad entry: %s has an unknown deltabase (%s)
r   s"   Bad entry: %s has a cycle (at %s)
)r   r   r   r   r   rA   )r    r   r   r   r'   seencurrentr   s           r,   r   r   a  s     HuN	,333%DT{E)$456 A :T{E)$456 AGHHWI' ,333, (..7 8 Or.   c                   [         nSnS nU H  u  pgphn	Xe:w  a  U R                  SU-  5        UnU R                  SSR                  U5      SR                  U5      SR                  U5      SR                  S5      4-  5        U R                  S	U" U5      U" U5      [        [        R                  " U	5      R                  5       5      [        U	5      4-  5        M     g )
Nr      
%s
s   %s  %s  %s  %s
r   r   s
   Delta SHA1r      s   %s  %s  %s  %d
)r   rs   r   r   rI   rJ   r   )
r    r   r"   r   r   r   r   r'   deltabasenodedeltas
             r,   r   r     s    MGL:D6#HHY)*#L
g&##G,##G,%%a(		
 	d#m,HMM%(//12E
		
 ;Er.   c           
        SU;   a  US UR                  S5       n[        R                  " U5      nS nUR                  5        H  nUu  pVpxpXS:w  ak  U R                  SU-  5        U R                  SSR	                  S5      SR	                  S5      SR	                  S5      SR	                  S5      S	4-  5        UnU R                  S
[        U5      [        U5      [        U5      [        U	5      U
4-  5        M     g )Ns   .histr   s   %s%s%s%s%s
r   r   s   P1 Nodes   P2 Nodes	   Link Nodes	   Copy Froms   %s  %s  %s  %s  %s
)r   r   r   rs   r   r   )r    r!   hpackr   entryr   r'   p1nodep2noder*   r+   s              r,   debughistorypackr     s    4*djj*+##D)EL""$=B:#HHY)*HHMM"%$$R($$R( &&r* 	 $L
#dffh		
 %r.   c                    [         R                  " [        R                  " U 5      SSS9    S S S 5        g ! , (       d  f       g = f)Ns
   repacklock)timeout)lockmodr   r   repacklockvfsrX   s    r,   debugwaitonrepackr     s-    	f**40-	L 
M	L	Ls	   6
Ac           
         U R                  U R                  SSS S [        S5      U R                  -  5          S S S 5        g ! , (       d  f       g = f)Ns   prefetchlockTs   prefetching in %s)_lockrS   r   origrootr   s    r,   debugwaitonprefetchr     sH    				
$--/
 	
 
 
s   A
A)returnNone)r   zfilelog.filelogr2   ))
__future__r   rK   r   mercurial.noder   r   r   r   mercurial.i18nr   	mercurialr	   r
   r   r   r   r   r   mercurial.utilsr    r   r   r   r   r   r   r-   rc   r   r   r   r   r   r   r   r   r   r   r   r<   r.   r,   <module>r      s    # 	     % 8$NL^"( $<^B%P
<
B
	r.   