
    q&f	,                     ~   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mZ dZdZdZdZdZd	Zd
ZdZdZdZ e j4                  e      Z e j4                  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%y)    N)_)bundle2changegrouperrorexchange	localrepo
narrowspecrepairrequirementsscmutiltransactionutilwireprototypess	   narrowacls   narrow:changespecs   narrow:responsespecs   narrow:specs   includes   excludes   KILLs   DONEs   >20s20s20sls   >20s20s20s20slc                    |j                   j                  dd      sJ |j                  d      }|D 	cg c]  }	|	t        j                  |      v r|	 }}	|st        t        d            t        |      }
t        t        t        |j                  dg                   }t        t        t        |j                  dg                   }t        | ||||
|||j                  dd              y c c}	w )N   experimental   narrowservebrokenellipses   changegroups   no common changegroup versionincludepatsexcludepatsdepth)ui
configboolgetr   supportedoutgoingversions
ValueErrorr   maxsortedfilterboolgenerateellipsesbundle2)bundlerreposource
bundlecapsb2capsheadscommonkwargs
cgversionsvversionincludeexcludes                </usr/lib/python3/dist-packages/hgext/narrow/narrowbundle2.pygetbundlechangegrouppart_narrowr/   )   s     77o/KLLLN+J 55d;; 	
J 
 ;<==*oGVD&**]B"?@AGVD&**]B"?@AG

7D!	s    C,c           	         t        j                  |j                  ||      }|1t        |      }|dk  r!t	        j
                  t        d      |z        t        |xs |j                               }t        |xs |j                  g      }t        j                  |||t               ||      \  }	}
}|j                  j                  dt        |
      z         |	rt        j                   |||d|d u||
      }|j#                  ||	dd	      }| j%                  d
|      }|j'                  d|       t)        j*                  |      r|j'                  dd       y y y )N)r,   r-      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"   r,   r-   r+   r'   r&   r   r>   
visitnodesrelevant_nodesr6   packercgdataparts                  r.   r    r    M   sB    TYYIEE
19++a ABUJKK%&E(DKK=)F080I0IfeSUE1-J 	GGMM-N0CCD''%'$
 UOL~F;j'*!!$'MM/40 (     c           	      (   t        |xs j                  g      }|D ch c]  }j                  j                  |       }}|fd}	| j	                  t
         |	              t        j                  t               |||      \  }
}}|
r~t        j                  ||dd||      }|j                  ||
dd      }| j	                  d|      }|j                  d|       t        j                        r|j                  d	d
       y y y c c}w )Nc               3   v   K   D ]'  } t          j                  j                  |        ) t         y wN)_KILLNODESIGNAL	changelognode_DONESIGNAL)rdeadrevsr"   s    r.   genkillsz8generate_ellipses_bundle2_for_widening.<locals>.genkills   s9      	)A!!..%%a((	) s   69r9   TFr2   r8   r   r;   r<   r=   )rB   rC   rV   revrI   _CHANGESPECPARTr   rD   r   rG   rH   rJ   r   rK   )r!   r"   oldmatchnewmatchr+   r'   knownn	knownrevsr[   newvisitnewfullnewellipsisrN   rO   rP   rZ   s    `              @r.   &generate_ellipses_bundle2_for_wideningrf   w   s    (DKK=)F" 1661##A&6I6
 H OOO(*O5%-%>%>ceVY&"Hg{ ''%
 5/J~F;j'*!!$'MM/40 ( # 7s   "Dc                    t        |j                  j                  t        d      j	                               }t        |j                  j                  t
        d      j	                               }t        j                  |       t        j                  |       t        j                  | j                  j                  vrR| j                  j                  j                  t        j                         t        j                  | j                         | j                  j                  ||       t        j                  | j                         y )NrQ   )rB   paramsr   _SPECPART_INCLUDE
splitlines_SPECPART_EXCLUDEr	   validatepatternsr   NARROW_REQUIREMENTr"   addr   writereporequirementssetnarrowpatscopytoworkingcopy)opinpartr   r   s       r.   _handlechangespec_2rt      s     fmm''(93?JJLMKfmm''(93?JJLMK,,**bgg.B.BB
  !@!@A%%bgg.GG+{3  )rQ   c                 j   |j                         }|j                  d      \  }}t        |j                               }t        |j                               }t	        j
                  |       t	        j
                  |       t        j                  | j                  j                  vrR| j                  j                  j                  t        j                         t        j                  | j                         | j                  j                  ||       t	        j                  | j                         y )N    )readsplitrB   rj   r	   rl   r   rm   r"   rn   r   ro   rp   rq   )rr   rs   r:   incexcr   r   s          r.   _handlenarrowspecsr{      s    ;;=Dzz% HCcnn&'Kcnn&'K,,&&bgg.B.BB
  !@!@A%%bgg.GG+{3  )rQ   c                 f   | j                   }|j                  }t               }t        j                  |d      }|t
        k7  r|t        k(  r9t        j                  |d      }|j                  |      r3|j                  |       n!t        j                  t        d      |z        t        j                  |d      }|t
        k7  r|r|j                  | _         G d dt              }t        j                   j                  j                  | |              t#        j$                  | j&                  |t)        |      dd      }|r@|j&                  j+                         | _        | j,                  j/                          || _        t3        |d	      r!| j5                          |j7                          y y )
N      s)   unexpected changespec node chunk type: %sc                       e Zd Zd Zy)'_handlechangespec.<locals>.dummybmstorec                      y rT    )selfr"   trchangess       r.   applychangesz4_handlechangespec.<locals>.dummybmstore.applychanges   s    rQ   N)__name__
__module____qualname__r   r   rQ   r.   dummybmstorer      s    rQ   r   Ts   widen)backuptopicsetnewnarrowpats)r"   rV   rB   r   readexactlyrX   rU   hasnodern   r   rA   r   
_bookmarks_bookmarksbackupdictr   localrepositoryr
   stripr   listuninterruptible_widen_uninterr	__enter___widen_bundlehasattrgettransactionr   )	rr   rs   r"   clclkillschunksignalckr   	chgrpfiles	            r.   _handlechangespecr      sb   77D	B
 eG ))&!4K

$/)((4Bzz"~B++>?+M  "--fa8 
$ "oo	4 	 	!!,,00|~FLLEE4gt8
	 !%!8!8!:B((*(B
 t'(
 )rQ   c           	        	 | j                   }| j                  }| j                  }| `|j                  }|j	                  t        d             |j                  |d      }	 t        j                  ||||      }|j                  s|j                         nt        j                         }|5  t        |t        j                        r5|j!                  d      5 	t        j"                  ||	fd       ddd       n&|j%                  |dd|j'                  |      z   d       ddd       |j)                          t!        j*                  |j                  j,                  |j.                         | j0                  j3                  ddd       |j5                  |       y# 1 sw Y   xY w# 1 sw Y   xY w# |j)                          w xY w)zFChangegroup exchange handler which restores temporarily-stripped nodess   adding branch
