
    q&f                     \   d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z"m#Z# ddl$m%Z& dd	l'm(Z(m)Z)m*Z* ejV                  Z+ejX                  Z,ejZ                  Z-ej\                  Z.ej^                  Z/ ej&                         Z0e)jb                  Z1 ejd                  d
      Z3d Z4ddZ5d Z6d Z7e0jq                  e	d      d        Z9e0ju                  dddd ed      fddd ed      fddd ed      fg      d        Z;e0jq                  ed      d        Z<e0jq                  ed      d        Z=e0jq                  ej                  d      ej|                  d                Z?e0jq                  ej                  d!      ej|                  d"               Z@e0jq                  e j                  d#      d$        ZBe0ju                  d%      d&        ZCe0jq                  e j                  d'      dd(       ZDe0ju                  d)      d*        ZEe0ju                  d+ddd ed,      fdd-d ed.      fdd/d ed0      fg      d1        ZFe0ju                  d2ddd ed3      fg      d4        ZGe0jq                  ed5      	 dd6       ZHe0jq                  ed7      d8        ZIe0jq                  ed9      d:        ZJe0jq                  ed;      	 dd<       ZKe0jq                  ed=      dd>       ZLe0jq                  ed?      dd@       ZMe0jq                  edA      dB        ZNe0ju                  dCddDd edE      fddFg  edG       edH      fg      ddI       ZOe0ju                  dJddFg  edK       edH      fg      dL        ZPe0jq                  edM      dN        ZQe0j                  dO      dP        ZSe0ju                  dQddDd edR      fg      ddS       ZTe0jq                  edT      dU        ZUe0ju                  dVdVW      dX        ZVe0j                  dY        ZXe0ju                  dZ      d[        ZYe0jq                  e	d\      d]        ZZe0jq                  ed\      	 	 	 	 	 dd^       Z[e0jq                  e j                  d\      dd_       Z\e0jq                  ed`      da        Z]e0jq                  edb      dc        Z^e0jq                  edd      de        Z_df Z`dg Zae0ju                  dhddd edi      fg      dj        Zbdk Zce0ju                  dlddd edi      fg      dm        Zde0jq                  edn      	 	 ddo       Zee0ju                  dp      dq        Zfe0ju                  dr      ds        Zge0ju                  dtdtW      du        Zhe0ju                  dv      dw        Zie0jq                  edx      dy        Zje0jq                  edz      d{        Zke0jq                  e&d|      e0jq                  e&d}      d~               ZldZme0jq                  e"d      dd       Zny)zHOverridden Mercurial commands and functions for the largefiles extension    N)_)open)webcommands)archivalcmdutilcopiesdirstateerrorexchange
extensions	exthelper	filemergehg
logcmdutilmatchmerge
mergestatepathutilpycompatscmutilsmartsetsubrepourlutil)actions   )
lfcommandslfutilstorefactorylfmrc                    t        j                   |       }fd|j                  D cg c]  } |      s| c}|_        t        |j                        |_        d |_        |j
                  fd|_        |S c c}w )zMcreate a matcher that matches only the largefiles in the original
    matcherc                 2    t        j                  |       v S Nr   standinfmanifests    </usr/lib/python3/dist-packages/hgext/largefiles/overrides.py<lambda>z)composelargefilematcher.<locals>.<lambda>J   s    fnnQ'83     c                       yNF r.   r+   r)   r*   z)composelargefilematcher.<locals>.<lambda>M       r+   c                 (     |       xr  |       S r#   r.   )r'   lfileorigmatchfns    r)   r*   z)composelargefilematcher.<locals>.<lambda>O   s    %(5{1~ r+   )copy_filesset_filesetalwaysmatchfn)r   r(   mlfr1   r2   s    `  @@r)   composelargefilematcherr;   F   sd     			%A3EXX3rr3AHQXXAJAH))K5AIH 4s
   BBc                 J   t               |j                  |       t        j                  |       }fd|j                  D cg c]  } |      s| c}|_        t        |j                        |_        d |_        |j                  fd|_        |S c c}w )Nc                 n    t        j                  |       xs t        j                  |       v xs | v  S r#   r   	isstandinr%   )r'   excludedr(   s    r)   r*   z*composenormalfilematcher.<locals>.<lambda>Y   s4    Mv~~a0H<MX r+   c                       yr-   r.   r.   r+   r)   r*   z*composenormalfilematcher.<locals>.<lambda>^   r/   r+   c                 (     |       xr  |       S r#   r.   )r'   notlfiler2   s    r)   r*   z*composenormalfilematcher.<locals>.<lambda>`   s    (1+8+a. r+   )r5   updater3   r4   r6   r7   r8   )r   r(   excluder9   r:   r@   rC   r2   s    `   @@@r)   composenormalfilematcherrF   S   s    uH 		%AH XX6r"6AHQXXAJAH))K8AIH 7s   B B c                    |j                  d      }t        j                  | t        j                  |      |j                  d            }d }t        j                  |      rL| j	                  t        j
                  d      }	|	r*t        j                  |j                  dt        |	            }g }
|}|d    }|j                  t        j                  |d             D ]  }|j                  |      }t        j                  |      |v }||v }|xs |}|r(|r&|r#| j                  t        d       ||      z         `|s|ret        j                   |      r{|j"                  j%                  |      s|xr. |j"                  j'                  |      j(                  |dz  dz  k\  }|s|s|s ||      s|
j+                  |       | j,                  s|r| j/                  t        d       ||      z          g }|j1                         5  |j                  d	      sg }t        j2                  | |      }|
D ]t  }t        j                  |      }t        j4                  ||dt        j6                  |j9                  |            
       |j+                  |       |j;                  |       v |j=                  |j?                                ||d    jA                  |      D cg c])  }||jC                         v rt        jD                  |      + c}z  }|
D cg c]	  }||vs| }}d d d        ||fS c c}w c c}w # 1 sw Y   |fS xY w)Nlargelfsizes   patternsr+   c                      y r#   r.   )xys     r)   r*   zaddlargefiles.<locals>.<lambda>t   r/   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   r?   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optsrH   rI   	lfmatcherlfpatslfnamesr9   wctxr'   rZ   r1   nfiler]   aboveminbadstandins
lfdirstatestandinnameaddeds                           r)   addlargefilesr   d   s   HHWE
F%txx'9F I4 v< tyy#tF|DIGA:DYYx((,=>? N
q!T)T	% V56!DE)9)9!)< 99##A& M499??1-55$9MM  Y9Q<q!::UIIa =>!LM3N6 C 
 5xx	"H..r48J 	*$nnQ/##%33DJJqMB	 ,&&q)	* T4467d1	> ##A& C $4qq|44+5, #: 5+5, #:s1   CM'.L:	M	L?(L?,M:
MMc           
      L    |j                  d      }t        ||d    j                               }t        |      5  |j	                  ||       }	d d d        |d    j                         }
	j
                  |	j                  |	j                  |	j                  fD cg c]*  }|D cg c]  }t        j                  |      |
