�
Hq�Qc @ s{ d d l m Z m Z m Z m Z d d l Z d d l Z d d l Z d � Z d � Z d � Z
d e f d � � YZ d S( i����( t bint hext nullidt nullrevNc C s) d } | j r% d | | j f } n | S( s7 name of a branchcache file for a given repo or repoviews cache/branchheadss %s-%s( t
filtername( t repot filename( ( s9 /usr/lib64/python2.7/site-packages/mercurial/branchmap.pyt _filename s c
C s y8 | j t | � � } | j � j d � } | j � Wn t t f k
rR d SXy4| j d � j d d � } | d \ } } t | � t
| � } } d } t | � d k r� t | d � } n t d | d | d | � } | j
| � s� t d � � n x� | D]} } | sqn | j d d � \ } }
t j |
j � � }
| | k rct d
| � � n | j |
g � j t | � � qWWn� t k
r�� no t k
r} | j j rd } | j d k r�| d | j 7} n | d
7} | j j | | � n d } n X| S( Ns
i t i t tipnodet tiprevt filteredhashs tip differsi s node %s does not exists invalid branchheads caches (%s)s : %s
( t openerR t readt splitt closet IOErrort OSErrort Nonet popR t intt lent branchcachet validfort
ValueErrort encodingt tolocalt stript
setdefaultt appendt KeyboardInterruptt Exceptiont uit debugflagR t warn(
R t ft linest cachekeyt lastt lrevR t partialt lt nodet labelt instt msg( ( s9 /usr/lib64/python2.7/site-packages/mercurial/branchmap.pyR
sH
'
c sT | j } | j } | j j | � � g } � d k sF � j | � r� t | � � � d k r� t j j | � } | d k r� t � � q� | j
| � } | j � j � � | j j
| j
} | j � f d � | D� � q� n | j | j d � j d � � | r%� j | | � � j | � n � j | � s@t | � � � | j | j <d S( Nc 3 s$ | ] } | � j k r | Vq d S( N( R
( t .0t r( R( ( s9 /usr/lib64/python2.7/site-packages/mercurial/branchmap.pys <genexpr>M s t starti ( t changelogR t
_branchcachest getR R R
t repoviewt subsettableR t filteredt branchmapt copyt filteredrevst extendt revsR
t updatet writet AssertionError( R t clR R; t
subsetnamet subsett extrarevs( ( R( s9 /usr/lib64/python2.7/site-packages/mercurial/branchmap.pyt updatecache= s( # R c B sP e Z d Z d e e d d � Z d � Z d � Z d � Z d � Z
d � Z RS( s1 A dict like object that hold branches heads cachec C s5 t t | � j | � | | _ | | _ | | _ d S( N( t superR t __init__R R
R ( t selft entriesR R
R ( ( s9 /usr/lib64/python2.7/site-packages/mercurial/branchmap.pyRE X s c s� | j } | j s d Sd } t � f d � | j D� � } | r~ t j � } x | D] } | j d | � qT W| j � } n | S( sB build hash of revision filtered in the current cache
Tracking tipnode and tiprev is not enough to ensure validity of the
cache as they do not help to distinct cache that ignored various
revision bellow tiprev.
To detect such difference, we build a cache of all ignored revisions.
c 3 s$ | ] } | � j k r | Vq d S( N( R
( R. R/ ( RF ( s9 /usr/lib64/python2.7/site-packages/mercurial/branchmap.pys <genexpr>l s s %s;N( R1 R9 R t sortedt utilt sha1R< |