s   rbs   stripc                       S rT   r   )r   s   r.   <lambda>z)handlechangegroup_widen.<locals>.<lambda>!  s    R rQ   Ns   bundle:T)r"   r   r   vfsnoter   openr   
readbundleverbosesilentr   nullcontextmanager
isinstancer   
unbundle20r   processbundleapplyjoinclosecleanup_undo_fileswarnvfs_mapr   __exit__unlink)
rr   rs   r"   r   r   r   fgenmaybe_silentr   s
            @r.   handlechangegroup_widenr     sx    77D	B  I

((CGGA !"E"A!!"aC8  "zzBIIKt/F/F/H 	  	#w112%%h/ A2))$Z@A A 		(J)1D$Dd	 	
	""477<<> dD1JJyA A	 	 	
	s=   !A
F4 +,F(F2/F(!F4 F%	!F((F1-F4 4G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	<   y)z?Enable narrow repo support in bundle2-related extension points.s   booleans   narrows   plains   depths   csvs   oldincludepatss   oldexcludepatss   knownr   c                      | d   }|j                   j                  t              rt        j                  ||      }|j                  dd      r(|j                   j                  dd      rt        | i | y  | i | y )Nr1   narrowFr   r   )r   has_section_NARROWACL_SECTIONr   applynarrowaclr   r   r/   )argsr(   r"   origcgfns      r.   wrappedcgfnzsetup.<locals>.wrappedcgfn=  sr    Aw7712,,T6:F::h&477+=+=9,
 ,T<V<d%f%rQ   c                      | |       t        | d      rt        | |       t        | d      rAt        j                  j                  j                  | j                  | j                         | `y y )Nr   r   )r   r   r   r   r   rB   r"   r   )rr   rs   origcghandlers     r.   wrappedcghandlerzsetup.<locals>.wrappedcghandlerN  sb    b&!2'#B/2)*%%0044,, #	 +rQ   N)r   GETBUNDLE_ARGUMENTSr   getbundle2partsmappingr   parthandlermappingrh   )getbundleargsr   r   r   r   s      @@r.   setupr   0  s    "66M)M)&M('-M#$'-M#$$M( ..~>H
& 7BH##N3 ..~>M$ ,221AG~.rQ   )NNNN)&structmercurial.i18nr   	mercurialr   r   r   r   r   r	   r
   r   r   r   r   r   r   r]   	_RESSPECS	_SPECPARTri   rk   rU   rX   _ELIDEDCSHEADER_ELIDEDMFHEADERcalcsize_CSHEADERSIZE_MFHEADERSIZEr/   r    rf   parthandlerrt   r{   r   r   r   r   rQ   r.   <module>r      s        " &"		   #00 
!H'1T:1z Y!24E FG* H*" Y*  * _%1  &1 h"J)BrQ   