v s| c}, c}}\  }}}} fd}|r|} |||z   |z   t        d            }n-||z   } ||t        d            } ||t        d            xs |}|j                         5  t        j                   |      }t        |      D ]e  } j                  s|j!                  |      s# j	                  t        d       |      z         |rF|rI|j"                  j%                  |d	       g |r|cd d d        S |D cg c]  }t        j                  |       }}|s$|D ]  }|j"                  j%                  |d	       ! |d    j'                  |       |D ]&  }|j)                  t        j*                  |             ( |j-                  |j/                                d d d        |S # 1 sw Y   -xY wc c}w c c}}w c c}w # 1 sw Y   |S xY w)
Nafterr   cleanc                 t    | D ]  }j                  | |      z          t        t        |       dkD        S )Nr   )r[   intlen)rl   msgr'   rn   rr   s      r)   r[   zremovelargefiles.<locals>.warn   s:     	'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)rP   r;   r(   lfstatusrb   modifiedr~   deletedr   r   r%   r   rc   rd   sortedra   rZ   r\   
unlinkpathforgetset_untrackedrm   ri   rj   )rn   ro   rp   rq   rr   dryrunrs   r   r9   sr(   rW   r'   r   r~   r   r   r[   removeresultr|   s   `   `                r)   removelargefilesr      s   HHWEd)<)<)>?A	$ 8KKa;K78Dz""$H ZZ!))QWW=' :qFNN1-9:'#HeWe
#
 uu$a(O&P
 5(
 /   	 
 4**2t4
 	@Azz		!,-;<II(($(?	@ 4 4 .44&..#44  <		$$Qd$;<T
&! 	=A$$V%8%8%;<	= 	0023144 ME8 8 	;'d 544 Ms[   I<	J&J	J	J5A'JJ "JJJ,BJ<J	JJJ#
decodepathc                 4    t        j                  |      xs |S r#   r   rm   )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))rs   c                     |j                  d      r/|j                  d      rt        j                  t        d             | ||g|i |S )NnormalrH   s$   --normal cannot be used with --large)rP   r
   Abortr   r   rn   ro   patsrs   s        r)   overrideaddr      sG    " xxdhhw/kk!CDEED(4(4((r+   rk   c                     |j                  d      r | ||||||fi |S t        ||d||fi |\  }}	t        ||d    j                         |      }
 | |||
|||fi |}|j	                  d |	D               |S )Nr   Fc              3       K   | ]  }|  y wr#   r.   ).0r'   s     r)   	<genexpr>zcmdutiladd.<locals>.<genexpr>   s     Qqs   )rP   r   rF   r(   extend)r   rn   ro   rq   prefixrr   explicitonlyrs   laddedlbadnormalmatcherrz   s               r)   
cmdutiladdr     s     xxBgvxNNN T5'8LtLLFD,d$$&M r4,
O$
OCJJ$Jr+   r   c
                     t        ||d    j                               }
 | |||
||||||		      }t        ||d|||	||      xs |S )NF)r   force)rF   r(   r   )r   rn   ro   rq   r   rr   r   r   subreposr   r   r   s               r)   cmdutilremover   $  sl     -Wd4j6I6I6KLM

F 	eWhe5	
 	 	r+   	_changingc              #     K   t        |dd       x}}	 t        |dd      }|)|s't        j                  |j                  |      }||_        |s|j                  J  | |||      5  |d  n|j                  ||      5  d  d d d        d d d        ||_        y # 1 sw Y   xY w# 1 sw Y   xY w# ||_        w xY wwN_sub_dirstate_large_file_dirstateF)getattrr   rd   rn   r   r   )r   selfro   change_typepresub_dirstatelfds          r)   r   r   <  s      !==C,!d2E:!00$?L!-D%%111$k* 	#!++D+> 		 ! 		 	 !sM   C AB4 %B(?BB(B4 C B%	!B((B1-B4 4	B==C running_statusc              #     K   t        |dd       x}}	 t        |dd      }|)|s't        j                  |j                  |      }||_        |s|j                  J  | ||      5  |d  n|j                  |      5  d  d d d        d d d        ||_        y # 1 sw Y   xY w# 1 sw Y   xY w# ||_        w xY wwr   )r   r   rd   rn   r   r   )r   r   ro   r   r   r   s         r)   r   r   Q  s      !==C,!d2E:!00$?L!-D%%111$ 	#!006 		 ! 		 	 !sM   B>AB2 $B&=BB&
