
    6h<G                       S SK Jr  S SKrS SKrS SKrS SK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KJrJr  \\\\	\
\/(       d   eSr\R2                  (       a(  SS	KJrJrJrJrJr   SS
K!J"r#  SSK$J%r%  \\\\\ /(       d   e\\&\\&\&\&4   4   r'SS jr(SS jr) S             SS jjr* S           SS jjr+S r,SS jr-SS jr.  S       SS jjr/SS jr0g)     )annotationsN)AnyDictListOptionalSetTuple   )_)configerror	filemergepathutilphasesutil)
stringutilurlutil)    r   s   empty)context	localrepomatchsubrepoui)status)MatcherTc           
       ^ ^^^^ [         R                   " 5       mT R                  5       mSU UUUU4S jjmST ;   a  T" S5        TR                  S5       H(  u  p#TR                  SX#TR	                  SU5      5        M*     0 nST ;   af   [        T S   R                  5       R                  5       5       H7  u  pVUR                  5       nU(       d  M   UR                  SS5      u  prXtU'   M9     SU4S	 jjn0 n	TR!                  S
5       GHu  u  p#Sn
UR#                  S5      (       aN  SU;  a  [        R                  " [        S5      5      eUR                  SS5      u  pU
SS n
UR                  5       n[$        R&                  " U5      R)                  5       (       d  [+        TSS9nU(       a  [$        R&                  " U5      n[,        R.                  " UR0                  =(       d    S
U5      Ul        [,        R2                  " UR0                  5      Ul        [5        U5      nU" U5      nX:X  a	  U" U5      nOUnU" U5      nUR7                  5       UR9                  US
5      U
4U	[:        R<                  " U5      '   GMx     U	$ ! [         a7    [        R                  " [        S5      TR                  S5      US-   4-  5      ef = f! [         a     GNf = f)zreturn a state dict, mapping subrepo paths configured in .hgsub
to tuple: (source from .hgsub, revision from .hgsubstate, kind
(key in types dict))
Nc                :  > U T;   a(   TU    R                  5       nTR                  XXT5        g [        R                  " [        S5      TR	                  U 5      -  5      e! [         a/    TR                  [        S5      TR	                  U 5      -  5         g f = f)Ns*   warning: subrepo spec file '%s' not found
s    subrepo spec file '%s' not found)dataFileNotFoundErrorwarnr   pathtoparser   Abort)	fsectionsremapr   ctxpreadrepor   s	       7/usr/lib/python3/dist-packages/mercurial/subrepoutil.pyr)   state.<locals>.readT   s    81v{{} GGAXd3++784;;q>I  % FGkk!n% s   A! !6BB   .hgsub   subpaths   .hgsubstate    r
   s8   invalid subrepository revision specifier in '%s' line %dc           	       > TR                  S5       HJ  u  p[        R                  " U5      n[        R                  " SSU5      n [        R                  " XU SS9n ML     U $ ! [        R
                   aM  n[
        R                  " [        S5      TR                  SU5      [        R                  " U5      4-  5      eS nAff = f)Nr.   s   \\\\([0-9]+)s   \\\1r
   )counts#   bad subrepository pattern in %s: %s)
itemsr   	escapestrresubr   r#   r   sourceforcebytestr)srcpatternrepler(   s       r+   r&   state.<locals>.remap   s    WW[1MG ''-D 66*Hd;D	ffWCq9 2$ 
 88 kk<=g6"//2 s   A##C7AB??Cr   s   hg   [   ]s!   missing ] in subrepository sourceFabort)NN)r9   bytesreturnrB   )r   r*   configitemssetconfigsource	enumerater   
splitlineslstripsplit
ValueErrorr   r#   r   r!   r   r3   
startswithr   urlisabs
_abssource	posixpathjoinpathnormpathrB   stripgetr   pconvert)r'   r   rR   r9   revilrevisionr&   statekindparentjoinedremappedr(   r)   r*   s   ``            @@@r+   r[   r[   L   su   
 }}A88:D " CY^^K0		k4book4&HI 1 C	!#n"5":":"<"G"G"IJHHJ	%&WWT1%5NH %D	 K$* EWWS\	>>$3kk!$H"IJJ		$*ID8D**,C{{3%%''E2F V,'nnV[[-?CE'00=v !=%*C"CCj&)iik37743Et%LdmmD!"3 "6 L{ " ++;  ;;~6Q@	A  ! 		s,   AK J(K AKK 
KKc                    [        U5       Vs/ s H#  nX   S   [        S   :w  d  M  SX   S   U4-  PM%     nnU R                  SSR                  U5      S5        gs  snf )z=rewrite .hgsubstate in (outer) repo with these subrepo statesr
   s   %s %s
r/   r   N)sorted	nullstatewwriterQ   )r*   r[   sliness       r+   
writestaterf      sk     A8A;)A,& 	&
ehqk1%% 
 
 	KK5s
   AAc                	  ^  X#:X  a  UR                  5       nUR                  nUR                  nUR                  n0 n	T R                  R                  SXU4-  5        SU 4S jjn
[        R
                  " U5      n[        UR                  5       5       GH  u  pUR                  U[        5      nUnUR                  U5      R                  5       (       a  US   US   S-   4nX:X  a  UnUR                  5       nUUS'   X;   Ga  X|   nUU:X  d  UU:X  a  XU'   M  X:X  a1  U
" USU5        UR                  U5      R                  UU5        UX'   M  US   US   :w  ar  US   US'   US   US	'   T R                  R                  [        S
5      U-  S5      (       a2  U
" USU5        UR                  U5      R                  UU5        UX'   GM8  GM;  US   US   :X  a2  U
" USU5        UR                  U5      R                  UU5        UX'   GMy  U
" US5        UR                  U5      nUR                  US   5      US'   UR                  US   5      US'   T R                  R                  [        S5      U-  S5      nUS:X  a1  UR                  U5      R!                  U5        XU'   U
" USU5        GM   US:X  a  XU'   U
" USU5        GM7  UR                  U5      R                  UU5        UX'   U
" USU5        GMi  X:X  a+  U
" US5        UR                  U5      R#                  5         GM  U[        :X  a  U
" US5        XU'   GM  T R                  R                  [        S5      U-  S5      (       d  GM  U
" US5        UR                  U5      R#                  5         GM     [        UR                  5       5       H  u  nnX;   a  M  X;  a0  U
" USU5        UR                  U5      R                  U5        UX'   MB  UX   :w  d  ML  UR                  5       nUUS'   T R                  R                  [        S5      U-  S5      S:X  d  M  U
" USU5        UR                  U5      R                  U5        UX'   M     [%        T U	5        U	$ )zwdelegated from merge.applyupdates: merging of .hgsubstate file
in working context, merging context and ancestor contexts   subrepo merge %s %s %s
c                ^   > U(       a  SU-  nTR                   R                  SXU4-  5        g )Ns   %s:%s:%ss     subrepo %s: %s %s
)r   debug)rd   msgrr*   s      r+   ri   submerge.<locals>.debug   s)    aA.!!<=r   r   r
      +   ss   other changed, gets   los   ros    subrepository sources for %(s)s differ
you can use (l)ocal%(l)s source (%(lo)s) or (r)emote%(o)s source (%(ro)s).
what do you want to do?$$ &Local $$ &Remotes   prompt changed, gets   other side changed, gets   both sides changeds   sls   srs    subrepository %(s)s diverged (local revision: %(sl)s, remote revision: %(sr)s)
you can (m)erge, keep (l)ocal%(l)s or keep (r)emote%(o)s.
what do you want to do?$$ &Merge $$ &Local $$ &Remotes
   merge withs   keep local subrepo revisions   get remote subrepo revisions   remote removed, removes   local added, keepsz    local%(l)s changed subrepository %(s)s which remote%(o)s removed
use (c)hanged version or (d)elete?$$ &Changed $$ &Deletes   prompt removes   remote added, getsz    remote%(o)s changed subrepository %(s)s which local%(l)s removed
use (c)hanged version or (d)elete?$$ &Changed $$ &Deletes   prompt recreate)r   )p1substater   ri   r   
partextrasra   r3   rU   rb   r6   dirtycopypromptchoicer   shortidmergeremoverf   )r*   wctxmctxactx	overwritelabelss1s2sasmri   
promptssrcrd   rY   aldpromptsrk   srepooptions   `                   r+   submerger      s[    |wwy	B	B	B	BGGMM-T0BBC>
 %%f-Jrxxz"FF1i 88A;A$!t$B<A//#7AQw!q&1a.29-A!A$!"1!"177''0  
 
 !3Q7HHQKOOAy1BE
 A!A$a3Q79-a./!&qt!4!&qt!4--:   Q;HHQK%%a(qE!]A.q[qE!;Q?HHQKOOAy1BE!;Q?W!./HHQK )^!)*qEww##.  	 	 a)*""$o #r rxxz"17[!)1-HHQKOOABE"%Z oo'GGDM$$2  	 
 a+Q/"3 #8 tRIr   c                   / n[        5       nUR                  R                  5       nSU;   Gaq  UR                  UR                  UR
                  4 H  nSU;   d  M  UR                  S5        M     UR                  5       R                  n	[        UR                  5       5       GH$  n
U" U
5      (       d6  X;   a  X   Xz'   M  U(       d"  [        R                  " [        S5      U
-  5      eUR                  U
5      R                  S5      nU(       aY  U R                  SS5      (       d  [        R                  " U[        S5      S9eUR!                  U
5        UR#                  U
5        M  UR                  U
5      R%                  5       nXz   S	   XU
   S
   4Xz'   U	R'                  U
S5      S   U:w  d  GM  UR!                  U
5        GM'     UR)                  5        HI  nUR                   V
s/ s H  oU;  d  M
  U
PM     nn
X^ V
s/ s H  o" U
5      (       d  M  U
PM     sn
-  nMK     U(       am  U" S5      (       dD  SUR                  5       UR	                  5       -   ;   a  [        R                  " [        S5      5      eUR                  R+                  S	S5        O\SUR
                  ;   aL  SU;   aF  SUR                  UR                  -   UR
                  -   ;  a  UR
                  R+                  S	S5        XVU4$ s  sn
f s  sn
f )aa  Calculate .hgsubstate changes that should be applied before committing

Returns (subs, commitsubs, newstate) where
- subs: changed subrepos (including dirty ones)
- commitsubs: dirty subrepos which the caller needs to commit recursively
- newstate: new state dict which the caller must write to .hgsubstate

This also updates the given status argument.
r-   r/   s#   commit with new subrepo %s excludedTs   uis   commitsubreposs#   use --subrepos for recursive commit)hintr      )NNNr
   s$   can't commit subrepos without .hgsub)rE   rp   rs   modifiedaddedremovedrw   ro   ra   keysr   r#   r   r6   dirtyreason
configboolappendadd	basestaterU   parentsinsert)r   rx   r   r   forcesubs
commitsubsnewstatecoldstaterd   r   bsr(   rk   s                  r+   	precommitr   Q  s|     DJ}}!!#H D&,,>A"( ? 779%%(A88="*+HK++@AAE  ((1+11$7K}}U,=>>++#EF  Aq!XXa[**,'{1~rA;q>B<<#56q9R?KKN/ )4 AJJ<Jq8*;JA<.1U1XQ..D   ##	$**,.) kk!$K"LMMOO""1n5	fnn	$T!nOOfll*V^^;'
 NN!!!^4X%%! =.s   .	K?;K?LLc                   U n/ n[        US5      (       ao  [        R                  " UR                  5      nUR	                  [        U5      5        UR                  5       (       a  OUR                  n[        US5      (       a  Mo  UR                  5         [        R                  " U6 n[        R                  " S5      R                  nU" U5      (       aU  UR                  SS5      u  pdUR                  S5      (       a  USS nSnOSnUS-   U-   [        R                   " U5      -   nU$ [        R                   " U5      nU$ )	zNreturn the source of this repo

Either absolute or relative the outermost repo
_subparents   ^[a-zA-Z0-9+.\-]+:   :r
   s   //r   Nr   )hasattrr   rM   
_subsourcer   rB   rN   r   reverserP   rQ   r5   compiler   rJ   rL   rS   )	r*   r]   chunksr7   rR   matchschemeschemesepnormalized_paths	            r+   repo_rel_or_abs_sourcer     s    FF
&,
'
'V../eFm$<<>>"" &,
'
' NN>>6"D**34::K4zz$*??5!!8DCC 4-#-	0B0B40HH  $,,T2r   c                    U n[        US5      (       a  UR                  n[        US5      (       a  M  U R                  [        [        R
                  " UR                  5      5      S $ )z9return path to this (sub)repo as seen from outermost repor   N)r   r   rootlenr   normasprefix)r*   r]   s     r+   reporelpathr     sT    F
&,
'
'"" &,
'
'99S..v{{;<>??r   c                    U R                   $ )z7return path to this subrepo as seen from outermost repo)_relpath)r6   s    r+   
subrelpathr     s    <<r   c                   [        U S5      (       Ga  [        R                  " U R                  5      nUR	                  5       (       a  [        U5      $ [        R                  " UR                  5      Ul        [        U R                  USS9nU(       a  [        R                  " [        R                  " U5      5      n[        R                  " UR                  =(       d    SUR                  5      Ul        [        R                  " UR                  5      Ul        [        U5      $ GO3Sn[        U S5      (       a  U R                  nOU(       a>  U R                  R!                  SS5      (       a  U R                  R!                  SS5      nO|U R                  R!                  SS	5      (       a  U R                  R!                  SS	5      nO>U R#                  5       (       a)  [$        R                  R'                  U R(                  5      $ U(       aK  [        R*                  " U5      (       a.  [-        U5      S
:X  d	  US
S S;  a  [        R.                  " U5      nU$ U(       a  [0        R2                  " [5        S5      5      eg)zreturn pull/push path of repo - either based on parent repo .hgsub info
or on the top repo config. Abort or return None if no source found.r   Fr@   r   N_subtoppaths   pathss   default-pushs   defaultr      s   \/s(   default path for subrepository not found)r   r   rM   r   rN   rB   rP   rS   rR   rO   r   r   rV   rQ   r   r   r   sharedosdirname
sharedpathhasdriveletterr   abspathr   r#   r   )r*   pushrA   r7   r]   rR   s         r+   rO   rO     s    t\""T__-<<>>= ((5DOOT?[[v!67F#..);V[[IFK#,,V[[9FK= 	  4''##DdggnnX??77>>(O<DWW^^Hj1177>>(J7D[[]] 77??4??33 %%d++t9>T!AYf%<<<-DKkk!GHII r   c                   [         R                  " U 5      n[        USS 5      nU(       d  U$ U R                  SS5      nUS;  a"  [        R
                  " [        S5      U-  5      eUS:X  a  U$ [         R                  nS n[        U5       H5  nUR                  U5      nUR                  X7   S   5      n	XY:  d  M1  U	nUnM7     X%:  a  US:X  aG  [        R
                  " [        S	5      [         R                  U   [         R                  U   U4-  5      eU R                  [        S
5      [         R                  U   U4-  5        U$ U$ )Nrp   s   phasess   checksubrepos)   ignores   follow   aborts.   invalid phases.checksubrepos configuration: %sr   r
   r   s=   can't commit in %s phase conflicting %s from subrepository %ssA   warning: changes are committed in %s phase from subrepository %s
)r   newcommitphasegetattrr   r   r#   r   publicra   r6   phase
phasenamesr    )
r   r'   commitphaserp   checkmaxphasemaxsubrd   r6   subphases
             r+   r   r     s[   ''+KsJ-HIIi!12E44kk?@5H
 	
 	}}HFHggaj99X[^,HF  H++=
 %%k2%%h/	
 
 	5   *F3	4	
 r   )r'   context.changectxr   uimod.uirC   Substate)r*   localrepo.localrepositoryr[   r   rC   None)N)r*   r   rx   zcontext.workingctxry   r   rz   r   r{   boolr|   zOptional[Any]rC   r   )F)r   r   rx   zcontext.workingcommitctxr   zistatus.Statusr   r   r   r   rC   z(Tuple[List[bytes], Set[bytes], Substate])r*   r   rC   rB   )r6   zsubrepo.abstractsubreporC   rB   )FT)r*   r   r   r   rA   r   rC   zOptional[bytes])r   r   r'   r   rC   int)1
__future__r   r   rP   r5   typingr   r   r   r   r   r	   i18nr    r   r   r   r   r   r   utilsr   r   rb   TYPE_CHECKINGr   r   r   matchmodr   r   uimod
interfacesr   istatusinterfaces.typesr   rB   r   r[   rf   r   r   r   r   r   rO   r    r   r+   <module>r      s   # 	  	     	   !		  . 	   uUE50112eP6  !P
#P
P P 	P
 P P Pp I&I&
"I& I& 	I&
 I& .I&X:@ 1J
#1J
1J 1J 	1Jh)r   