
    	^cR-                        d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZ dZdZdZdZd	Zd
ZdZdZdZdZ ej        e          Z ej        e          Z	 	 	 	 ddZd Z d Z! ej"        eeef          d             Z# ej"        e          d             Z$ ej"        e          d             Z%d Z&d Z'dS )    N)_)bundle2changegrouperrorexchange	localrepo
narrowspecrepairrequirementsscmutilutilwireprototypes)
stringutils	   narrowacls   narrow:changespecs   narrow:responsespecs   narrow:specs   includes   excludes   KILLs   DONEs   >20s20s20sls   >20s20s20s20slc                    j                             dd          sJ |                    d          }fd|D             }|st          t	          d                    t          |          }	t          t          t          |                    dg                               }
t          t          t          |                    dg                               }t          | |
||	|||                    dd                      d S )	N   experimental   narrowservebrokenellipses   changegroupc                 @    g | ]}|t          j                  v |S  )r   supportedoutgoingversions).0vrepos     </usr/lib/python3/dist-packages/hgext/narrow/narrowbundle2.py
<listcomp>z3getbundlechangegrouppart_narrow.<locals>.<listcomp>7   s9       5d;;;; 	
;;;    s   no common changegroup versionincludepatsexcludepatsdepth)
ui
configboolget
ValueErrorr   maxsortedfilterboolgenerateellipsesbundle2)bundlerr   source
bundlecapsb2capsheadscommonkwargs
cgversionsversionincludeexcludes    `          r   getbundlechangegrouppart_narrowr4   *   s    7o/KLLLLLN++J     J
  >;<<===*ooGVD&**]B"?"?@@AAGVD&**]B"?"?@@AAG

7D!!	 	 	 	 	r   c           	         t          j        |j        ||          }|9t          |          }|dk     r$t	          j        t          d          |z            t          |p|                                          }t          |p|j	        g          }t          j        |||t                      ||          \  }	}
}|j                            dt          |
          z             |	rt          j        |||d|d u||
          }|                    ||	dd	          }|                     d
|          }|                    d|           t)          j        |          r|                    dd           d S d S d S )N)r2   r3      s   depth must be positive, got %d)r   s   Found %d relevant revs
Tmatcherellipsesshallowellipsisroots	fullnodesF   narrow_widenr   data   version   treemanifest   1)r	   matchrootintr   Abortr   setr-   nullidr   _computeellipsisr    debuglenr   
getbundlergeneratenewpartaddparamr   istreemanifest)r)   r   r2   r3   r1   r.   r-   r   rC   
visitnodesrelevant_nodesr;   packercgdataparts                  r   r(   r(   N   s    TYIIIEE

199+a ABBUJKKK%&&E(DK=))F080IfeSUUE1 1 1-J 	GMM-N0C0CCDDD 1'%'$
 
 
 UOLL~F;;j'***!$'' 	1MM/4000001 1	1 	1r   c           	         t          |pj        g          }fd|D             }|fd}|                     t           |                       t	          j        t                      |||          \  }	}
}|	rt          j        ||dd||
          }|                    ||	dd          }|                     d|          }|	                    d	|           t          j                  r|	                    d
d           d S d S d S )Nc                 D    h | ]}j                             |          S r   )	changelogrev)r   nr   s     r   	<setcomp>z9generate_ellipses_bundle2_for_widening.<locals>.<setcomp>   s)    6661##A&&666r   c               3   r   K   D ]'} t           V  j                            |           V  (t          V  d S N)_KILLNODESIGNALrX   node_DONESIGNAL)rdeadrevsr   s    r   genkillsz8generate_ellipses_bundle2_for_widening.<locals>.genkills   sS       	) 	)A!!!!.%%a((((((r   r>   TFr7   r=   r   r@   rA   rB   )rG   rH   rN   _CHANGESPECPARTr   rI   r   rL   rM   rO   r   rP   )r)   r   oldmatchnewmatchr1   r.   known	knownrevsrc   newvisitnewfullnewellipsisrS   rT   rU   rb   s    `             @r   &generate_ellipses_bundle2_for_wideningrl   x   s[    (DK=))F" 7666666I
 H      OOO((**O555%-%>ceeVY& &"Hg{  1'%
 
 
 5/JJ~F;;j'***!$'' 	1MM/4000001 1	1 	1r   c                 n   t          |j                            t          d                                                    }t          |j                            t
          d                                                    }t          j        |           t          j        |           t          j	        | j
        j        vrB| j
        j                            t          j	                   t          j        | j
                   | j
                            ||           t          j        | j
                   d S )Nr   )rG   paramsr"   _SPECPART_INCLUDE
splitlines_SPECPART_EXCLUDEr	   validatepatternsr   NARROW_REQUIREMENTr   addr   writereporequirementssetnarrowpatscopytoworkingcopy)opinpartr   r   s       r   _handlechangespec_2rz      s     fm''(93??JJLLMMKfm''(93??JJLLMMK,,,,,,*bg.BBB
  !@AAA%bg...G+{333 )))))r   c                 N   |                                 }|                    d          \  }}t          |                                          }t          |                                          }t	          j        |           t	          j        |           t          j        | j        j        vrB| j        j        	                    t          j                   t          j        | j                   | j                            ||           t	          j        | j                   d S )N    )readsplitrG   rp   r	   rr   r   rs   r   rt   r   ru   rv   rw   )rx   ry   r?   incexcr   r   s          r   _handlenarrowspecsr      s    ;;==Dzz%  HCcnn&&''Kcnn&&''K,,,,,,&bg.BBB
  !@AAA%bg...G+{333 )))))r   c                 d   | j         }|j        }t                      }t          j        |d          }|t
          k    r|t          k    r@t          j        |d          }|                    |          r|                    |           n$t          j
        t          d          |z            t          j        |d          }|t
          k    |r|j        | _         G d dt                    }t          j        j                            | |                       t#          j        | j        |t)          |          dd          }|r>|j                                        | _        | j                                         || _        t3          j        |d	          r|                                 d S d S )
