
    6h_                    f   S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r&J'r'  SS	K(J)r*  SS
K+J,r,  SSK-J.r.J/r/J0r0  \Rb                  r1\Rd                  r2\Rf                  r3\Rh                  r4\Rj                  r5\R.                  " 5       r6\/Rn                  r7\Rp                  " S5      r9S r:SS jr;S r<S r=\6R}                  \S5      S 5       r?\6R                  SSSS\	" S5      4SSS\	" S5      4SSS\	" S5      4/S9S 5       rA\6R}                  \S5      S 5       rB\6R}                  \S 5      S! 5       rC\6R}                  \R&                  S"5      \R                  S# 5       5       rE\6R}                  \R&                  S$5      \R                  S% 5       5       rF\6R}                  \$R                  S&5      S' 5       rH\6R                  S(5      S) 5       rI\6R}                  \$R                  S*5      SS+ j5       rJ\6R                  S,5      S- 5       rK\6R                  S.SSS\	" S/5      4SS0S\	" S15      4SS2S\	" S35      4/S9S4 5       rL\6R                  S5SSS\	" S65      4/S9S7 5       rM\6R}                  \S85       SS9 j5       rN\6R}                  \S:5      S; 5       rO\6R}                  \S<5      S= 5       rP\6R}                  \S>5       SS? j5       rQ\6R}                  \S@5      SSA j5       rR\6R}                  \SB5      SSC j5       rS\6R}                  \SD5      SE 5       rT\6R                  SFSSGS\	" SH5      4SSI/ \	" SJ5      \	" SK5      4/S9SSL j5       rU\6R                  SMSSI/ \	" SN5      \	" SK5      4/S9SO 5       rV\6R}                  \SP5      SQ 5       rW\6R                  SR5      SS 5       rY\6R                  STSSGS\	" SU5      4/S9SSV j5       rZ\6R}                  \SW5      SX 5       r[\6R                  SYSYSZ9S[ 5       r\\6R                  S\ 5       r^\6R                  S]5      S^ 5       r_\6R}                  \S_5      S` 5       r`\6R}                  \S_5           S SSa jj5       ra\6R}                  \$R                  S_5      SSSb jj5       rb\6R}                  \Sc5      Sd 5       rc\6R}                  \Se5      Sf 5       rd\6R}                  \Sg5      Sh 5       reSi rfSj rg\6R                  SkSSS\	" Sl5      4/S9Sm 5       rhSn ri\6R                  SoSSS\	" Sl5      4/S9Sp 5       rj\6R}                  \"Sq5        SSr j5       rk\6R                  Ss5      St 5       rl\6R                  Su5      Sv 5       rm\6R                  SwSwSZ9Sx 5       rn\6R                  Sy5      Sz 5       ro\6R}                  \S{5      S| 5       rp\6R}                  \"S}5      S~ 5       rq\6R}                  \*S5      \6R}                  \*S5      S 5       5       rrSrs\6R}                  \&S5      SS j5       rtg)zHOverridden Mercurial commands and functions for the largefiles extension    )annotationsN)Optional)_)MatcherT)webcommands)archivalcmdutilcopiesdirstateerrorexchange
extensions	exthelper	filemergehg
logcmdutilmatchmerge
mergestatepathutilpycompatscmutilsmartsetsubrepourlutil)actions)urlutil   )
lfcommandslfutilstorefactorylfmrc                2  ^^^ [         R                   " U 5      nSUl        U4S jmUR                   Vs/ s H  nT" U5      (       d  M  UPM     snUl        [        UR                  5      Ul        S Ul        UR                  mUU4S jUl        U$ s  snf )zIcreate a matcher that matches only the largefiles in the original
matcherTc                6   > [         R                  " U 5      T;   $ Nr!   standinfmanifests    </usr/lib/python3/dist-packages/hgext/largefiles/overrides.py<lambda>)composelargefilematcher.<locals>.<lambda>R   s    fnnQ'83    c                     gNF r2   r/   r,   r-   r.   U       ur/   c                2   > T" U 5      =(       a    T" U 5      $ r&   r2   )r*   lfileorigmatchfns    r,   r-   r.   W   s    %(5{1~5r/   )copy_was_tampered_with_filesset_filesetalwaysmatchfn)r   r+   mlfr5   r6   s    `  @@r,   composelargefilematcherr@   M   sp     			%AA3EXX3XrrX3AHQXXAJAH))K5AIH 4s   B
Bc                r  ^^^^ [        5       mUb  TR                  U5        [        R                  " U 5      nSUl        UU4S jmUR                   Vs/ s H  nT" U5      (       d  M  UPM     snUl        [        UR                  5      Ul        S Ul        UR                  mUU4S jUl        U$ s  snf )NTc                   > [         R                  " U 5      =(       d%    [         R                  " U 5      T;   =(       d    U T;   (       + $ r&   r!   	isstandinr(   )r*   excludedr+   s    r,   r-   *composenormalfilematcher.<locals>.<lambda>b   s2    Mv~~a0H<MXr/   c                     gr1   r2   r2   r/   r,   r-   rF   g   r3   r/   c                2   > T" U 5      =(       a    T" U 5      $ r&   r2   )r*   notlfiler6   s    r,   r-   rF   i   s    (1+8+a.8r/   )r:   updater7   r8   r9   r;   r<   r=   )r   r+   excluder>   r?   rE   rI   r6   s    `   @@@r,   composenormalfilematcherrL   [   s    uH 		%AAH XX6Xr"X6AHQXXAJAH))K8AIH 7s   B4*B4c                   UR                  S5      n[        R                  " U [        R                  " U5      UR                  S5      5      nS n[        R                  " U5      (       aR  U R	                  [        R
                  S5      n	U	(       a+  [        R                  " UR                  S[        U	5      5      n/ n
UnUS    nUR                  [        R                  " US 5      5       GHt  nUR                  U5      n[        R                  " U5      U;   nX;   nU=(       d    UnU(       a3  U(       a,  U(       a#  U R                  [        S5      U" U5      -  5        Mw  U(       d	  U(       a  M  [        R                   " U5      (       a  M  UR"                  R%                  U5      (       d  M  U=(       a.    UR"                  R'                  U5      R(                  US-  S-  :  nU(       d!  U(       d  U(       d  GM  U" U5      (       d  GM%  U
R+                  U5        U R,                  (       d
  U(       a  GMQ  U R/                  [        S5      U" U5      -  5        GMw     / nUR1                  5          UR                  S	5      (       Gd  / n[        R2                  " X5      nU
 Hu  n[        R                  " U5      n[        R4                  " UUS[        R6                  " UR9                  U5      5      S
9  UR+                  U5        UR;                  U5        Mw     UR=                  UR?                  5       5        UUS    RA                  U5       Vs/ s H.  nXRC                  5       ;   d  M  [        RD                  " U5      PM0     sn-  nU
 Vs/ s H  oU;  d  M
  UPM     nnS S S 5        UU4$ s  snf s  snf ! , (       d  f       WU4$ = f)Nlargelfsizes   patternsr/   c                    g r&   r2   )xys     r,   r-   addlargefiles.<locals>.<lambda>}   s    r/   s   %s already a largefile
i   s   adding %s as a largefile
dry_run)hash
executable)#getr!   
getminsizeislfilesrepo
configlistlongnamematchmodr   rootlistwalkbadmatchexactr(   warnr   rD   wvfsexistslstatst_sizeappendverbosestatuswlockopenlfdirstatewritestandingetexecutablewjoinset_trackedwritecurrenttransactionaddfilessplitstandin)uirepoisaddremovematcheruipathfnoptsrN   rO   	lfmatcherlfpatslfnamesr>   wctxr*   ra   r5   nfilerd   aboveminbadstandins
lfdirstatestandinnameaddeds                           r,   addlargefilesr   m   s   HHWE
F%txx'9F I4  v< tyy#tF|DIGA:DYYx((,=>?
q!T)	% V56!DE)9)9!)<)< 99##A&& M499??1-55$9MM  YY9Q<<q!::UUIIa =>!LM3 @6 C 
xx	""H..r8J$nnQ/##%33DJJqMB	 ,&&q)  T4467d11A	> '##A&1 C $4Gq|G4+ 
, #: 5+ 
, #:s7   7C!ON73N7	O	N<#N<)O7
O
Oc                L  ^ ^^ UR                  S5      n[        X1S    R                  5       5      n[        U5         UR	                  X(       + S9n	S S S 5        US    R                  5       mU4S jW	R
                  U	R                  U	R                  U	R                  4 5       u  ppU U4S jnU(       a  UnU" X-   U-   [        S5      5      nO1X-   nU" U
[        S5      5      nU" U[        S5      5      =(       d    UnUR                  5          [        R                  " T U5      n[        U5       Hy  nT R                  (       d  UR                  U5      (       d#  T R	                  [        S5      T" U5      -  5        U(       a  MV  U(       a  M_  UR                   R#                  US	S
9  M{     U(       a  UsS S S 5        $ U Vs/ s H  n[        R$                  " U5      PM     nnU(       d#  U H  nUR                   R#                  US	S
9  M     US    R'                  U5        U H(  nUR)                  [        R*                  " U5      5        M*     UR-                  UR/                  5       5        S S S 5        U$ ! , (       d  f       GN3= fs  snf ! , (       d  f       U$ = f)Nafterr   cleanc              3     >#    U  H4  nU Vs/ s H!  n[         R                  " U5      T;   d  M  UPM#     snv   M6     g s  snf 7fr&   r'   ).0r^   r*   r+   s      r,   	<genexpr>#removelargefiles.<locals>.<genexpr>   s<      '=D :DqFNN1-9D:= 	;s   
A??Ac                x   > U  H  nTR                  UT" U5      -  5        M     [        [        U 5      S:  5      $ )Nr   )rb   intlen)rs   msgr*   ru   ry   s      r,   rb   removelargefiles.<locals>.warn   s5    AGGC(1+%& 3u:>""r/   s#   not removing %s: file still exists
s<   not removing %s: file is modified (use -f to force removal)
sC   not removing %s: file has been marked for add (use forget to undo)
   removing %s
Tignoremissing)rW   r@   r+   lfstatusri   modifiedr   deletedr   r   rj   r!   rk   sortedrh   ra   rc   
unlinkpathr(   forgetset_untrackedrt   rp   rq   )ru   rv   rw   rx   ry   dryrunrz   r   r>   sr   r   r   r   rb   removeresultr   r*   r+   s   `   `              @r,   removelargefilesr      sB   HHWEd)<)<)>?A	$KKaK7 
Dz""$H'ZZ!))QWW='#HW
#
 u$a(O&P
 (
 /   	 
**2t4
Azz		!,-;<6uII(($(?    
 .44V&..#V4 		$$Qd$; T
&!A$$V%8%8%;<  	00231 
4 ME 
j 5 
4 Ms=   I=A5J	J&JJ J&BJ=
JJ
J#
decodepathc                @    [         R                  " U5      =(       d    U$ r&   r!   rt   )origpaths     r,   r   r      s    t$,,r/   s   addr/      larges   add as largefiles   normals   add as normal files   lfsizesH   add all files above this size (in megabytes) as largefiles (default: 10))rz   c                    UR                  S5      (       a5  UR                  S5      (       a  [        R                  " [        S5      5      eU " X/UQ70 UD6$ )NnormalrN   s$   --normal cannot be used with --large)rW   r   Abortr   r   ru   rv   patsrz   s        r,   overrideaddr     sK    " xxdhhw//kk!CDEE(4(4((r/   rr   c                    UR                  S5      (       a  U " XX4XV40 UD6$ [        XSX540 UD6u  p[        X2S    R                  5       U5      n
U " XXXV40 UD6nUR	                  S U	 5       5        U$ )Nr   Fc              3  $   #    U  H  ov   M     g 7fr&   r2   )r   r*   s     r,   r   cmdutiladd.<locals>.<genexpr>)  s     $Qq$s   )rW   r   rL   r+   extend)r   ru   rv   rx   prefixry   explicitonlyrz   laddedlbadnormalmatcherr   s               r,   
cmdutiladdr     s     xxBgxNNN 5'LtLLF,d$$&M r
O$
OCJJ$Jr/   r   c
                    [        X2S    R                  5       5      n
U " UUU
UUUUUU	5	      n[        XSX5XUS9=(       d    U$ )NF)r   force)rL   r+   r   )r   ru   rv   rx   r   ry   r   r   subreposr   r   r   s               r,   cmdutilremover   -  sd     -W4j6I6I6KLM

F 	eW5	
 	 	r/   	_changingc              #    #    [        USS 5      =pE [        USS5      nUc.  U(       d'  [        R                  " UR                  U5      nXQl        U(       d  UR                  c   eU " XU5         Uc  S v   OUR                  X#5         S v   S S S 5        S S S 5        XAl        g ! , (       d  f       N= f! , (       d  f       N&= f! XAl        f = f7fN_sub_dirstate_large_file_dirstateF)getattrr!   rk   ru   r   r   )r   selfrv   change_typepresub_dirstatelfds          r,   r   r   E  s      !==C!d2E:!00$?L!-%%111$k*#!++D> ?	 + ! ?>	 +* !sM   CAC /B6	B%B6C C%
B3	/B66
C C CCrunning_statusc              #    #    [        USS 5      =p4 [        USS5      nUc.  U(       d'  [        R                  " UR                  U5      nXAl        U(       d  UR                  c   eU " X5         Uc  S v   OUR                  U5         S v   S S S 5        S S S 5        X1l        g ! , (       d  f       N= f! , (       d  f       N&= f! X1l        f = f7fr   )r   r!   rk   ru   r   r   )r   r   rv   r   r   r   s         r,   r   r   Z  s      !==C!d2E:!00$?L!-%%111$#!006 7	  ! 76	  !sM   CAC .B5B$B5C C$
B2	.B55
C?C CCri   c                t    [        UR                  5         U " X40 UD6sS S S 5        $ ! , (       d  f       g = fr&   r   _repo)r   rv   rev2rz   s       r,   overridestatusfnr   o  s'    	$**	D'$' 
		s   	)
7s   statusc                f    [        U5         U " X/UQ70 UD6sS S S 5        $ ! , (       d  f       g = fr&   r   r   s        r,   overridestatusr   u  s%    	$B,t,t, 
   "
0dirtyc                p    [        UR                  5         U " XUS9sS S S 5        $ ! , (       d  f       g = f)N)ignoreupdatemissingr   )r   rv   r   r   s       r,   overridedirtyr   {  s$    	$**	DWE 
		s   '
5s   logc                d  ^^^	      SUU4S jjn[         R                  m	SU	4S jjn[        R                  " [         SU5      n[        R                  " [        SU5      nU   U   U " TT/UQ70 UD6sS S S 5        sS S S 5        $ ! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f)Nc           	     .  >^^^^^ Uc  0 nU " XX4XVS9n[         R                   " U5      u  pUR                  5       (       a  U$ [        U	5      n[        R                  4S jmTR                  5       mT(       aJ  [        R                  n
[        R                  " TR                  U
5      S[        U
5      *  5      mUU4S jmOS mUR                  UU4S jU	 5       5        SUl        [        S[        UR                  5      5       H  nUR                  U   S	:X  a  M  [        R                  " UR                  U   5      nX;   a  XR                  U'   MP  UR                  U   U;  d  Me  TR                  R!                  U5      (       d  M  UR                  R#                  U5        M     [        UR                  5      Ul        S
 Ul        UR&                  mU4S jnXl        TR)                  SSR+                  [-        U5      5      -  5        X4$ )zMatcher that merges root directory with .hglf, suitable for log.
It is still possible to match .hglf directly.
For any listed files run log on the standin too.
matchfn tries both the given filename and with .hglf stripped.
Nbadfnc                    U R                  S5      (       a  U $ [        R                  " U S 5      nUS   b  US   S-   U" US   5      -   $ U" US   5      $ )Ns   set:r      :r   )
startswithr\   	_patsplit)pat	tostandinkindpats      r,   fixpats:overridelog.<locals>.overridematchandpats.<locals>.fixpats  s^    ~~g&&
((d3Gqz%qzD(9WQZ+@@@WQZ((r/   c                *  > U R                  T5      (       a)  [        R                  " U [        T5      S  5      (       a  U $ [        R
                  R                  T5      (       a  U [        T5      S  n OTS-   U -   n T[        R                  " U 5      -   $ )N   /)r   r!   rt   r   osr   isabsr(   )r*   backcwds    r,   r   <overridelog.<locals>.overridematchandpats.<locals>.tostandin  sx     <<%%&*=*=aD	n*M*MH 77==%%#d)+Ad
QAfnnQ///r/   c                h    [         R                  " U 5      (       a  U $ [         R                  " U 5      $ r&   rC   )r*   s    r,   r   r     s'    ##A&&H~~a((r/   c              3  6   >#    U  H  nT" UT5      v   M     g 7fr&   r2   )r   r*   r   r   s     r,   r   <overridelog.<locals>.overridematchandpats.<locals>.<genexpr>  s     51aGAy))1s   Tr      .c                     gr1   r2   r2   r/   r,   r-   ;overridelog.<locals>.overridematchandpats.<locals>.<lambda>  s    5r/   c                f   > [         R                  " U 5      nUb  T" U5      (       a  gT" U 5      nU$ )NTr   )r*   r?   rr6   s      r,   	lfmatchfn<overridelog.<locals>.overridematchandpats.<locals>.lfmatchfn  s1    $$Q'B~+b//AAHr/   s   updated patterns: %s
s   , )r7   r<   r:   r!   r(   getcwd	shortnamer   pconvertpathtor   rJ   r8   ranger9   rc   isdirrg   r;   r=   debugjoinr   )r   ctxr   rz   globbeddefaultr   matchandpatsr>   phglfir(   r   r   r   r   r6   r   rv   ru   s                 @@@@@r,   overridematchandpats)overridelog.<locals>.overridematchandpats  s    <DCtgKyy&88::  1v#)>> 	) kkm##D==T!2<c$iZ!@AD0&)
 	5155#q#ahh-(Axx{d"nnQXXa[1G
 ~%!C'DIIOOG,D,D( ) ]
 ii	 	
*UZZt-EEFwr/   c                0   >^ US    nT" XRX4S9u  mnU4S j$ )Nr   c                   > T$ r&   r2   )r   r   s    r,   r-   >overridelog.<locals>.overridemakefilematcher.<locals>.<lambda>  s    5r/   r2   )r   rv   r   rz   r   r~   r   oldmatchandpatss         @r,   overridemakefilematcher,overridelog.<locals>.overridemakefilematcher  s"    Dz%d$Dt  r/   r  _makenofollowfilematcherr2   NFs   relpathNr&   )r   r  r   wrappedfunctionr   )
r   ru   rv   r   rz   r  r  wrappedmatchandpatswrappedmakefilematcherr
  s
    ``      @r,   overridelogr    s    
 a aP **O!
 %44!5 (77.0G 
4B,t,t, 54		44			s$   $B!'B4	B!
B	B!!
B/s   verifys5   verify that all largefiles in current revision existss   lfas4   verify largefiles in all revisions, not just currents   lfcs3   verify local largefile contents, not just existencec                    UR                  SS5      nUR                  SS5      nUR                  SS5      nU " X/UQ70 UD6nU(       d  U(       d  U(       a   U=(       d    [        R                  " XXg5      nU$ )NrN   Flfalfc)popr    verifylfiles)	r   ru   rv   r   rz   rN   allcontentsr   s	            r,   overrideverifyr    sk    0 HHWe$E
((5%
 Cxxu%H"*T*T*FxK:222SKMr/   s
   debugstates   display largefiles dirstatec                   ^^ UR                  SS5      nU(       a   " UU4S jS5      nU " TU/UQ70 UD6  g U " TT/UQ70 UD6  g )NrN   Fc                  @   > \ rS rSr\R
                  "  Y Y 5      rSrg)$overridedebugstate.<locals>.fakerepoi&  r2   N)__name__
__module____qualname____firstlineno__r!   rk   r   __static_attributes__)rv   ru   s   r,   fakerepor  &  s    ,,R6Hr/   r#  )r  )r   ru   rv   r   rz   rN   r#  s    ``    r,   overridedebugstater$    sL    
 HHWe$E	7 	7 	R)D)D)R%%%r/   _checkunknownfilec           	     n    [         R                  " UR                  " U5      5      U;   a  gU " XX4XVU5      $ r1   )r!   r(   	normalize)origfnr   rc   dircacher~   mctxr*   f2s           r,   overridecheckunknownfiler,  8  s4     ~~h((+,4(($2>>r/   calculateupdatesc           	        U=(       a    U(       + n
U " XX4XVU/UQ70 U	D6nU
(       a  U$ [        5       nUR                  5        Ha  n[        R                  " U5      nUb  X;   a  UR	                  U5        M4  [        R
                  " U5      U;   d  MP  UR	                  U5        Mc     [        U5       GHH  n[        R
                  " U5      nUR                  US5      u  nnnUR                  US5      u  nnnU[        [        4;   a  U[        :w  a  U[        :X  a  Uu  nnnnnUU   R                  5       S4n[        S5      U-  nUR                  R                  US5      S:X  a1  UR                  U[        S S5        UR                  U[        US5        OPUR                  U[         S S5        U(       a  UR                  U[         S S5        OUR                  U[        S S5        U[        [        4;   d  GMI  U[        :w  d  GMV  U[        :X  a  Uu  nnnnnUU   R                  5       S4n[        S5      U-  nUR                  R                  US5      S:X  am  U(       a3  UR                  U[         S S5        UR                  U[         S S5        GM  UR                  U["        S S	5        UR                  U[$        S S
5        GM  UR                  U[        US5        UR                  U[        S S5        GMK     U$ )N)NNNFsw   remote turned local normal file %s into a largefile
use (l)argefile or keep (n)ormal file?$$ &Largefile $$ &Normal filer   s   replaced by standins   replaces standins   replaced by non-standinsw   remote turned local largefile %s into a normal file
keep (l)argefile or use (n)ormal file?$$ &Largefile $$ &Normal files   forget non-standin largefiles   keep standin)r:   rs   r!   rt   rr   r(   r   getfile
ACTION_GETACTION_DELETED_CHANGEDACTION_REMOVEflagsr   ru   promptchoiceaddfileACTION_KEEP#MERGE_ACTION_LARGEFILE_MARK_REMOVED
ACTION_ADD)r(  rv   p1p2pasbranchmerger   acceptremoteargskwargs	overwritemresultlfilesr*   rt   r5   r(   lmlargslmsgsmsargssmsgf1r+  famoveancusermsgs                                r,   overridecalculateupdatesrN  [  s    )k/I";|>BFLG  UF]]_**1-#(:JJ|$^^A"$JJqM  ..'#OOE3EFUD#OOG5GHUD*455":M++(-%BD#B/ 5
   ww##GQ/14=$0F U<OP{D:MNOO#2	 OO%2	 *455":M++(-%BD#B/ 5
   ww##GQ/14OO#.	 OOd4G OO;7	 OOGZOz5:MN!.	a  n Nr/   recordupdatesc                    [         U;   a`  [        R                  " UR                  U5      nU[             H2  u  pgnUR                  R                  USSS9  UR                  USSS9  M4     U " XX45      $ )NTF
p1_tracked
wc_tracked)r7  r!   rk   ru   r   update_file)	r   rv   r   r<  getfiledatar   r5   r>  r   s	            r,   mergerecordupdatesrV    su    *g5**477D9
 '(K LE MM%%e%O""5Ut"L !M {88r/   r   c	                   [         R                  " U5      (       a*  UR                  5       (       d  UR                  5       (       a	  U " XX4XVXxS9$ [         R                  " U5      R	                  5       n	[         R                  " U5      R	                  5       n
[         R                  " U5      R	                  5       nX:w  a  X:w  a  X:X  dC  UR
                  R                  [        S5      [         R                  " U5      XU4-  S5      S:X  a=  UR                  UR                  5       UR                  5       UR                  5       5        g)N)labelss   largefile %s has a merge conflict
ancestor was %s
you can keep (l)ocal %s or take (o)ther %s.
what do you want to do?$$ &Local $$ &Otherr   r   )r   F)r!   rD   isabsentreadasstandinlowerru   r4  r   rt   wwriter   datar3  )r(  rv   r~   mynoder   fcdfcofcarX  ahashdhashohashs               r,   overridefilemergere    s    D!!S\\^^s||~~d&#MM  %++-E  %++-E  %++-ENNww##+ &&t,eEBC 	 
 	CHHJ
CIIK8r/   
pathcopiesc                    U " XUS9n0 nUR                  5        HD  u  pg[        R                  " U5      =(       d    UU[        R                  " U5      =(       d    U'   MF     U$ )N)r   )itemsr!   rt   )r   ctx1ctx2r   r
   updatedkvs           r,   copiespathcopiesrn    sV    $E*FG/5/B/B1/E/J##A&+!,  Nr/   r7   c           
     B
  ^^^^ [        U5      S:  a  U " UTUTU5      $ SnSnTS    R                  5       m     SU4S jjn[        R                  " [        SU5          U " UTUTU5      n	S S S 5         TR                  5         U4S jn[        R                  " U5      nUS	   n[        R                  R                  U5      (       aF  [        R                  R                  U" U5      5      (       d  [        R                  " U" U5      5        TR!                  5       n TS    R                  5       m     SU4S
 jjn/ nU HD  n["        R$                  " U5      b  UR'                  U5        M-  UR'                  U" U5      5        MF     / mUUU4S jn[        R                  " [(        SU5         [        R                  " [        SU5         W	U " UTUTU5      -  n	S S S 5        S S S 5        [*        R,                  " UT5      nT GH  u  nn[*        R.                  U;   d  M  UR1                  TR3                  [*        R.                  5      5      (       d  MR  UR5                  TR3                  [*        R6                  " S5      5      S5      nUR5                  TR3                  [*        R6                  " S5      5      S5      nTR8                  R;                  TR3                  U5      5      =(       d    Sn[        R                  R                  U5      (       d  [        R                  " U5        U(       aa  [        R<                  " TR3                  U5      TR3                  U5      5        TR8                  R?                  USS9  URA                  U5        O5[(        RB                  " TR3                  U5      TR3                  U5      5        URE                  U5        GM     URG                  TRI                  5       5        URK                  5         U(       a&  U(       a  [
        R                  " [        S5      5      eW	$ ! [
        R                   a*  n
U
R                  [        S5      :w  a  U
eSnSn	 S n
A
GNS n
A
ff = f! , (       d  f       GN= f! [         a    W	s $ f = f! , (       d  f       GN= f! , (       d  f       GN= f! [
        R                   a'  n
U
R                  [        S5      :w  a  U
eSn S n
A
NS n
A
ff = f! URK                  5         f = f)N   Fc           	     6   > Uc  0 nU " XX4XVS9n[        UT5      $ )Nr   )rL   )	r   r   r   rz   r   r   r   r   r+   s	           r,   normalfilesmatchfn(overridecopy.<locals>.normalfilesmatchfn  s*     <DSwD'x88r/   r   s   no files to copyTr   c                   > [         R                  " TR                  TR                  5       U 5      nTR                  R                  [        R                  " U5      5      $ r&   )r   	canonpathr]   r   rc   r   r!   r(   )relpathr   rv   s     r,   makestandin!overridecopy.<locals>.makestandin8  s=    !!$))T[[]GDyy~~fnnT233r/   c           	     R  >^ Uc  0 n/ nU Hp  n[         R                  " U5      cE  [        R                  U;   a1  UR	                  UR                  [        R                  S5      5        M_  UR	                  U5        Mr     U " XX4XVS9n	[        R                  " U	5      n
SU
l        U4S jnU
R                   Vs/ s H'  o" U5      (       d  M  [        R                  " U5      PM)     snU
l        [        U
R                  5      U
l        U
R                  mUU4S jnXl        U
$ s  snf )Nr/   r   Tc                6   > [         R                  " U 5      T;   $ r&   r'   r)   s    r,   r-   5overridecopy.<locals>.overridematch.<locals>.<lambda>`  s    fnnQ/8;r/   c                   > [         R                  " U 5      nUS L=(       a    U T;   =(       a    T" U5      =(       d    S $ r&   r   )r*   r5   r+   r6   s     r,   r=   4overridecopy.<locals>.overridematch.<locals>.matchfne  sC    ++A.% +h+#E* 	r/   )r\   patkindr!   r   rg   replacer7   r8   r9   r(   r:   r;   r=   )r   r   r   rz   r   r   r   newpatsr   r   r>   r5   r*   r=   r6   r+   s                 @r,   overridematch#overridecopy.<locals>.overridematchJ  s     |G ##C(0V5E5E5LNN3;;v/?/?#EFNN3'	 
 tgKE		% A#'A ;E3488H8auQx)q)8HAHQXXAJ))K  IH Is   9D$D$c                  > [         R                  U;   a  UR                  TR                  [         R                  5      5      (       ac  UR	                  [         R                  S5      nTS   (       d9  [
        R                  R                  U5      (       a  [        S[        S5      5      eTR                  X45        U " X/UQ70 UD6  g )Nr/   s   forces$   destination largefile already exists)r!   r   r   rn   r  r   r   rd   OSErrorr   rg   )	r   srcdestr>  r?  	destlfilecopiedfilesrz   rv   s	         r,   overridecopyfile&overridecopy.<locals>.overridecopyfilez  s    3&4??

6++,, , !LL)9)93?	H~"''..*C*C!QFG  {+,T,V,r/   copyfiler/   r   r   r  )&r   r+   r   r  r   r   r   messager   r   r  
expandpatsr   r   r   makedirsrj   r\   r  rg   r   r!   rk   r   r   rn   r  r(   rc   dirnamerenamer   r   r  ro   rp   rq   release)r   ru   rv   r   rz   r  nonormalfilesnolfilesrr  r   erw  fullpatsr  rj   r  listpatsr   r  r   r  srclfiler  destlfiledirr  r+   s     ` `                   @@r,   overridecopyr  
  s    4y1}BdD&11 MHDz""$H
 9 
	#	#GW6H	I	"dD$7F 
J4 !!$'HB<D	ww}}Tww}}[.//KKD)* JJLE_:&&(
 %	N C$0$C 01	  
	- ''j:JK++GWmL$r44@@ M L **2t4
$IC3&4??

6++,, , ;;tzz&..2E'FL LLFNN34G)H#N	#yy00I1FGO4ww}}\22KK-IIdjj2DJJy4IJ II(((F,,X6MM$**X"6

98MN&&y1' %( 	0023 	Mkk!/011MC {{ 	yyA122 $F	 
J	I  d ML LK4 ;; 99-..GH	 	s    R"Q7R #BS 5R<R*"R<*:S (1S F)S RQ>8R>RR
RR'&R'*
R9	4R<<
SS T	"T?T T		T Trevertc           
       ^^ TR                  5          TR                  R                  T5         [        R                  " UT5      n[        R
                  " UT5      nUR                  TR                  5       5        UR                   H/  n[        R                  " TU[        R                  " U5      5        M1     UR                   HV  n[        R                  " U5      n	TR                  R                  U	5      (       d  M;  TR                  R                  U	5        MX     [        R                  " T5      n
     SUU4S jjn[         R"                  " [$        SU5         U " UTT/UQ70 UD6  S S S 5        [        R                  " T5      n[        R&                  " X5      n[(        R*                  " UTUSSS9  S S S 5        S S S 5        g ! , (       d  f       Nc= f! , (       d  f       N(= f! , (       d  f       g = f)NFc           	     `  >^^ Uc  0 nU " TX#XEUS9n[         R                   " U5      nSUl        [        R                  " TR	                  5       R
                  TR	                  5       S5      n	TS    n
/ nUR                   Hp  n[        R                  " U5      nUT;   d  UT;   a  UR                  U5        M8  X;   d   U	R                  U5      R                  (       a  M_  UR                  U5        Mr     Xl        [        UR                  5      Ul        UR                  mUUU4S jnXl        U$ )Nr   TFc                   > [         R                  " U 5      nUb   T" U5      =(       a    U T;   =(       d    U T;   $ T" U 5      $ r&   r   )r*   r5   r   r*  r6   s     r,   r=   6overriderevert.<locals>.overridematch.<locals>.matchfn  s@    ++A.$&u-I183HqDyI"1~%r/   )r7   r8   r!   rk   rv   ru   r9   r(   rg   	get_entryremovedr:   r;   r=   )r   r*  r   rz   r   r   r   r   r>   r   r~   
matchfilesr*   r(   r=   r6   r   rv   s    `             @r,   r  %overriderevert.<locals>.overridematch  s     |t75IE		% A#'A   ..				UJ :DJXX ..+c>W_%%g._
(<(<Q(?(G(G%%a(  "HQXXAJ))K&  IHr/   r   T)printmessagenormallookupr  )rj   r   r   r!   rk   lfdirstatestatusrp   rq   r   updatestandinr(   r   rc   rd   unlinkgetstandinsstater   r  r   getlfilestoupdater    updatelfiles)r   ru   rv   r   r   rz   r   r   r5   fstandinoldstandinsr  newstandinsfilelists     ``          r,   overriderevertr    s   
 
t}}33D9**2t4
##J50023ZZE  ufnnU.CD  YYE~~e,Hyy))		  * 
 --d3
 ,	 ,	\ ''-HT3... I --d3++KE 	hU	
K :v IHw :9sC   G0CGAG"G1AG=G0
GG
G-	)G00
G>s   pulls   all-largefiless7   download all pulled versions of largefiles (DEPRECATED)s   lfrevs'   download largefiles for these revisionss   REVc                   [        U5      nU(       d  SnX2l        U " XU40 UD6n[        U5      nUR                  S/ 5      nUR                  S5      (       a  UR                  S5        U(       a  Xu:  a  Sn	XRl         [
        R                  " X(5       HG  n
UR                  [        S5      U
-  5        [        R                  " XU
5      u  pU	[        U5      -  n	MI     U?UR                  [        S5      U	-  5        U$ ! U?f = f)Ns   defaultlfrevall_largefiles   pulled()r   s#   pulling largefiles for revision %d
s   %d largefiles cached
)r   lfpullsourcerW   rg   firstpulledr   revrangenoter   r    cachelfilesri   )r   ru   rv   sourcerz   revsprepullr   revspostpulllfrevs	numcachedrevcachedr   s                r,   overridepullr    s    & d)K"F+d+Ft9LXXgr"Fxx !!k",,	&	!!**48ABSHI$.$:$:2S$I!S[(	 9
  
		!-.:;M  s   >A!D   Ds   pushs%   upload largefiles for these revisionsc                    UR                  SS5      nU(       a+  UR                  S0 5      n[        R                  " X%5      US'   U " X/UQ70 UD6$ )z<Override push command and store --lfrev parameters in opargsr  Nopargss   lfrevs)r  
setdefaultr   r  )r   ru   rv   r>  r?  r  r  s          r,   overridepushr  2  sS     ZZ&F""8R0&//=y*4*6**r/   pushoperationc                F    UR                  SS5      nU " U0 UD6nX4l        U$ )z=Override pushoperation constructor and store lfrevs parameterr  N)r  r  )r   r>  r?  r  pushops        r,   exchangepushoperationr  G  s-     ZZ$'F4"6"FMMr/   r  c                     U R                   n[
        R                  " U Vs/ s H  oDU:  d  M
  UPM     sn5      $ ! [         a     [        R                  " [	        S5      5      ef = fs  snf )aG  Changesets that just has been pulled.

Only available with largefiles from pull --lfrev expressions.

.. container:: verbose

  Some examples:

  - pull largefiles for all new changesets::

      hg pull -lfrev "pulled()"

  - pull largefiles for all new branch heads::

      hg pull -lfrev "head(pulled()) and not closed()"

s"   pulled() only available in --lfrev)r  AttributeErrorr   r   r   r   baseset)rv   subsetrQ   r  r   s        r,   pulledrevsetsymbolr  P  sd    (D&& C1{2BQCDD  Dkk!ABCCDCs   < 	A)A)*A&s   clones'   download all versions of all largefilesc                   UnUc  [         R                  " U5      nUR                  S5      (       aF  [        R                  " U5      R
                  S;  a"  [        R                  " [        S5      U-  5      eU " XU40 UD6$ )Nr  )s   fileNs>   --all-largefiles is incompatible with non-local destination %s)	r   defaultdestrW   r   r   schemer   r   r   )r   ru   r  r  rz   ds         r,   overridecloner  k  s     	AyNN6"xx !!gkk!n&;&; D ' kkOP
 	

 D)D))r/   clonec                    U " X/UQ70 UD6nUbR  Uu  pgUR                  5       nU(       d  U$ UR                  S5      (       a  [        R                  " X5      u  pU
S:w  a  g U$ )Ns   all_largefilesr   )localrW   r    downloadlfiles)r   ru   rz   r>  r?  r   
sourcerepodestreporv   successr   s              r,   hgcloner    sn    ",T,V,F%
~~
 M
 88%&&)88BG!|Mr/      rebase)	extensionc                   [        US5      (       d	  U " X40 UD6$ UR                  S5      nUR                  R                  [        R
                  " U5      5        UR                  R                  S 5         UR                  SS0S5         U " X40 UD6sS S S 5        UR                  R                  5         UR                  R                  5         $ ! , (       d  f       O= f UR                  R                  5         UR                  R                  5         g ! UR                  R                  5         UR                  R                  5         f = f)N_largefilesenabledcontinuec                     g r&   r2   r   rz   s     r,   r-   #overriderebasecmd.<locals>.<lambda>      dr/   )r  s   experimental.inmemoryF
   largefiles)	hasattrrW   _lfcommithooksrg   r!   automatedcommithook_lfstatuswritersconfigoverrider  )r   ru   rv   rz   resumings        r,   overriderebasecmdr    s   4-..B%%%xx
#Hv99(CD  !:;"2E:M
 )D)
 

 	!!#!
 
 

 	!!#! 	!!#!s$   8D 	C	D 
C!D 6Ec                     [         R                  " S5      nS n[         R                  " USU5        g ! [         a     g f = f)Nr  c                    SUS'   U " U0 UD6$ )NFinmemoryr2   r   r>  r?  s      r,   	_dorebase!overriderebase.<locals>._dorebase  s    !&F:(((r/   r  )r   findwrapfunctionKeyError)ru   rebaser  s      r,   overriderebaser    sC    
@+
	) 	Y?  s   4 
A As   archivec                    [        UR                  5       5         U " XR                  5       U40 UD6sS S S 5        $ ! , (       d  f       g = fr&   )r   
unfiltered)r   ru   rv   r  rz   s        r,   overridearchivecmdr    s3    	$//#	$B)4848 
%	$	$s	   <
A
archivec                r    [        UR                  5         U " U5      sS S S 5        $ ! , (       d  f       g = fr&   )r   rv   )r   webs     r,   hgwebarchiver    s!    	#((	Cy 
		s   (
6c
                  ^^^^^^^^^^^^ TR                   (       d/  TR                  5       R                   (       d  U " TTUTTTTTU	5	      $ Ub"  [        R                  " TR                  TU5        T[
        R                  ;  a"  [        R                  " [        S5      T-  5      eTS:X  a'  T(       a  [        R                  " [        S5      5      eO[
        R                  " TTT5      mT(       d  [        R                  " T5      mS mTU   mUUUUUUUU4S jmUUUUUU4S jmT H  n
TR                  U
5      nTU
   R                  n[        R                   " U
5      nUb]  UbP  [        R"                  " TU" 5       R%                  5       5      mTc"  [        R                  " [        S5      U-  5      eOUmUn
U4S jnT" U
SU;   =(       a    S	=(       d    S
SU;   U5        M     U	(       a  ['        TR(                  5       H  nTR+                  U5      n[,        R.                  " UT5      nTU-   S-   n[1        US5      (       a  [        UR2                  5      O[4        R6                  " 5          UR9                  TUU5        S S S 5        M     T(       a  TR;                  5         g g ! , (       d  f       M  = f)Ns   unknown archive type '%s's   filess*   cannot give prefix when archiving to filesc                 2  > Tc  [        T5      (       a  T" 5       n OTn [        R                  T   " U T=(       d    TR                  5       S   5      mTc   eTR                  R                  SS5      (       a  SnT" U5      (       a  T	" USSU4S j5        T$ )zReturn the archiver instance, creating it if necessary.

This function is called when the first actual entry is created.
It may be called multiple times from different layers.
When serving the archive via hgweb, no errors should happen after
this point.
r   s   uis   archivemetas   .hg_archival.txt  Fc                 0   > [         R                  " T 5      $ r&   )r   buildmetadata)r   s   r,   r-   7overridearchive.<locals>.opencallback.<locals>.<lambda>  s     6 6s ;r/   )callabler   	archiversdateru   
configbool)
outputmetanamearchiverr   r  kindr   mtimerv   rp   s
     r,   opencallback%overridearchive.<locals>.opencallback  s     ~~))$/8NAOH'''ww!!%88.?? ;	 r/   c                   > T" U 5      (       d  g U" 5       nT(       a  T
R                  X5      nTc  T" 5         Tc   S5       eTR                  T	U -   XU5        g )Nzarchive should be opened by now)
wwritedatar5  )namemodeislinkgetdatar]  r  decoder   r  r   rv   s        r,   rp   overridearchive.<locals>.write  sZ    T{{y??4.DN#F%FF#$d;r/   4   largefile %s not found in repo store or system cachec                 0   > [         R                  " T 5      $ r&   )r   readfile)r   s   r,   r-   !overridearchive.<locals>.<lambda>/  s    dmmD1r/      x  r     lr   r   )r   r  r    r  ru   r   r  r   r   r   
tidyprefixr   matchallr3  r]  r!   rt   findfilestripr   substate
workingsubr\   subdirmatcherr  r   r   nullcontextmanagerr  done)r   rv   r  noder  r  r   r   r  r   r*   ffr  r5   subpathsubsubmatch	subprefixr  r   r  r   rp   s    `` `````         @@@@@r,   overridearchiver.    s]    ==!2!;!;$dFE65(
 	
 twwd38%%%kk!89D@AAx++a MNOO  $$T48  &H
t*C 8	< 	< YYq\a&++##A&tWY__->?<++S       A1Ga%.
GD+ . cll+G..)C--gu=H(4/I 3(( #,,./ L)X>	/ / ,   / /s   5J..
J=	c                  ^^^^^^^^ [        TR                  S5      nU(       a  TR                  R                  (       d  U " TTTTT5      $ TR                  TR                  S-   5        TR                  S   nTR                  U   nUR                  5       b:  [        R                  " TR                  TR                  UR                  5       5        S mUUUUUUU4S jn	U H  mUR                  T5      n
UT   R                  n[        R                  " T5      nUbv  UR                  5       bZ  [        R                  " TR                  U" 5       R                  5       5      mTc"  [        R                   " [#        S5      U-  5      eOUmUmUU4S jnU	" TSU
;   =(       a    S=(       d    S	S
U
;   U5        M     [%        UR&                  5       H  nUR)                  U5      n[*        R,                  " UT5      nTU-   S-   n[        US5      (       a  [        UR                  5      O[.        R0                  " 5          UR3                  TUUT5        S S S 5        M     g ! , (       d  f       M  = f)Nr  )s   hgr   c                   > T" T5      (       d  g U" 5       nT(       a  TR                   R                  X5      nTc  T	" 5       mTR                  T
U -   XU5        g r&   )r   r  r5  )r  r  r  r  r]  r  r  r*   r   openerr   rv   s        r,   rp   hgsubrepoarchive.<locals>.writeV  sR     Qxxy::((4DxH$d;r/   r  c                 l   > [         R                  " [        R                  R	                  TT 5      5      $ r&   )r   r  r   r   r   )r   r   s   r,   r-   "hgsubrepoarchive.<locals>.<lambda>x  s    dmmBGGLL,FGr/   r  r  r  r  r   r   )r  r   r   _get_stater(  r    r  ru   r3  r]  r!   rt   r!  r"  r   r   r   r   r#  r$  r\   r%  r   r&  r  )r   rv   r1  r   r   r  	lfenabledr  r   rp   r)  r  r5   r*  r+  r,  r-  r  r*   r   s    `````           @@@r,   hgsubrepoarchiver8  G  s   

$89IDJJ//D&&%88IIdkkH$%
++a.C
**S/C
xxztww

CHHJ?H< < YYq\a&++##A&xxz%tzz79??3DE<++S       AGGa%.
GD- 0 #,,'nnW%))'59W$t+	 sG$$ SYY((*+ KK	8V<	+ + (+ +s    I""
I1	bailifchangedc                L   U " U/UQ70 UD6  [        U5         UR                  5       nS S S 5        WR                  (       d3  UR                  (       d"  UR                  (       d  UR
                  (       a  [        R                  " [        S5      5      eg ! , (       d  f       Nr= f)Ns   uncommitted changes)	r   ri   r   r   r  r   r   r   r   )r   rv   r>  r?  r   s        r,   overridebailifchangedr;    sf    	$KKM 
zzQWW		QYYkk!2344 .7 
s   B
B#postcommitstatusc                f    [        U5         U " U/UQ70 UD6sS S S 5        $ ! , (       d  f       g = fr&   r   )r   rv   r>  r?  s       r,   r<  r<    s%    	$D*4*6* 
r   r   c	           
       ^^ [        X2S    R                  5       5      n	U " UUU	UUUUU5      u  p[        X2S    R                  5       5      m[        U5         UR	                  TSS9nS S S 5        US    R                  5       n[        WR                  UR                  -   UR                  -   UR                  -   5      nU Vs/ s H!  n[        R                  " U5      U;   d  M  UPM#     nnU H  n[        R                  " U5      nUUR                  ;  d  M+  UR                  R                  U5      (       a  MM  UR                  [!        S5      U" U5      -  5        U
R#                  U5        M     U HO  nUR$                  (       d  TR'                  U5      (       a  M,  UR	                  [!        S5      U" U5      -  5        MQ     UR)                  5          [        R*                  " X5      nU H  nUR-                  U5        M     UR/                  UR1                  5       5        U Vs/ s H  n[        R                  " U5      PM     nnU H  nUR                  R3                  USS9  M     US    R5                  U5      mS S S 5        U
R7                  U4S jT 5       5        UR7                  U4S jU 5       5        X4$ ! , (       d  f       GNf= fs  snf s  snf ! , (       d  f       Nc= f)NTr   s+   not removing %s: file is already untracked
r   r   c              3  R   >#    U  H  oTR                  5       ;   d  M  Uv   M     g 7fr&   )rs   )r   r*   r>   s     r,   r    cmdutilforget.<locals>.<genexpr>  s     5(Q1779nqq(s   '	'c              3  6   >#    U  H  oT;  d  M
  Uv   M     g 7fr&   r2   )r   r*   rejecteds     r,   r   r@    s     9V'8!!Vs   		)rL   r+   r@   r   ri   r   r   r   r   r   r!   r(   r   rc   r   rb   r   rg   rh   ra   rj   rk   r   rp   rq   r   r   r   )r   ru   rv   r   r   ry   r   r   interactiver   r   forgotr   r+   r   r*   r  r   r   r>   rB  s                      @@r,   cmdutilforgetrE    s[    -UJ4G4G4IJM
	KC 	 Dz':':'<=A	$KKatK, 
Dz""$HAJJ(1994qww>?FAA6>>!#4#@aFA>>!$4==(1J1JGGABXa[P JJqM  ::QWWQZZIIa()HQK78  
**24
A$$Q' 0023/56v!FNN1%v6AII  $ 7 :$$X. 
 JJ5(55
MM9V99;A 
 B* 7 
s7   KK%KAK#- K9K#
KK##
K1c                  ^^	 [        5       m[        5       m	UU	4S jn[        R                  " XU5        T	(       aD  [        R                  " X5      R                  T	5      nT H  u  pgXW   (       a  M  U" Xg5        M     gg)zget pairs of filename and largefile hash in outgoing revisions
in 'missing'.

largefiles already existing on 'other' repository are ignored.

'addfunc' is invoked with each unique pairs of filename and
largefile hash value.
c                ^   > X4nUT;  a#  TR                  U5        TR                  U5        g g r&   rr   )fnlfhashrl  knownslfhashess      r,   dedup_getoutgoings.<locals>.dedup  s-    LF?JJqMLL  r/   N)r:   r!   getlfilestouploadr"   	openstorerd   )
rv   otherr   addfuncrM  lfexistsrI  rJ  rK  rL  s
           @@r,   _getoutgoingsrT    sj     UFuH! TE2))$6==hG JB### ! r/   c                  ^ ^^	 UR                  SS 5      (       a  [        5       mT R                  (       a  0 m	UU	4S jnU	U 4S jnO[        5       m	UU	4S jnS n[        XXE5        T	(       d  T R	                  [        S5      5        g T R	                  [        S5      [        T5      -  5        [        T	5       H3  nT R	                  [        R                  " U5      S-   5        U" U5        M5     T R	                  S5        g g )	Nr   c                f   > U T;  a  / TU '   TU    R                  U5        TR                  U5        g r&   )rg   rr   rI  rJ  rL  touploads     r,   rR  outgoinghook.<locals>.addfunc  s2    X%#%HRL##F+V$r/   c                X   > [        TU    5       H  nTR                  SU-  5        M     g )Ns       %s
)r   r   )rI  rJ  rX  ru   s     r,   
showhashes outgoinghook.<locals>.showhashes  s'    $Xb\2FHH[612 3r/   c                J   > TR                  U 5        TR                  U5        g r&   rH  rW  s     r,   rR  rY     s    R V$r/   c                    g r&   r2   )rI  s    r,   r[  r\    s    r/   s   largefiles: no files to upload
s$   largefiles to upload (%d entities):
   
)
r  r:   	debugflagrT  ri   r   r   r   r!   rt   )
ru   rv   rQ  rz   r   rR  r[  filerL  rX  s
   `       @@r,   outgoinghookrb    s    xx$5<<H%3
 uH% 	d74IIa;<=II:;s8}M x(		&--d3e;<4  ) IIeI  r/   s   outgoings   display outgoing largefilesc                    U " U0 UD6$ r&   r2   r  s      r,   _outgoingcmdrd    s        r/   c                  ^
^ UR                  SS5      nUc	  U(       a  ggU(       a  US   u  pVpxUc  U R                  [        S5      5        g [        5       m[        5       m
U
U4S jn	[	        XUR
                  U	5        T(       d  U R                  [        S5      5        g U R                  [        S	5      [        T
5      [        T5      4-  5        g g )
Nr   F)FTFFr   s   largefiles: (no remote repo)
c                J   > TR                  U 5        TR                  U5        g r&   rH  rW  s     r,   rR  "summaryremotehook.<locals>.addfunc/  s    LLLL r/   s!   largefiles: (no files to upload)
s/   largefiles: %d entities for %d files to upload
)rW   ri   r   r:   rT  r   r   )ru   rv   rz   changeslargeoptr   branchpeeroutgoingrR  rL  rX  s             @@r,   summaryremotehookrn    s    xx%(H !	&-aj#T<IIa9:;55	! 	d("2"2G<IIa=>? IIEFx=#h-01+ 
r/   s   summaryc                f    [        U5         U " X/UQ70 UD6  S S S 5        g ! , (       d  f       g = fr&   r   r   s        r,   overridesummaryrp  @  s'     
$R%%% 
s   "
0	addremovec           
       ^^ Uc  0 n[         R                  " U5      (       d  U " XX4XVS9$ Ub  U" 5         UR                  R                  U5         [         R                  " UR
                  U5      nUR                  [        R                  " 5       / SSSS9u  nmn	S S S 5        TR                  (       as  [        R                  " U5      n
SU
l        U
R                  mUU4S jU
l        [        UR
                  USU
UUR                  S5      40 [        R                   " U5      D6  [#        UR
                  USX$40 [        R                   " U5      D6u  p[%        X!S    R'                  5       U5      nU " XX4XVS9$ ! , (       d  f       N= f)N)open_trFr   ignoredr   unknownTc                @   > U TR                   ;   =(       a    T" U 5      $ r&   )r   )r*   r=   r   s    r,   r-   "scmutiladdremove.<locals>.<lambda>s  s    a199n;;r/   s   dry_run)r!   rY   r   r   rk   ru   ri   r\   r<   r   r7   r8   r=   r   rW   r   	strkwargsr   rL   r+   )r   rv   rx   r   ry   rz   rs  r   unsuremtime_boundaryr>   r   r   r=   r   s                @@r,   scmutiladdremover|  H  sl    |t$$D6TKK 	 
	%	%d	+**477D9
$.$5$5OO %6 %
!> 
, 	yyIIg# ));	GGHHZ 	
   &	
 tW2:2D2DT2JJE 'wT
0C0C0EuMGvGGY 
,	+s   AE<<
F
s   purgec                   ^^^ TR                  5       mTR                  m       SUUU4S jjnUTl        U " TT/UQ70 UD6  TTl        g )Nc           	       > T
" XX#XEU5      n[         R                  " TT5      nUR                   V	s/ s H&  oR                  U	5      R                  (       a  M$  U	PM(     nn	UR
                   V	s/ s H&  oR                  U	5      R                  (       a  M$  U	PM(     nn	[        R                  " UR                  UR                  UR                  UR                  XSUR                  5      $ s  sn	f s  sn	f r&   )r!   rk   rv  r  any_trackedru  r   ri   r   r   r  r   r   )node1node2r   ru  r   rv  listsubreposr   r   r*   	oldstatusrv   ru   s             r,   r   %overridepurge.<locals>.overridestatus  s     %%,
 **2t4
yy
 !(<(<Q(?(K(KAy 	 
 yy
 !(<(<Q(?(K(KAy 	 
 ~~JJAIIw
 	


s   #C+C+/#C0C0)r   NNFFFF)r  ri   )r   ru   rv   dirsrz   r   r  s    ``   @r,   overridepurger    s_     ??DI 
 
. !DKT!D!D!DKr/   s   rollbackc                   UR                  5          UR                  R                  5       nUR                   Vs1 s HN  n[        R                  " U5      (       d  M   UR                  R                  U5      R                  (       a  ML  UiMP     nnU " X40 UD6nUR                  R                  5       nXH:X  a  UsS S S 5        $ US   n	UR                   H  n[        R                  " U5      (       d  M   UR                  U5        UR                  R                  U5      R                  (       a  UR                  R                  USS9  Mw  XY;   a4  X   n
UR                  XZR                  5       U
R                  5       5        M  [        R                  " X%SS5        M     U H  nUR                  R                  USS9  M     S S S 5        U$ s  snf ! , (       d  f       W$ = f)Nr   Tr   r/   F)rj   r   parentsr!   rD   r  r  discardrc   r   r\  r]  r3  rl   )r   ru   rv   rz   beforer*   orphansr   r   pctxfctxr(   s               r,   overriderollbackr    s   	&&( ]]
"" +/==+B+B1+E+M+M " 	 

 b'$'%%'? 
 DzA"""==**1-55II(($(?Y7DKK99;

= ''e<  GII   = 3 
8 M5
 
8 Ms5   )GG(G	G+G-G5CGG
G"s
   transplantc                   UR                  S5      nUR                  R                  [        R                  " U5      5        UR
                  R                  S 5         U " X/UQ70 UD6nUR
                  R                  5         UR                  R                  5         U$ ! UR
                  R                  5         UR                  R                  5         f = f)Nr  c                     g r&   r2   r  s     r,   r-   $overridetransplant.<locals>.<lambda>  r  r/   )rW   r  rg   r!   r  r  r  )r   ru   rv   revsrz   r  r   s          r,   overridetransplantr    s    xx
#Hv99(CD  !:;"b...!!#!M 	!!#!s   B   6Cs   catc                *  ^^^^ [         R                  " X%R                  S5      5      nSn[        5       m[        R
                  " Xc4U-   [        R                  " U5      5      nSUl        UR                  mUU4S jn	Xl	        UR                  mUU4S jn
Xl
        UR                  mU4S jnXl        UR                  U5       GH  n[        R                  " XeR                  S5      US9 n[        R                   " U5      nUb  T" U5      (       aL  Xl   R#                  5       nUR                  S	5      (       a  UR%                  X5      nUR'                  U5        GO [        R(                  " Xl   5      n[        R*                  " UR,                  U5      (       d^  [.        R0                  " U5      nUR                  UU4/5      u  nn[3        U5      S:w  a"  [4        R6                  " [9        S
5      U-  5      e[        R:                  " UR,                  U5      n[=        US5       n[>        R@                  " U5       H  nUR'                  U5        M     S S S 5        S S S 5        SnGM     U$ ! , (       d  f       N= f! , (       d  f       N(= f)Nr  r   Tc                   > T" U 5      (       a  g[         R                  " U 5      nUc  gTR                  U5        T" U5      $ NTF)r!   rt   rr   )r*   r?   notbadr6   s     r,   r   overridecat.<locals>.lfmatchfn  s<    q>>  #:

22r/   c                $   > U T;  a	  T" X5        g g r&   r2   )r*   r   r  	origbadfns     r,   lfbadfnoverridecat.<locals>.lfbadfn  s    F{a r/   c                   > U [         R                  :X  a  gT" U 5      nU(       a  U$ [         R                  " U 5      nUc  gT" U5      $ r  )r!   r   rt   )dirretr?   origvisitdirfns      r,   lfvisitdirfn!overridecat.<locals>.lfvisitdirfn  sI    &"""S!J  %:b!!r/   r	  )pathnamer  s8   largefile %s is not in cache and could not be downloadedrbr   )!r   	revsinglerW   r:   r   r   r   byteskwargsr8   r=   r   visitdirr_   r	   makefileobjr!   rt   r]  r  rp   rZ  inusercacheru   r"   rP  r   r   r   r   usercachepathopenr   filechunkiter)r   ru   rv   file1r   rz   r   errr>   r   r  r  r*   fpr?   r]  rU   storer  r   r   fpinchunkr  r  r6   r  s                          @@@@r,   overridecatr    s   


tXXe_
5C
CUFc8d?H,@,@,FGAA))K II EZZN	" JXXa[  hhx&81E$$Q'Bz[^^v{{}88H%%??13D++CF3))$''488(2248E',yy2t*'>$GW7|q(#kk!. !	!  ++DGGT:$%!%!3!3D!9 ": &- F2 5 6 J	 &%- FEs%   /D<J+/I3J3
J=J
J	_updatec                   UR                  SS 5      nU=(       a    UR                  5       (       + nUR                  5          UR                  R	                  U5         UR                  R                  U5         [        R                  " UR                  U5      n	U	R                  [        R                  " 5       / SSSS9u  pnS S S 5        [        WR                  5      nUS   nX   nW
UR                  -    H  nUR                  R                  U5      nUR                  R!                  U5      (       d  M@  [        R"                  " U5      n[        R$                  " U5      n[        R&                  " UUU[        R(                  " U5      5        UU;   d  M  U[        R*                  " UU   5      :X  d  M  UR-                  U5        M     UR.                   H9  n[        R$                  " U5      nUU;  a  M!  [        R0                  " UUU5        M;     U HE  nW	R3                  U5      nU	R5                  UUR6                  UR8                  UR:                  SS9  MG     W	R=                  UR?                  5       5        [        R@                  " U5      nUR                  S5      nU(       a+  URC                  5       (       a  [D        RF                  " S5      eU " XX4/UQ70 UD6n[        R@                  " U5      n[        RH                  " UU5      nURK                  U5       H  nU	RM                  USSS	9  M     U(       d  U(       d  U(       a(  URO                  URP                  URR                  -   5        [T        RV                  " UR                  UUUS
9  UsS S S 5        sS S S 5        $ ! , (       d  f       GN= f! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f)Nrx   FTrt  r   )rS  rR  p2_infopossibly_dirtywcs1   largefiles is not compatible with in-memory mergerQ  )r  r  ),rW   r<   rj   r   changing_parentsr   r!   rk   ru   ri   r\   r:   r   r   rc   r   rd   hashfiler(   rl   rm   rZ  rr   r   r  r  hacky_extension_update_filetrackedrR  r  rp   rq   r  
isinmemoryr   ProgrammingErrorr  
differencerT  r   r   r  r    r  )r   rv   r(  r<  r   r>  r?  rx   partialr   rz  r   r{  oldcleanr  dctxr5   lfileabsrJ  r(   r  entryr  r  r   r  r  s                              r,   mergeupdater  -  s   jjD)G.gnn..G	t}}55d; ]]))$/..tww=J(2(9(9! ): )%F~ 0 qww<Dzzajj(Eyy~~e,H99##H--__X.FnnU+Ggvv';';H'E $6V-A-AW. $ U# ) WWE~~e,Ht#   uh7  E((/E22 == ++# 3   	0023--d3ZZ"--// ((D  d+FtFvF--d3++KE ((2E""5Td"K 3 %7OOAII		12GGTH7	
 k <; 0/ <;sK   OO9AN/COO9G#O	O/
N>9O
O	O
O)marktouchedc                    U " X/UQ70 UD6n/ nU H/  n[         R                  " U5      nUc  M  UR                  U5        M1     U(       a"  [        R                  " UR
                  UUSSS9  U$ )NFT)r  r  r  )r!   rt   rg   r    r  ru   )	r   rv   rs   r>  r?  r   r  r*   r?   s	            r,   scmutilmarktouchedr    ss    $///FH  #>OOB  GG	
 Mr/   preservedrequirementssupporteddestrequirementsc                X    U " U5      nSUR                   ;   a  UR                  S5        U$ )Nr  )requirementsrr   )r   rv   reqss      r,   upgraderequirementsr    s,     :D)))Kr/   s   largefile://r  c                    UR                  [        5      (       aG  U(       a  Sn[        R                  " U5      eU[	        [        5      S  n[
        R                  " X5      $ U " X4SU0UD6$ )Ns'   cannot use data on a 'largefile://' urlr]  )r   	_lfschemer   r  r   r"   getlfile)r   ru   url_r]  r?  r   lfids          r,   openlargefiler    sa    y!!<C((--C	N$%$$R..B242622r/   r&   rf  )F)TNr/   NN)r   zOptional[MatcherT])T)r   r   )NN)u__doc__
__future__r   
contextlibr7   r   typingr   mercurial.i18nr   mercurial.interfaces.typesr   mercurial.hgwebr   	mercurialr   r	   r
   	copiesmodr   r   r   r   r   r   r   r   r   r\   r   r   mergestatemodr   r   r   r   r   r   urlmodr   mercurial.upgrade_utilsr   upgrade_actionsmercurial.utilsr    r    r!   r"   r8  r1  r0  r6  r2  ehr   MergeActionr7  r@   rL   r   r   r  r   wrapcommandr   r   r   contextmanagerr   r   	hgsubrepor   r   r   r  r  r$  r,  rN  rV  re  rn  r  r  r  r  r  revsetpredicater  r  r  r  extsetupr  r  r  r.  r8  r;  r<  rE  rT  rb  rd  rn  rp  r|  r  r  r  r  r  r  r  r  r  r2   r/   r,   <module>r     ss   O "   	  / '     0 $  %%
&== %%
''++??&3&?&?&G #
$EPET l+- ,- 
	ha 345	iq!678/		

   )! ) %  ! (# $. ""K0!  1!& ""$45!  6!& ""H-( .(
 	- -
 ""G,F -F
 w- w-t  FG		
 EF		
 DE		

  ./. $"@ A
B	C  	&		&, +,8<? -?D *+k ,k\ 0
9 1
9 K(<@ )> L) * &!` "`X (#K
 $K
`  HI		
 89fI	

  $%$0  67fI	

  ++ ?+ , K E !E4  89		

  
*
*  W 2 	Y/" 0"" @ @ 
9 9
 i( )
 9%  $
v v &vr ""I.A= /A=P /*5 +5 ,-+ .+
 (#0 $0f$4%P XtQ/M-NOP  !!D sHdA.L,MNO  &&
 +& 
?H '?HH & &R  @ 7	 8	 D DN 	"Y #Yx -( )( "9:"=> ? ; 	  3 !3r/   