
    	^c"                         d dl mZ d dlmZ d dlmZmZ d dlmZm	Z
 d dlmZ d dlmZmZ  e
j        ej                   G d d                      Z G d	 d
e          ZdS )   )_)nullrev)errorrevlog)
repositoryutil)storageutil)	constantsrewritec                      e Zd Zd Zd Zd Zd Zd&dZd Zd	 Z	d
 Z
d Zd Zd Zd Zd Zd'dZd Zd Zd(dZd(dZdddej        dfdZdej        dfdZ	 	 	 d)dZd Zd Zd*dZd Zd Z d'dZ!d  Z"d! Z#d" Z$d# Z%	 	 	 	 	 d+d$Z&d% Z'dS ),filelogc                    t          j         |t          j        |fd                    d|f          dd          | _        || j        _        | j        j        | _        |j        }|                    dd          | _	        d S )N   /s   dataTF)targetradix
censorablecanonical_parent_orders   issue6528.fix-incoming)
r   revlog_constantsKIND_FILELOGjoin_revlogfilenamenullidoptionsget_fix_issue6528)selfopenerpathoptss       3/usr/lib/python3/dist-packages/mercurial/filelog.py__init__zfilelog.__init__   s}    }$148))WdO,,#(
 
 
 !%l)~"hh'@$GG    c                 *    t          | j                  S N)lenr   r   s    r!   __len__zfilelog.__len__,   s    4<   r#   c                 4    | j                                         S r%   )r   __iter__r'   s    r!   r*   zfilelog.__iter__/   s    |$$&&&r#   c                     || j         t          fv rdS 	 | j                            |           dS # t          t
          t          t          j        f$ r Y dS w xY w)NFT)	r   r   r   rev	TypeError