B2 B>B#	B&&B/+B2 2	B;;B>rb   c                 l    t        |j                        5   | ||fi |cd d d        S # 1 sw Y   y xY wr#   r   _repo)r   ro   rev2rs   s       r)   overridestatusfnr   f  s2    	$**	 (D$'$'( ( (s   
*3s   statusc                 ^    t        |      5   | ||g|i |cd d d        S # 1 sw Y   y xY wr#   r   r   s        r)   overridestatusr   l  s2    	$ -B,t,t,- - -s   #,dirtyc                 n    t        |j                        5   | |||      cd d d        S # 1 sw Y   y xY w)N)ignoreupdatemissingr   )r   ro   r   r   s       r)   overridedirtyr   r  s3    	$**	 FD|WEF F Fs   +4s   logc                 D  	 	 	 	 	 	 dfd	}t         j                  	d	fd	}t        j                  t         d|      }t        j                  t        d|      }|5  |5   | g|i |cd d d        cd d d        S # 1 sw Y   nxY wd d d        y # 1 sw Y   y xY w)Nc                    |i } | ||||||      }t        j                   |      \  }}	|j                         r|S t        |	      }t        j                  fdj                         rHt        j                  }
t        j                  j                  |
      dt        |
              fdnd |j                  fd|	D               t        dt        |j                              D ]  }|j                  |   dk(  rt        j                  |j                  |         }||v r||j                  |<   L|j                  |   |vs^j                  j                  |      sz|j                  j!                  |        t        |j                        |_        d	 |_        |j$                  fd
}||_        j'                  ddj)                  t+        |            z         ||fS )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                     | j                  d      r| S t        j                  | d       }|d   |d   dz    ||d         z   S  ||d         S )Ns   set:r      :r   )
startswithrU   	_patsplit)pat	tostandinkindpats      r)   fixpatsz:overridelog.<locals>.overridematchandpats.<locals>.fixpats  s[    ~~g&
((d3Gqz%qzD(9WQZ+@@@WQZ((r+   c                    | j                        r#t        j                  | t              d        r| S t        j
                  j                        r| t              d  } ndz   | z   } t        j                  |       z   S )N   /)r   r   rm   r   osr   isabsr%   )r'   backcwds    r)   r   z<overridelog.<locals>.overridematchandpats.<locals>.tostandin  so     <<%&*=*=aD	n*MH 77==%#d)+Ad
QAfnnQ///r+   c                 Z    t        j                  |       r| S t        j                  |       S r#   r>   )r'   s    r)   r   z<overridelog.<locals>.overridematchandpats.<locals>.tostandin  s$    ##A&H~~a((r+   c              3   0   K   | ]  } |        y wr#   r.   )r   r'   r   r   s     r)   r   z<overridelog.<locals>.overridematchandpats.<locals>.<genexpr>  s     5aGAy)5s   r      .c                       yr-   r.   r.   r+   r)   r*   z;overridelog.<locals>.overridematchandpats.<locals>.<lambda>  r/   r+   c                 X    t        j                  |       }|	 |      ry |       }|S NTr   )r'   r:   rr2   s      r)   	lfmatchfnz<overridelog.<locals>.overridematchandpats.<locals>.lfmatchfn  s/    $$Q'B~+b/AAHr+   s   updated patterns: %s
s   , )r3   r7   r5   r   r%   getcwd	shortnamer   pconvertpathtor   rD   ranger4   r\   isdirr`   r6   r8   debugjoinr   )r   ctxr   rs   globbeddefaultr   matchandpatsr9   phglfir%   r   r   r   r   r2   r   ro   rn   s                 @@@@@r)   overridematchandpatsz)overridelog.<locals>.overridematchandpatsz  s    <DCtWgUKyy&188:  1v#)>> 	) kkm##D==T!2<c$iZ!@AD0&)
 	5155q#ahh-( 	)Axx{d"nnQXXa[1G
 #~%!C'DIIOOG,D(	) ]
 ii	 	
*UZZt-EEF$wr+   c                 8    |d    } ||||      \  }fdS )Nr   c                     S r#   r.   )r   r   s    r)   r*   z>overridelog.<locals>.overridemakefilematcher.<locals>.<lambda>  s    5 r+   r.   )r   ro   r   rs   r   rw   r   oldmatchandpatss         @r)   overridemakefilematcherz,overridelog.<locals>.overridemakefilematcher  s&    Dz%dD$eDt  r+   r   _makenofollowfilematcherr.   NFs   relpathNr#   )r   r   r   wrappedfunctionr   )
r   rn   ro   r   rs   r   r   wrappedmatchandpatswrappedmakefilematcherr   s
    ``      @r)   overridelogr   x  s    
 _L **O!
 %44!5 (77.0G 
 -4 -B,t,t,- - - - - - -s$   B!B.	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                     |j                  dd      }|j                  dd      }|j                  dd      } | ||g|i |}|s|s|r|xs t        j                  ||||      }|S )NrH   Flfalfc)popr   verifylfiles)	r   rn   ro   r   rs   rH   allcontentsr   s	            r)   overrideverifyr    sq    0 HHWe$E
((5%
 Cxxu%H"d*T*T*FxK:222tS(KMr+   s
   debugstates   display largefiles dirstatec                     |j                  dd      }|r G fdd      } | |g|i | y  | g|i | y )NrH   Fc                   8    e Zd Z ej                  W W        Zy)$overridedebugstate.<locals>.fakerepoN)__name__
__module____qualname__r   rd   r	   )ro   rn   s   r)   fakerepor
    s    ,v,,R6Hr+   r  )r  )r   rn   ro   r   rs   rH   r  s    ``    r)   overridedebugstater    sL    
 HHWe$E	7 	7 	R)D)D)R%%%r+   _checkunknownfilec           	      n    t        j                   |j                  |            |v ry | |||||||      S r-   )r   r%   	normalize)origfnr	   r\   dircacherw   mctxr'   f2s           r)   overridecheckunknownfiler  -  s=     ~~(h((+,4(D(D$2>>r+   calculateupdatesc           	         |xr | }
 | |||||||g|i |	}|
r|S t               }|j                         D ]X  }t        j                  |      }|||v r|j	                  |       0t        j
                  |      |v sH|j	                  |       Z t        |      D ].  }t        j
                  |      }|j                  |d      \  }}}|j                  |d      \  }}}|t        t        fv r|t        k7  r|t        k(  r|\  }}}}}||   j                         df}t        d      |z  }|j                  j                  |d      dk(  r1|j                  |t        d d       |j                  |t        |d       nK|j                  |t         d d       |r|j                  |t         d d       n|j                  |t        d d       |t        t        fv s;|t        k7  sF|t        k(  r|\  }}}}}||   j                         df}t        d      |z  }|j                  j                  |d      dk(  rf|r2|j                  |t         d d       |j                  |t         d d       |j                  |t"        d d	       |j                  |t$        d d
       |j                  |t        |d       |j                  |t        d d       1 |S )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)r5   rl   r   rm   rk   r%   r   getfile
ACTION_GETACTION_DELETED_CHANGEDACTION_REMOVEflagsr   rn   promptchoiceaddfileACTION_KEEP#MERGE_ACTION_LARGEFILE_MARK_REMOVED
ACTION_ADD)r  ro   p1p2pasbranchmerger   acceptremoteargskwargs	overwritemresultlfilesr'   rm   r1   r%   lmlargslmsgsmsargssmsgf1r  famoveancusermsgs                                r)   overridecalculateupdatesr9  P  s    )k/Ib"c;|>BFLG  UF]]_ **1-#(:JJ|$^^A"$JJqM  U..'#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Un Nr+   recordupdatesc                     t         |v rdt        j                  |j                  |      }|t            D ]8  \  }}}|j                  j                  |dd       |j                  |dd       :  | ||||      S )NTF
p1_tracked
wc_tracked)r"  r   rd   rn   r	   update_file)	r   ro   r   r'  getfiledatar|   r1   r)  r   s	            r)   mergerecordupdatesrA    s    *g5**477D9
 '(K L 	ME4 MM%%e%O""5Ut"L	M g{K88r+   r   c	           
      |   t        j                  |      r |j                         s|j                         r | ||||||||      S t        j                  |      j	                         }	t        j                  |      j	                         }
t        j                  |      j	                         }||	k7  r||
k7  r|
|	k(  sB|j
                  j                  t        d      t        j                  |      |	|
|fz  d      dk(  r=|j                  |j                         |j                         |j                                y)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   r?   isabsentreadasstandinlowerrn   r  r   rm   wwriter   datar  )r  ro   rw   mynoder   fcdfcofcarC  ahashdhashohashs               r)   overridefilemergerP    s    D!S\\^s||~dD&$S#fMM  %++-E  %++-E  %++-EUNUNww##+ &&t,eUEBC 	 
 	CHHJ
CIIK8r+   
pathcopiesc                      | |||      }i }|j                         D ]8  \  }}t        j                  |      xs ||t        j                  |      xs |<   : |S )N)r   )itemsr   rm   )r   ctx1ctx2r   r   updatedkvs           r)   copiespathcopiesrY    sa    $E*FG K1/5/B/B1/E/J##A&+!,K Nr+   r3   c           
      	   t        |      dk  r | |||      S d}d}d    j                         	 	 	 	 	 dfd	}t        j                  t        d|      5  	  | |||      }	d d d        	 j                          fd}t	        j                  |      }|d	   }t        j                  j                  |      r@t        j                  j                   ||            st        j                   ||             	 j!                         }d    j                         	 	 	 	 	 dfd
	}g }|D ]@  }t#        j$                  |      |j'                  |       *|j'                   ||             B g fd}t        j                  t(        d|      5  t        j                  t        d|      5  	 | |||      z  }	d d d        d d d        t+        j,                  |      }D ]  \  }}t*        j.                  |v s|j1                  j3                  t*        j.                              sI|j5                  j3                  t+        j6                  d            d      }|j5                  j3                  t+        j6                  d            d      }j8                  j;                  j3                  |            xs d}t        j                  j                  |      st        j                  |       |rct        j<                  j3                  |      j3                  |             j8                  j?                  |d       |jA                  |       n4t)        jB                  j3                  |      j3                  |             |jE                  |        |jG                  jI                                jK                          |r |rt        j                  t        d            	S # t
        j                  $ r)}
|
j                  t        d      k7  r|
d}d}	Y d }
~
d }
~
ww xY w# 1 sw Y   xY w# t        $ r 	cY S w xY w# 1 sw Y   xY w# 1 sw Y   xY w# t
        j                  $ r&}
|
j                  t        d      k7  r|
d}Y d }
~
d }
~
ww xY w# jK                          w xY w)N   Fc                 @    |i } | ||||||      }t        |      S )Nr   )rF   )	r   r   r   rs   r   r   r   r   r(   s	           r)   normalfilesmatchfnz(overridecopy.<locals>.normalfilesmatchfn  s0     <DS$gweD'x88r+   r   s   no files to copyTr   c                     t        j                  j                  j                         |       }j                  j                  t        j                  |            S r#   )r   	canonpathrV   r   r\   r   r   r%   )relpathr   ro   s     r)   makestandinz!overridecopy.<locals>.makestandin-  s=    !!$))T[[]GDyy~~fnnT233r+   c                 *   |i }g }|D ]j  }t        j                  |      Bt        j                  |v r0|j	                  |j                  t        j                  d             Z|j	                  |       l  | ||||||      }	t        j                  |	      }
fd}|
j                  D cg c]   } ||      st        j                  |      " c}|
_        t        |
j                        |
_
        |
j                  fd}||
_        |
S c c}w )Nr+   r   c                 2    t        j                  |       v S r#   r$   r&   s    r)   r*   z5overridecopy.<locals>.overridematch.<locals>.<lambda>T  s    fnnQ/8; r+   c                 ^    t        j                  |       }|d uxr | v xr  |      xs d S r#   r   )r'   r1   r(   r2   s     r)   r8   z4overridecopy.<locals>.overridematch.<locals>.matchfnY  sC    ++A.% +h+#E* 	r+   )rU   patkindr   r   r`   replacer3   r4   r%   r5   r6   r8   )r   r   r   rs   r   r   r   newpatsr   r   r9   r1   r'   r8   r2   r(   s                 @r)   overridematchz#overridecopy.<locals>.overridematch?  s     |G  (##C(0V5E5E5LNN3;;v/?/?#EFNN3'	(
 gtWgUKE		% A;E3488HauQxq)HAHQXXAJ))K  AIH Is   .D<Dc                 x   t         j                  |v r|j                  j                  t         j                              rY|j	                  t         j                  d      }d   s4t
        j                  j                  |      rt        dt        d            j                  ||f        | ||g|i | y )Nr+   s   forces$   destination largefile already exists)r   r   r   rg   rg  r   r   r]   IOErrorr   r`   )	r   srcdestr)  r*  	destlfilecopiedfilesrs   ro   s	         r)   overridecopyfilez&overridecopy.<locals>.overridecopyfilen  s    3&4??

6++,, !LL)9)93?	H~"''..*C!QFG  T{+d,T,V,r+   copyfiler+   r   r   r   )&r   r(   r   r   r   r
   r   messager   r   OSError
expandpatsr   r   r   makedirsrc   rU   rf  r`   r   r   rd   r   r   rg   rg  r%   r\   dirnamerenamer   r   rq  rh   ri   rj   release)r   rn   ro   r   rs   rw  nonormalfilesnolfilesr]  r   era  fullpatsrm  rc   ri  listpatsr   rp  r|   rl  srclfilern  destlfiledirro  r(   s     ` `                   @@r)   overridecopyr    s    4y1}BdD&11 MHDz""$H
 9 
	#	#GW6H	I 	"dD$7F4 !!$'HB<D	ww}}Tww}}[./KKD)*b 