N      s)   unexpected changespec node chunk type: %sc                       e Zd Zd ZdS )'_handlechangespec.<locals>.dummybmstorec                     d S r]   r   )selfr   trchangess       r   applychangesz4_handlechangespec.<locals>.dummybmstore.applychanges   s    r   N)__name__
__module____qualname__r   r   r   r   dummybmstorer      s#            r   r   Ts   widen)backuptopicsetnewnarrowpats)r   rX   rG   r   readexactlyr`   r^   hasnodert   r   rF   r   
_bookmarks_bookmarksbackupdictr   localrepositoryr
   stripr    listuninterruptible_widen_uninterr	__enter___widen_bundler   safehasattrr   )	rx   ry   r   clclkillschunksignalckr   	chgrpfiles	            r   _handlechangespecr      s   7D	B
 eeG )&!44K

$
$/))(44Bzz"~~  B+>??+M   "-fa88 
$
$  )"o	 	 	 	 	4 	 	 	 	!,00||~~FFFLE4gt8
 
 
	  	)!%!8!8!:!:B((***(B
 011     r   c           	         | j         }| j        }| j        }| `|j        }|                    t          d                     |                    |d          }	 t          j        ||||          }|j	        s|
                                nt          j                    }|5  t          |t          j                  rG|                    d          5 t          j        ||fd           ddd           n# 1 swxY w Y   n.|                    |dd|                    |          z   d           ddd           n# 1 swxY w Y   |                                 n# |                                 w xY w|                                D ]\  }	}
	 |	                    |
           # t.          $ rk}|j        t0          j        k    rL|                    t          d          |	                    |
          t7          j        |          fz             Y d}~d}~ww xY w| j                            ddd           |                    |           dS )	zFChangegroup exchange handler which restores temporarily-stripped nodess   adding branch
s   rbs   stripc                       S r]   r   )r   s   r   <lambda>z)handlechangegroup_widen.<locals>.<lambda>!  s    R r   Ns   bundle:Ts   error removing %s: %s
)r   r    r   vfsnoter   openr   
readbundleverbosesilentr   nullcontextmanager
isinstancer   
unbundle20transactionprocessbundleapplyjoinclose	undofilesunlinkOSErrorerrnoENOENTwarnr   forcebytestrr   __exit__)rx   ry   r   r    r   r   fgenmaybe_silentundovfsundofileer   s               @r   handlechangegroup_widenr     s    7D	B I

(CGGA !!"""E""A!"aC88  "zHBIIKKKt/F/H/H 	  	 	#w122 %%h// A2)$ZZZZ@@@A A A A A A A A A A A A A A A 		(J)1D1D$Dd  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
								 "^^--  	NN8$$$$ 	 	 	w%,&&011||H--z/Fq/I/IJK  	 dD111JJysn   AE  0D<C6*D<6C:	:D<=C:	>2D<0E <E  E E E E2F%%
H/A!HHc                     t           j        } d| d<   d| d<   d| d<   d| d<   d| d<   t          j        d	         fd
}|t          j        d	<   t          j        d	         fd}j        |_        |t          j        d	<   dS )z?Enable narrow repo support in bundle2-related extension points.s   booleans   narrows   plains   depths   csvs   oldincludepatss   oldexcludepatss   knownr   c                     | d         }|j                             t                    rt          j        ||          }|                    dd          r)|j                             dd          rt          | i | d S  | i | d S )Nr6   narrowFr   r   )r    has_section_NARROWACL_SECTIONr   applynarrowaclr"   r!   r4   )argsr/   r   origcgfns      r   wrappedcgfnzsetup.<locals>.wrappedcgfnF  s    Aw7122 	;,T6::F::h&& 	&47+=+=9,
 ,
 	& ,T<V<<<<<Hd%f%%%%%r   c                      | |           t          j        | d          rt          | |           t          j        | d          r3t          j        j                            | j        | j                   | `d S d S )Nr   r   )	r   r   r   r   r   r   rG   r   r   )rx   ry   origcghandlers     r   wrappedcghandlerzsetup.<locals>.wrappedcghandlerW  s    b&!!!B00 	0#B///B 233 	$%044,   ###		$ 	$r   N)r   GETBUNDLE_ARGUMENTSr   getbundle2partsmappingr   parthandlermappingrn   )getbundleargsr   r   r   r   s      @@r   setupr   9  s    "6M)M)&M('-M#$'-M#$$M( .~>H
& 
& 
& 
& 
& 7BH#N3 .~>M$ $ $ $ $ ,21AG~...r   )NNNN)(r   structmercurial.i18nr   	mercurialr   r   r   r   r   r	   r
   r   r   r   r   mercurial.utilsr   r   rd   	_RESSPECS	_SPECPARTro   rq   r^   r`   _ELIDEDCSHEADER_ELIDEDMFHEADERcalcsize_CSHEADERSIZE_MFHEADERSIZEr4   r(   rl   parthandlerrz   r   r   r   r   r   r   r   <module>r      s                                    ' & & & & &! &"		   #0000 
! ! ! !H'1 '1 '1T:1 :1 :1z Y!24E FGG* * HG*" Y* *  * _%%0  0  &%0 f+ + +\)B )B )B )B )Br   