ValueError
IndexErrorr   LookupErrorr   nodes     r!   hasnodezfilelog.hasnode2   sg    DK)))5	LT"""4:z53DE 	 	 	55	s   0 "AA    Nc                 :    | j                             ||          S )N)startstop)r   revsr   r6   r7   s      r!   r8   zfilelog.revs<   s    |  u4 888r#   c                 6    | j                             |          S r%   )r   parentsr1   s     r!   r;   zfilelog.parents?   s    |##D)))r#   c                 6    | j                             |          S r%   )r   
parentrevsr   r,   s     r!   r=   zfilelog.parentrevsB       |&&s+++r#   c                 6    | j                             |          S r%   )r   r,   r1   s     r!   r,   zfilelog.revE   s    |%%%r#   c                 6    | j                             |          S r%   )r   r2   r>   s     r!   r2   zfilelog.nodeH   s    |  %%%r#   c                 L    t          j        | j        || j        j                  S r%   )r	   fileidlookupr   
display_idr1   s     r!   lookupzfilelog.lookupK   s%    'L$ 7
 
 	
r#   c                 6    | j                             |          S r%   )r   linkrevr>   s     r!   rG   zfilelog.linkrevP   s    |##C(((r#   c                 8    | j                             ||          S r%   )r   commonancestorsheads)r   node1node2s      r!   rI   zfilelog.commonancestorsheadsS   s    |00>>>r#   c                 6    | j                             |          S r%   )r   descendants)r   r8   s     r!   rM   zfilelog.descendantsW   s    |''---r#   c                 8    | j                             ||          S r%   )r   headsr9   s      r!   rO   zfilelog.headsZ   s    |!!%...r#   c                 6    | j                             |          S r%   )r   childrenr1   s     r!   rQ   zfilelog.children^   s    |$$T***r#   c                 6    | j                             |          S r%   )r   
iscensoredr>   s     r!   rS   zfilelog.iscensoreda   r?   r#   c                 :    | j                             ||          S N)_df)r   revisionr   r2   rV   s      r!   rW   zfilelog.revisiond   s    |$$Ts$333r#   c                 :    | j                             ||          S rU   )r   rawdatarX   s      r!   rZ   zfilelog.rawdatag   s    |##Dc#222r#   Fc                 B    | j                             ||||||          S )N)
nodesorderrevisiondataassumehaveparentrevisions	deltamodesidedata_helpers)r   emitrevisions)r   nodesr\   r]   r^   r_   r`   s          r!   ra   zfilelog.emitrevisionsj   s5     |))!%&?- * 
 
 	
r#   c	           
      F    | j                             ||||||||          S )N)r2   flags
cachedelta)r   addrevision)	r   r]   transactionrG   p1p2r2   rd   re   s	            r!   rf   zfilelog.addrevision|   s;     |''! ( 	
 	
 		
r#   c                 0   |r!t          j        t          d                    | j                            |          5  | j        rt          j        | j        |          }| j                            |||||          cd d d            S # 1 swxY w Y   d S )Ns:   revlog storage does not support missing parents write mode)addrevisioncbduplicaterevisioncb)	r   Abortr   r   _writingr   r   filter_delta_issue6528addgroup)r   deltas
linkmapperrg   rk   rl   maybemissingparentss          r!   rp   zfilelog.addgroup   s      	+*    \"";// 	 	" N 7fMM<((+$7 )  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A BBBc                 6    | j                             |          S r%   )r   getstrippoint)r   minlinks     r!   ru   zfilelog.getstrippoint   s    |))'222r#   c                 8    | j                             ||          S r%   )r   strip)r   rv   rg   s      r!   rx   zfilelog.strip   s    |!!';777r#   r#   c                 <    | j                             |||          S )N)	tombstone)r   censorrevision)r   trr2   rz   s       r!   r{   zfilelog.censorrevision   s    |**2ty*IIIr#   c                 4    | j                                         S r%   )r   filesr'   s    r!   r~   zfilelog.files   s    |!!###r#   c                 P    t          j        |                     |                    S r%   )r	   filtermetadatarW   r1   s     r!   readzfilelog.read   s    )$--*=*=>>>r#   c                     |s|                     d          rt          j        ||          }|                     |||||          }|                     |          S )Ns   
)
startswithr	   packmetarf   r2   )r   textmetarg   linkrh   ri   r,   s           r!   addzfilelog.add   sZ     	44??7++ 	4'd33Dt[$B??yy~~r#   c                 ,    t          j        | |          S r%   )r	   filerevisioncopiedr1   s     r!   renamedzfilelog.renamed   s    -dD999r#   c                     |                      |          }|                     |          rdS |                     |          r"t          |                     |                    S | j                            |          S )z#return the size of a given revisionr4   )r2   rS   r   r&   r   r   size)r   r,   r2   s      r!   r   zfilelog.size   sp     yy~~??3 	1<< 	(tyy''' |  %%%r#   c                 0    t          j        | ||           S )zpcompare text with a given file revision

        returns True if text is different than what is stored.
        )r	   filedataequivalentr   r2   r   s      r!   cmpzfilelog.cmp   s    
 1$dCCCCr#   c                 6    | j                             |          S r%   )r   verifyintegrity)r   states     r!   r   zfilelog.verifyintegrity   s    |++E222r#   c                 @    | j                             |||||          S )N)exclusivefilessharedfilesrevisionscounttrackedsize
storedsize)r   storageinfo)r   r   r   r   r   r   s         r!   r   zfilelog.storageinfo   s2     |'')#)#! ( 
 
 	
r#   c                     t          |t                    sd}||z  }t          j        |           | j        j        ||j        fi |S )Ns#   expected filelog to clone(), not %r)
isinstancer   r   ProgrammingErrorr   clone)r   r|   
destrevlogkwargsmsgs        r!   r   zfilelog.clone   sV    *g.. 	.8C:C(---!t|!"j&8CCFCCCr#   )r4   N)NNr%   )NNF)r#   )FFFFF)(__name__
__module____qualname__r"   r(   r*   r3   r8   r;   r=   r,   r2   rE   rG   rI   rM   rO   rQ   rS   rW   rZ   r   CG_DELTAMODE_STDra   r   REVIDX_DEFAULT_FLAGSrf   rp   ru   rx   r{   r~   r   r   r   r   r   r   r   r    r#   r!   r   r      s       H H H ! ! !' ' '  9 9 9 9* * *, , ,& & && & &
 
 

) ) )? ? ?. . ./ / / /+ + +, , ,4 4 4 43 3 3 3 "'-
 
 
 
2 )
 
 
 
6  !   <3 3 38 8 8J J J J$ $ $? ? ?   : : :& & &D D D3 3 3
 
 
 
 
"D D D D Dr#   r   c                   <     e Zd ZdZ fdZ fdZ fdZd Z xZS )narrowfilelogz0Filelog variation to be used with narrow stores.c                 h    t          t          |                               ||           || _        d S r%   )superr   r"   _narrowmatch)r   r   r   narrowmatch	__class__s       r!   r"   znarrowfilelog.__init__   s1    mT""++FD999'r#   c                     t          t          |                               |          }|r|                     |d                   sd S |S )Nr4   )r   r   r   r   )r   r2   resr   s      r!   r   znarrowfilelog.renamed  sM    M4((0066   	t((Q00 	4
r#   c                    |                      |          }t          t          |                               |          r"t	          |                     |                    S t          t          |                               |          S r%   )r2   r   r   r   r&   r   r   )r   r,   r2   r   s      r!   r   znarrowfilelog.size  sj     yy~~%%--d33 	8tyy'''--223777r#   c                     |                      |                     |                    r|dk    S |                     |          |k    S )Nr#   )rS   r,   r   r   s      r!   r   znarrowfilelog.cmp   sA     ??488D>>** 	3;yy$&&r#   )	r   r   r   __doc__r"   r   r   r   __classcell__)r   s   @r!   r   r      s        ::( ( ( ( (    ,8 8 8 8 8	' 	' 	' 	' 	' 	' 	'r#   r   N)i18nr   r2   r    r   r   
interfacesr   r   interfaceutilutilsr	   revlogutilsr
   r   r   implementerifilestorager   r   r   r#   r!   <module>r      sA                                          :233\D \D \D \D \D \D \D 43\D~/' /' /' /' /'G /' /' /' /' /'r#   