:&&(
 $	L  	2C$0$C 01		2 
	- ''j:JK 	A++GWmL A$r44@@A	A **2t4
& 	2KS$3&4??

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

98MN&&y1'	2( 	0023 	Mkk!/011MA {{ 	yyA122 $F	   bA A	A 	A4 ;; 99-..GH	 	s   QP3Q BQ9 Q,7QQ,9Q9 	.Q9 8FQ9 P>P93Q9P>>QQQQQ)	$Q,,Q61Q9 9R2R-(R5 -R22R5 5Srevertc           
         j                         5  j                  j                        5  t        j                  |      }t        j
                  |      }|j                  j                                |j                  D ],  }t        j                  |t        j                  |             . |j                  D ]N  }t        j                  |      }	j                  j                  |	      s4j                  j                  |	       P t        j                        }
	 	 	 	 	 dfd	}t!        j"                  t$        d|      5   | |g|i | d d d        t        j                        }t        j&                  |
|      }t)        j*                  ||dd       d d d        d d d        y # 1 sw Y   _xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NFc                 :   |i } | |||||      }t        j                   |      }t        j                  j                         j                  j                         d      }	d    }
g }|j
                  D ]b  }t        j                  |      }|v s|v r|j                  |       2||
v s|	j                  |      j                  rR|j                  |       d ||_        t        |j
                        |_        |j                  fd}||_        |S )Nr   Fc                 j    t        j                  |       }| |      xr
 | v xs | v S  |       S r#   r   )r'   r1   r   r  r2   s     r)   r8   z6overriderevert.<locals>.overridematch.<locals>.matchfn  s@    ++A.$&u-I183HqDyI"1~%r+   )r3   r   rd   ro   rn   r4   r%   r`   	get_entryremovedr5   r6   r8   )r   r  r   rs   r   r   r   r   r9   r|   rw   
matchfilesr'   r%   r8   r2   r   ro   s    `             @r)   ri  z%overriderevert.<locals>.overridematch  s    |tT7G5IE		% A  ..				UJ :DJXX ) ..+c>W_%%g._
(<(<Q(?(G(G%%a() "AHQXXAJ))K&  AIHr+   r   T)printmessagenormallookupr   )rc   r	   r   r   rd   lfdirstatestatusri   rj   r   updatestandinr%   r   r\   r]   unlinkgetstandinsstater   r   r   getlfilestoupdater   updatelfiles)r   rn   ro   r   r   rs   r|   r   r1   fstandinoldstandinsri  newstandinsfilelists     ``          r)   overriderevertr    s   
 
 F
t}}33D9 F
**2t4
##J50023ZZ 	EE  ufnnU.CD	EYY 	+E~~e,Hyy)		  *	+
 --d3
 +	Z ''-H 	/T3...	/ --d3++KE 	hU	
IF
 F
 F
t	/ 	/uF
 F
 F
 F
sC   GCG6AGF<AG+G<GGG	GGs   pulls   all-largefiless7   download all pulled versions of largefiles (DEPRECATED)s   lfrevs'   download largefiles for these revisionss   REVc                    t        |      }|sd}||_         | |||fi |}t        |      }|j                  dg       }|j                  d      r|j                  d       |r||kD  rd}	||_        	 t        j                  ||      D ]G  }
|j                  t        d      |
z         t        j                  |||
      \  }}|	t        |      z  }	I 	 |`|j                  t        d      |	z         |S # |`w xY w)Ns   defaultlfrevall_largefiles   pulled()r   s#   pulling largefiles for revision %d
s   %d largefiles cached
)r   lfpullsourcerP   r`   firstpulledr   revrangenoter   r   cachelfilesrb   )r   rn   ro   sourcers   revsprepullr   revspostpulllfrevs	numcachedrevcachedr   s                r)   overridepullr    s   & d)KD"dF+d+Ft9LXXgr"Fxx !k",,	&	!!**48 )ABSHI$.$:$:2tS$I!S[(	)
  
		!-.:;M  s   2A C4 4C8s   pushs%   upload largefiles for these revisionsc                     |j                  dd      }|r+|j                  di       }t        j                  ||      |d<    | ||g|i |S )z<Override push command and store --lfrev parameters in opargsr  Nopargss   lfrevs)r  
setdefaultr   r  )r   rn   ro   r)  r*  r  r  s          r)   overridepushr  %  sW     ZZ&F""8R0&//f=yD*4*6**r+   pushoperationc                 H    |j                  dd      } | |i |}||_        |S )z=Override pushoperation constructor and store lfrevs parameterr  N)r  r  )r   r)  r*  r  pushops        r)   exchangepushoperationr  :  s/     ZZ$'F4"6"FFMMr+   r  c                     	 | j                   }t        j                  |D cg c]
  }||k\  s	| c}      S # t        $ r t        j                  t	        d            w xY wc c}w )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)ro   subsetrK   r  r   s        r)   pulledrevsetsymbolr  C  sb    (D&& C1!{2BQCDD  Dkk!ABCCDCs   7 
A"A"(As   clones'   download all versions of all largefilesc                     |}|t        j                  |      }|j                  d      r6t        j                  |      s!t	        j
                  t        d      |z         | |||fi |S )Nr  s>   --all-largefiles is incompatible with non-local destination %s)r   defaultdestrP   islocalr
   r   r   )r   rn   r  rm  rs   ds         r)   overridecloner  ^  sk     	AyNN6"xx !"**Q-kkOP
 	

 FD)D))r+   clonec                      | ||g|i |}|I|\  }}|j                         }|s|S |j                  d      rt        j                  ||      \  }	}
|
dk7  ry |S )Ns   all_largefilesr   )localrP   r   downloadlfiles)r   rn   rs   r)  r*  r   
sourcerepodestreporo   successr   s              r)   hgcloner  v  ss    "d,T,V,F%
H~~
 M
 88%&)88TBGW!|Mr+      rebase)	extensionc                    t        |d      s
 | ||fi |S |j                  d      }|j                  j                  t	        j
                  |             |j                  j                  d        	 |j                  ddid      5   | ||fi |cd d d        |j                  j                          |j                  j                          S # 1 sw Y   nxY w	 |j                  j                          |j                  j                          y # |j                  j                          |j                  j                          w xY w)N_largefilesenabledcontinuec                       y r#   r.   r   rs   s     r)   r*   z#overriderebasecmd.<locals>.<lambda>  r/   r+   )r  s   experimental.inmemoryF
   largefiles)	hasattrrP   _lfcommithooksr`   r   automatedcommithook_lfstatuswritersconfigoverrider  )r   rn   ro   rs   resumings        r)   overriderebasecmdr    s"   4-.B%%%xx
#Hv99(CD  !:;"2E:M
 	* D)D)	* 	*
 	!!#!	* 	* 	*
 	!!#! 	!!#!s$   3D 
C	D CD 6Ec                     	 t        j                  d      }d }t        j                  |d|       y # t        $ r Y y w xY w)Nr  c                     d|d<    | |i |S )NFinmemoryr.   r   r)  r*  s      r)   	_dorebasez!overriderebase.<locals>._dorebase  s    !&F:(((r+   r  )r   findwrapfunctionKeyError)rn   rebaser  s      r)   overriderebaser    sC    
@+
	) 	Y?  s   2 	>>s   archivec                     t        |j                               5   | ||j                         |fi |cd d d        S # 1 sw Y   y xY wr#   )r   
unfiltered)r   rn   ro   rm  rs   s        r)   overridearchivecmdr    s>    	$//#	$ 9B)48489 9 9s	   =Aarchivec                 h    t        |j                        5   | |      cd d d        S # 1 sw Y   y xY wr#   )r   ro   )r   webs     r)   hgwebarchiver    s*    	#((	 Cy  s   (1c
                 >   j                   s*j                         j                   s | |||||		      S |!t        j                  j                  |       |t
        j                  vr!t        j                  t        d      |z        |   |dk(  r r5t        j                  t        d            t        j                  ||      fd}
t        j                  |   ||xs j                         d         j                  j                  dd      r |
dd	d
fd       D ]  }j                  |      }|   j                  }t        j                   |      }|W|Lt        j"                   |       j%                               #t        j                  t        d      |z        ||}fd} |
|d|v xr dxs d	d|v |        |	rt'        j(                        D ]  }j+                  |      }t-        j.                  |      }|z   dz   }t1        |d      xr t        |j2                        xs t5        j6                         5  |j9                  ||       d d d         j;                          y # 1 sw Y   xY w)Ns   unknown archive type '%s's   filess*   cannot give prefix when archiving to filesc                     r	 |       sy  |       }r	j                  | |      }j                  | z   |||       y r#   )
wwritedatar   )
namemodeislinkgetdatarH  archiverdecoder   r   ro   s
        r)   ri   zoverridearchive.<locals>.write  sA    ty??4.D$fd;r+   r   s   uis   archivemetas   .hg_archival.txt  Fc                  .    t        j                         S r#   )r   buildmetadata)r   s   r)   r*   z!overridearchive.<locals>.<lambda>  s    H**3/ r+   4   largefile %s not found in repo store or system cachec                  .    t        j                         S r#   )r   readfile)r   s   r)   r*   z!overridearchive.<locals>.<lambda>  s    dmmD1 r+      x     lr   r   )r   r  r   r  rn   r   	archiversr
   r   r   
tidyprefixdate
configboolr  rH  r   rm   findfilestripr   substate
workingsubrU   subdirmatcherr  r   r   nullcontextmanagerr  done)r   ro   rm  nodekindr  r   r   mtimer   ri   r'   ffr  r1   subpathsubsubmatch	subprefixr  r   r   s    `   ```           @@@r)   overridearchiver    s    ==!2!;!;$dFE65(
 	
 twwd38%%%kk!89D@AA
t*Cx++a MNOO$$T48< < !!$'e.Dsxxz!}EHww%0/		
  EYYq\a&++##A&tWY__->?<++S     A1Ga%.
GD+E. cll+ 	;G..)C--gu=H(4/I W% (SYY'-**,;
 Hi:; ;	;  MMO; ;s   $JJ	c                    t        j                  d      }|rj                  j                  s |       S j                  j                  dz          j                  d   }j                  |   }|j                         9t        j                  j                  j                  |j                                fd}	|D ]  |j                        }
|   j                  }t        j                        }|p|j                         Vt        j                  j                   |       j                               #t        j                   t#        d      |z        ||fd} |	d|
v xr dxs d	d
|
v |        t%        |j&                        D ]  }|j)                  |      }t+        j,                  |      }|z   dz   }t        |d      xr t        |j                        xs t/        j0                         5  |j3                  ||       d d d         y # 1 sw Y   xY w)Nr  )s   hgr   c                     r	       sy  |       }r
j                   j                  | |      }j                  	| z   |||       y r#   )r   r  r   )r  r  r  r  rH  r  r  r'   r   r   ro   s        r)   ri   zhgsubrepoarchive.<locals>.write+  sI     qy::((t4D$fd;r+   r  c                  j    t        j                  t        j                  j	                               S r#   )r   r  r   r   r   )r   r   s   r)   r*   z"hgsubrepoarchive.<locals>.<lambda>J  s    dmmBGGLL,FG r+   r  r  r  r  r   r   )r  r   r   _get_stater  r   r  rn   r  rH  r   rm   r  r  r
   r   r   r   r  r  rU   r  r   r  r  )r   ro   r  r   r   r  	lfenabledr  r   ri   r   r  r1   r  r  r  r  r'   r   s    `````           @@r)   hgsubrepoarchiver    s   

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

CHHJ?	< 	<  EYYq\a&++##A&xxz%tzz79??3DE<++S     AGGa%.
GD-E0 #,,' ?nnW%))'59W$t+	 C! $#)&&(	?
 KK)Xv>	? 	??	? 	?s   H66H?	bailifchangedc                     | |g|i | t        |      5  |j                         }d d d        j                  s$|j                  s|j                  s|j
                  rt        j                  t        d            y # 1 sw Y   XxY w)Ns   uncommitted changes)	r   rb   r   r~   r  r   r
   r   r   )r   ro   r)  r*  r   s        r)   overridebailifchangedr  b  sn    	$ KKMzzQWW		QYYkk!2344 .7 s   B  B	postcommitstatusc                 \    t        |      5   | |g|i |cd d d        S # 1 sw Y   y xY wr#   r   )r   ro   r)  r*  s       r)   r  r  k  s0    	$ +D*4*6*+ + +s   "+r   c	           
         t        ||d    j                               }	 | |||	|||||      \  }
}t        ||d    j                               t        |      5  |j	                  d      }d d d        |d    j                         }t        j                  |j                  z   |j                  z   |j                  z         }|D cg c]  }t        j                  |      |v s| }}|D ]v  }t        j                  |      }||j                  vs'|j                  j                  |      rC|j                  t!        d       ||      z         |
j#                  |       x |D ]C  }|j$                  sj'                  |      r!|j	                  t!        d       ||      z         E |j)                         5  t        j*                  ||      }|D ]  }|j-                  |        |j/                  |j1                                |D cg c]  }t        j                  |       }}|D ]  }|j                  j3                  |d       ! |d    j5                  |      d d d        |
j7                  fdD               |j7                  fd|D               |
|fS # 1 sw Y   ;xY wc c}w c c}w # 1 sw Y   XxY w)NTr   s+   not removing %s: file is already untracked
r   r   c              3   H   K   | ]  }|j                         v s|  y wr#   )rl   )r   r'   r9   s     r)   r   z cmdutilforget.<locals>.<genexpr>  s     5Qa1779nq5s   ""c              3   ,   K   | ]  }|vs|  y wr#   r.   )r   r'   rejecteds     r)   r   z cmdutilforget.<locals>.<genexpr>  s     9q'8!9s   	)rF   r(   r;   r   rb   r   r   r~   r   r   r   r%   r	   r\   r   r[   r   r`   ra   rZ   rc   rd   r   ri   rj   r   r   r   )r   rn   ro   r   r   rr   r   r   interactiver   rz   forgotr   r(   r   r'   r  r|   r{   r9   r  s                      @@r)   cmdutilforgetr  q  s    -UDJ4G4G4IJM
	KC 	 tDz':':'<=A	$ -KKatK,-Dz""$HAJJ(1994qww>?FAA6>>!#4#@aAFA >>!$4==(1JGGABXa[P JJqM  9::QWWQZIIa()HQK789 
 /**2t4
 	(A$$Q'	(0023/56!FNN1%66 	8AII  $ 7	8:$$X./ JJ5(55
MM9V99;A- - B* 7/ /s7   J'	J4&J4?AJ>J9-:J>'J19J>>Kc                    	 t               t               		fd}t        j                  | ||       	r?t        j                  | |      j                  	      }D ]  \  }}||   r |||        yy)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                 \    | |f}|vr#j                  |       j                  |       y y r#   rk   )fnlfhashrW  knownslfhashess      r)   dedupz_getoutgoings.<locals>.dedup  s/    LF?JJqMLL  r+   N)r5   r   getlfilestouploadr   	openstorer]   )
ro   otherr   addfuncr   lfexistsr  r  r  r  s
           @@r)   _getoutgoingsr&    sv     UFuH! T7E2))$6==hG  	$JBF#F#	$ r+   c                    	 |j                  dd       rt                j                  ri 		fd}	 fd}nt               		fd}d }t        ||||       	s j	                  t        d             y  j	                  t        d      t              z         t        	      D ]1  } j	                  t        j                  |      dz           ||       3  j	                  d       y y )	Nr   c                 b    | vrg | <   |    j                  |       j                  |       y r#   )r`   rk   r  r  r  touploads     r)   r$  zoutgoinghook.<locals>.addfunc  s2    X%#%HRL##F+V$r+   c                 T    t        |          D ]  }j                  d|z          y )Ns       %s
)r   r   )r  r  r*  rn   s     r)   
showhashesz outgoinghook.<locals>.showhashes  s,    $Xb\2 3FHH[6123r+   c                 J    j                  |        j                  |       y r#   r  r)  s     r)   r$  zoutgoinghook.<locals>.addfunc  s    R V$r+   c                      y r#   r.   )r  s    r)   r,  z outgoinghook.<locals>.showhashes  s    r+   s   largefiles: no files to upload
s$   largefiles to upload (%d entities):
   
)
r  r5   	debugflagr&  rb   r   r   r   r   rm   )
rn   ro   r#  rs   r   r$  r,  filer  r*  s
   `       @@r)   outgoinghookr2    s    xx$5<<H%3
 uH% 	dE7G4IIa;<=II:;s8}M x( !		&--d3e;<4 ! IIeI  r+   s   outgoings   display outgoing largefilesc                      | |i |S r#   r.   r  s      r)   _outgoingcmdr4    s        r+   c                   
 |j                  dd      }||ryy|r|d   \  }}}}|| j                  t        d             y t               t               

fd}	t	        |||j
                  |	       s| j                  t        d             y | j                  t        d	      t        
      t              fz         y y )
Nr   F)FTFFr   s   largefiles: (no remote repo)
c                 J    j                  |        j                  |       y r#   r  r)  s     r)   r$  z"summaryremotehook.<locals>.addfunc  s    LLLL r+   s!   largefiles: (no files to upload)
s/   largefiles: %d entities for %d files to upload
)rP   rb   r   r5   r&  r   r   )rn   ro   rs   changeslargeoptr   branchpeeroutgoingr$  r  r*  s             @@r)   summaryremotehookr=    s    xx%(H !	&-aj#VT8<IIa9:;55	! 	dD("2"2G<IIa=>? IIEFx=#h-01+ 
r+   s   summaryc                 ^    t        |      5   | ||g|i | d d d        y # 1 sw Y   y xY wr#   r   r   s        r)   overridesummaryr?    s4     
$ &R%%%& & &s   #,	addremovec           
          |i }t        j                  |      s | ||||||      S | |        |j                  j                  |      5  t        j                  |j
                  |      }|j                  t        j                         g ddd      \  }}	d d d        j                  rit        j                  |      }
|
j                  fd|
_        t        |j
                  |d|
||j                  d      fi t        j                  |       t!        |j
                  |d||fi t        j                  |      \  }}t#        ||d    j%                         |      } | ||||||      S # 1 sw Y   xY w)N)open_trFr   ignoredr   unknownc                 4    | j                   v xr  |       S r#   )r   )r'   r8   r   s    r)   r*   z"scmutiladdremove.<locals>.<lambda>D  s    a199n; r+   Ts   dry_run)r   rR   r	   r   rd   rn   rb   rU   r7   r   r3   r8   r   rP   r   	strkwargsr   rF   r(   )r   ro   rq   r   rr   rs   rB  r|   unsuremtime_boundaryr9   r~   rz   r8   r   s                @@r)   scmutiladdremoverJ    sz    |t$D'68T7KK 	 
	%	%d	+ 
**477D9
$.$5$5OO %6 %
!>
 	yyIIg ));	GGHHZ 	
   &	
 tWh2:2D2DT2JJE3 'wT
0C0C0EuMGgvxwGGW
 
s   AE44E=s   purgec                     j                         j                  	 	 	 	 	 	 	 dfd	}|_         | g|i | _        y )Nc           	          
| ||||||      }t        j                        }|j                  D 	cg c]   }	|j                  |	      j                  r|	" }}	|j
                  D 	cg c]   }	|j                  |	      j                  r|	" }}	t        j                  |j                  |j                  |j                  |j                  |||j                        S c c}	w c c}	w r#   )r   rd   rE  r  any_trackedrD  r   rb   r   r~   r  r   r   )node1node2r   rD  r   rE  listsubreposr   r|   r'   	oldstatusro   rn   s             r)   r   z%overridepurge.<locals>.overridestatusl  s     5%%,
 **2t4
yy

(<(<Q(?(K(KA
 
 yy

(<(<Q(?(K(KA
 
 ~~JJAIIw
 	


s    CC) C"
C")r   NNFFFF)r  rb   )r   rn   ro   dirsrs   r   rQ  s    ``   @r)   overridepurgerS  ^  sZ     ??DI 
. !DKT!D!D!DKr+   s   rollbackc                    |j                         5  |j                  j                         }|j                  D ch c]>  }t        j                  |      r'|j                  j                  |      j                  s|@ }} | ||fi |}|j                  j                         }||k(  r|cd d d        S |d   }	|j                  D ]  }t        j                  |      s|j                  |       |j                  j                  |      j                  r|j                  j                  |d       m||	v r5|	|   }
|j                  ||
j                         |
j                                t        j                  ||dd        |D ]  }|j                  j                  |d       ! 	 d d d        |S c c}w # 1 sw Y   S xY w)Nr   Tr   r+   F)rc   r	   parentsr   r?   r  r  discardr\   r   rG  rH  r  re   )r   rn   ro   rs   beforer'   orphansr   r   pctxfctxr%   s               r)   overriderollbackr[    s   	 >&&( ]]
"4==+B+B1+E+M+M 
 

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

= ''ae<	=  	>GII   =	>3>8 M5
>8 Ms*   )F8AF3=,F83)F8CF83F88Gs
   transplantc                    |j                  d      }|j                  j                  t        j                  |             |j
                  j                  d        	  | ||g|i |}|j
                  j                          |j                  j                          |S # |j
                  j                          |j                  j                          w xY w)Nr  c                       y r#   r.   r  s     r)   r*   z$overridetransplant.<locals>.<lambda>  r/   r+   )rP   r  r`   r   r  r  r  )r   rn   ro   revsrs   r  r   s          r)   overridetransplantr_    s    xx
#Hv99(CD  !:;"b$...!!#!M 	!!#!s   B   6Cs   catc                    t        j                  ||j                  d            }d}t               t	        j
                  ||f|z   t        j                  |            }|j                  fd}	|	|_        |j                  fd}
|
|_	        |j                  fd}||_
        |j                  |      D ]  }t        j                  ||j                  d      |      5 }t        j                  |      }| |      rH||   j!                         }|j                  d      r|j#                  ||      }|j%                  |       nt        j&                  ||         }t        j(                  |j*                  |      s[t-        j.                  |      }|j                  ||fg      \  }}t1        |      dk7  r!t3        j4                  t7        d	      |z        t        j8                  |j*                  |      }t;        |d
      5 }t=        j>                  |      D ]  }|j%                  |        	 d d d        d d d        d} |S # 1 sw Y   xY w# 1 sw Y   xY w)Nr  r   c                 x     |       ryt        j                  |       }|yj                  |        |      S NTF)r   rm   rk   )r'   r:   notbadr2   s     r)   r   zoverridecat.<locals>.lfmatchfn  s:    q>  #:

22r+   c                 "    | vr
 | |       y y r#   r.   )r'   r   rc  	origbadfns     r)   lfbadfnzoverridecat.<locals>.lfbadfn  s    F{a r+   c                     | t         j                  k(  ry |       }|r|S t        j                  |       }|y |      S rb  )r   r   rm   )dirretr:   origvisitdirfns      r)   lfvisitdirfnz!overridecat.<locals>.lfvisitdirfn  sI    &"""S!J  %:b!!r+   output)pathnamer  s8   largefile %s is not in cache and could not be downloadeds   rbr   ) r   	revsinglerP   r5   r   r   r   byteskwargsr8   rz   visitdirrX   r   makefileobjr   rm   rH  r  ri   rE  inusercachern   r   r"  r   r
   r   r   usercachepathr   r   filechunkiter)r   rn   ro   file1r   rs   r   errr9   r   rf  rk  r'   fpr:   rH  rN   storer  r   r   fpinchunkrc  re  r2   rj  s                          @@@@r)   overridecatr{    s   


tTXXe_
5C
CUFcE8d?H,@,@,FGA))K AII AEZZN	" AJXXa[   dhhx&81E 	($$Q'Bz[^1v{{}88H%??1d3D++CF3))$''48(2248E',yy2t*'>$GW7|q(#kk!. !	!  ++DGGT:$& ($!%!3!3D!9 (((-	(2 56 J	( (-	( 	(s%   *D'I!,I>I!II!!I*	_updatec                 N   |j                  dd       }|xr |j                          }|j                         5  |j                  j	                  |      5  |j                  j                  |      5  t        j                  |j                  |      }	|	j                  t        j                         g ddd      \  }
}}d d d        t        j                        }|d   }||   }
|j                  z   D ]  }|j                  j                  |      }|j                  j!                  |      s:t        j"                  |      }t        j$                  |      }t        j&                  |||t        j(                  |             ||v s|t        j*                  ||         k(  s|j-                  |        |j.                  D ]3  }t        j$                  |      }||vrt        j0                  |||       5 |D ]G  }	j3                  |      }|	j5                  ||j6                  |j8                  |j:                  d       I 	j=                  |j?                                t        j@                  |      }|j                  d      }|r%|jC                         rtE        jF                  d       | ||||g|i |}t        j@                  |      }t        jH                  ||      }|jK                  |      D ]  }|	jM                  |dd	        |s|s|r(|jO                  |jP                  |jR                  z          tU        jV                  |j                  |||
       |cd d d        cd d d        S # 1 sw Y   xY w# 1 sw Y   nxY wd d d        y # 1 sw Y   y xY w)Nrq   FTrC  r   )r>  r=  p2_infopossibly_dirtywcs1   largefiles is not compatible with in-memory merger<  )r  r  ),rP   r7   rc   r	   changing_parentsr   r   rd   rn   rb   rU   r5   r   r   r\   r   r]   hashfiler%   re   rf   rE  rk   r~   r  r  hacky_extension_update_filetrackedr=  r~  ri   rj   r  
isinmemoryr
   ProgrammingErrorr  
differencer?  r   r   r  r   r  )r   ro   r  r'  r   r)  r*  rq   partialr|   rH  r   rI  oldcleanrY  dctxr1   lfileabsr  r%   r  entryr  r  r   r  r  s                              r)   mergeupdater    s`   jjD)G.gnn..G	 Ut}}55d; U ]]))$/ 	..tww=J(2(9(9! ): )%FA~	 qww<DzDzajj( 	$Eyy~~e,H99##H-__X.FnnU+Ggvv';';H'E $6V-A-AW. $ U#	$ WW 	8E~~e,Ht#   uh7	8  	E((/E22 == ++# 3 	 	0023--d3ZZ"--/ ((D  dD+uFtFvF--d3++KE ((2 	LE""5Td"K	L %7OOAII		12GGTH7	
 kU U U	 	U U U U UsJ   NN0AM9=C	NN#GN&	N9N>NN	NN$marktouchedc                      | ||g|i |}g }|D ]+  }t        j                  |      }||j                  |       - |r$t        j                  |j
                  ||dd       |S )NFT)r  r  r  )r   rm   r`   r   r  rn   )	r   ro   rl   r)  r*  r   r  r'   r:   s	            r)   scmutilmarktouchedr  Z  sz    $///FH    #>OOB  GG	
 Mr+   preservedrequirementssupporteddestrequirementsc                 T     | |      }d|j                   v r|j                  d       |S )Nr  )requirementsrk   )r   ro   reqss      r)   upgraderequirementsr  o  s,     :D)))Kr+   s   largefile://r   c                     |j                  t              rA|rd}t        j                  |      |t	        t              d  }t        j                  ||      S  | ||fd|i|S )Ns'   cannot use data on a 'largefile://' urlrH  )r   	_lfschemer
   r  r   r   getlfile)r   rn   url_rH  r*  r   lfids          r)   openlargefiler  {  sb    y!<C((--C	N$%$$R..B242622r+   r#   r6  )F)TNr+   NNr   )NN)o__doc__
contextlibr3   r   mercurial.i18nr   mercurial.pycompatr   mercurial.hgwebr   	mercurialr   r   r   	copiesmodr	   r
   r   r   r   r   r   r   r   rU   r   r   mergestatemodr   r   r   r   r   r   urlmodr   mercurial.upgrade_utilsr   upgrade_actions r   r   r   r#  r  r  r!  r  ehr   MergeActionr"  r;   rF   r   r   r  r   wrapcommandr   r   r   contextmanagerr   r   	hgsubrepor   r   r   r   r  r  r  r9  rA  rP  rY  r  r  r  r  r  revsetpredicater  r  r  r  extsetupr  r  r  r  r  r  r  r  r&  r2  r4  r=  r?  rJ  rS  r[  r_  r{  r  r  r  r  r  r.   r+   r)   <module>r     s[   O   	  # '     0  %%
&== %%
''++Y??&?m&?&?&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
 u- u-p  FG		
 EF		
 DE		

  ./. $"@ A
B	C  	&		&, +,8<? -?D *+k ,k\ 0
9 1
9 K(<@ )> L) * &!_ "_V (#J
 $J
^  HI		
 89fI	

  $%$0  67fI	

  ++ ?+ , K E !E4  89		

  

*

* W 2 	Y/" 0"" @ @ 
9 9
 i( )
 9% 

] &]@ ""I.<? /<?F /*5 +5 ,-+ .+
 (#0 $0f$4%P XtQ/M-NOP  !!D sHdA.L,MNO  &&
 +& 
>H '>HF & &R  @ 7	 8	 C CL 	"Y #Yx -( )( "9:"=> ? ; 	  3 !3r+   