
    	^c                        d 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! ddl"m#Z$ dd	l%m&Z&m'Z'm(Z( ej)        Z)ej*        Z*ej+        Z+ej,        Z,ej-        Z- ej                    Z.e'j/        Z/ ej0        d
          Z1d Z2d|dZ3d Z4d Z5e.6                    ed          d             Z7e.8                    dddd ed          fddd ed          fddd ed          fg          d             Z9e.6                    ed          d             Z:e.6                    ed          d             Z;e.6                    ej<        d          d             Z=e.8                    d          d              Z>e.6                    ej<        d!          d}d#            Z?e.8                    d$          d%             Z@e.8                    d&ddd ed'          fdd(d ed)          fdd*d ed+          fg          d,             ZAe.8                    d-ddd ed.          fg          d/             ZBe.6                    ed0          d|d1            ZCe.6                    ed2          d3             ZDe.6                    ed4          d5             ZEe.6                    ed6          	 d|d7            ZFe.6                    ed8          d|d9            ZGe.6                    ed:          d~d;            ZHe.6                    ed<          d=             ZIe.8                    d>dd?d ed@          fddAg  edB           edC          fg          d|dD            ZJe.8                    dEddAg  edF           edC          fg          dG             ZKe.6                    edH          dI             ZLe.M                    dJ          dK             ZNe.8                    dLdd?d edM          fg          d|dN            ZOe.6                    edL          dO             ZPe.8                    dPdPQ          dR             ZQe.jR        dS             ZSe.8                    dT          dU             ZTe.6                    edT          dV             ZUe.6                    e
dT          	 	 	 	 	 ddX            ZVe.6                    ej<        dT          ddY            ZWe.6                    edZ          d[             ZXe.6                    ed\          d]             ZYe.6                    ed^          d_             ZZd` Z[da Z\e.8                    dbddd edc          fg          dd             Z]de Z^e.8                    dfddd edc          fg          dg             Z_e.6                    edh          d|di            Z`e.8                    dj          dk             Zae.8                    dl          dm             Zbe.8                    dndnQ          do             Zce.8                    dp          dq             Zde.6                    edr          ds             Zee.6                    edt          du             Zfe.6                    e$dv          e.6                    e$dw          dx                         ZgdyZhe.6                    e dz          d|d{            ZidS )zHOverridden Mercurial commands and functions for the largefiles extension    N)_)open)webcommands)archivalcmdutilcopies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fd|j        D             |_        t          |j                  |_        d |_        |j        fd|_        |S )zMcreate a matcher that matches only the largefiles in the original
    matcherc                 0    t          j        |           v S Nr   standinfmanifests    </usr/lib/python3/dist-packages/hgext/largefiles/overrides.py<lambda>z)composelargefilematcher.<locals>.<lambda>H   s    fnQ''83     c                 *    g | ]} |          |S  r,   ).0lflfiles     r(   
<listcomp>z+composelargefilematcher.<locals>.<listcomp>I   s&    333rr3333r*   c                      dS NFr,   r,   r*   r(   r)   z)composelargefilematcher.<locals>.<lambda>K       u r*   c                 0     |           o
 |           S r"   r,   )r&   r/   origmatchfns    r(   r)   z)composelargefilematcher.<locals>.<lambda>M   s    %%((5{{1~~ r*   )copy_filesset_filesetalwaysmatchfn)r   r'   mr/   r5   s    ` @@r(   composelargefilematcherr=   D   sx     		%A3333E3333QX333AHQXAJ}AH)K55555AIHr*   c                 "   t                      |                    |           t          j        |           }fdfd|j        D             |_        t          |j                  |_        d |_        |j        fd|_        |S )Nc                 b    t          j        |           pt          j        |           v p| v  S r"   r   	isstandinr$   )r&   excludedr'   s    r(   r)   z*composenormalfilematcher.<locals>.<lambda>W   s5    Mv~a00H<MX r*   c                 *    g | ]} |          |S r,   r,   )r-   r.   notlfiles     r(   r0   z,composenormalfilematcher.<locals>.<listcomp>Z   s&    666r"6666r*   c                      dS r2   r,   r,   r*   r(   r)   z*composenormalfilematcher.<locals>.<lambda>\   r3   r*   c                 0     |           o
 |           S r"   r,   )r&   rD   r5   s    r(   r)   z*composenormalfilematcher.<locals>.<lambda>^   s    ((1++8++a.. r*   )r8   updater6   r7   r9   r:   r;   )r   r'   excluder<   rB   rD   r5   s    `  @@@r(   composenormalfilematcherrI   Q   s    uuH   	%A    H 7666QX666AHQXAJ}AH)K88888AIHr*   c                    |                     d          }t          j        | t          j        |          |                     d                    }d }t          j        |          rJ|                     t          j        d          }	|	r(t          j        |j        dt          |	                    }g }
||d          }|
                    t          j        d                     D ]&}                    |          }t          j        |          |v }||v }|p|}|r3|r1|r.|                     t          d           ||          z             k|s|st          j        |          s|j                            |          s|o(|j                            |          j        |dz  dz  k    }|s|s|rW ||          rL|
                    |           | j        s|s.|                     t          d           ||          z             (g |                                5  |                     d	          sg }t          j        | |          }|
D ]}}t          j        |          }t          j        ||dt          j        |                    |                    
           |                    |           |                    |           ~|                    |                                           fd|d                               |          D             z  fd|
D             }d d d            n# 1 swxY w Y   |fS )Nlargelfsizes   patternsr*   c                     d S r"   r,   )xys     r(   r)   zaddlargefiles.<locals>.<lambda>r   s     r*   s   %s already a largefile
i   s   adding %s as a largefile
dry_run)hash
executablec                 d    g | ],}|                                 v t          j        |          -S r,   )filesr   splitstandinr-   r&   r<   s     r(   r0   z!addlargefiles.<locals>.<listcomp>   s=       		>> #A&&!>>r*   c                     g | ]}|v|	S r,   r,   )r-   r&   bads     r(   r0   z!addlargefiles.<locals>.<listcomp>   s    444qq|||||r*   )!getr   
getminsizeislfilesrepo
configlistlongnamematchmodr   rootlistwalkbadmatchexactr$   warnr   rA   wvfsexistslstatst_sizeappendverbosestatuswlockopenlfdirstatewritestandingetexecutablewjoinset_trackedwritecurrenttransactionadd)uirepoisaddremovematcheruipathfnoptsrK   rL   	lfmatcherlfpatslfnameswctxr&   rc   r/   nfilerf   aboveminstandins
lfdirstatestandinnameaddedrX   r<   s                         @@r(   addlargefilesr   b   s   HHWE
F%%txx'9'9 F I4   Ev<< 	E ty#tF||DDIGA:DYYx(,=,=>>?? N N

q!!T)T	%  	V 	 F566!DEEE 	N 	N)9!)<)< 	N 9##A&&  M49??1--5$9MM   N NY N99Q<< Nq!!!: NU NIIa =>>!LMMM
C 
 5 5xx	"" 	H.r488J 	* 	*$nQ//#%3DJJqMMBB	    ,,,&&q))))T4466777    d11   C 5444G444+5 5 5 5 5 5 5 5 5 5 5 5 5 5 5, #:s   &DL>>MMc                 (    |                     d          }t          ||d                                                    }t          |          5  |                    ||           }	d d d            n# 1 swxY w Y   |d                                          fd|	j        |	j        |	j        |	j        fD             \  }
}}} fd}|r"|} ||
|z   |z   t          d                    }n9||z   } ||
t          d                    } ||t          d                    p|}|
                                5  t          j         |          }t          |          D ]l} j        s|                    |          s.                     t          d           |          z             |s|s|j                            |d	
           m|r|cd d d            S d |D             }|s!|D ]}|j                            |d	
           |d                              |           |D ])}|                    t          j        |                     *|                    |                                           d d d            n# 1 swxY w Y   |S )Nafterr   cleanc                 ,    g | ]}fd |D             S )c                 @    g | ]}t          j        |          v |S r,   r#   r-   r&   r'   s     r(   r0   z/removelargefiles.<locals>.<listcomp>.<listcomp>   s-    :::qFN1--99999r*   r,   )r-   r`   r'   s     r(   r0   z$removelargefiles.<locals>.<listcomp>   s=     ' ' ' 	;:::D:::' ' 'r*   c                     | D ]#}                     | |          z             $t          t          |           dk              S )Nr   )rd   intlen)rT   msgr&   ru   ry   s      r(   rd   zremovelargefiles.<locals>.warn   sL     	' 	'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ignoremissingc                 6    g | ]}t          j        |          S r,   r#   r-   r&   s     r(   r0   z$removelargefiles.<locals>.<listcomp>   s"    444&.##444r*   )rY   r=   r'   lfstatusrk   modifiedr   deletedr   r   rl   r   rm   sortedrj   rc   re   
unlinkpathforgetset_untrackedrU   rr   rs   )ru   rv   rw   rx   ry   dryrunrz   r   r<   sr   r   r   r   rd   removeresultr   r&   r'   s   `   `              @r(   removelargefilesr      s   HHWEd)<)<)>)>??A	$ 8 8KKa;K778 8 8 8 8 8 8 8 8 8 8 8 8 8 8Dz""$$H' ' ' 'Z!)QW=' ' '#HeWe
# # # # # #
  
uu$a(O&P&P
 
 5( 
 
 D/     	 
 4 4*2t44
 	@ 	@Az = =		!,--;<<< @ @I(($(??? 	4 4 4 4 4 4 4 4 54V444  	< < <	$$Qd$;;;;T
&!!! 	= 	=A$$V%8%;%;<<<<002233314 4 4 4 4 4 4 4 4 4 4 4 4 4 44 Ms,   A55A9<A9<BJBJJJs
   decodepathc                 .    t          j        |          p|S r"   r   rU   )origpaths     r(   
decodepathr      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                     |                     d          r6|                     d          r!t          j        t          d                     | ||g|R i |S )NnormalrK   s$   --normal cannot be used with --large)rY   r	   Abortr   r   ru   rv   patsrz   s        r(   overrideaddr      sh    " xx Fdhhw// Fk!CDDEEE4D(4(((4(((r*   c                     |                     d          r | ||||||fi |S t          ||d||fi |\  }}	t          ||d                                          |          }
 | |||
|||fi |}|                    d |	D                        |S )Nr   Fc              3      K   | ]}|V  d S r"   r,   r   s     r(   	<genexpr>zcmdutiladd.<locals>.<genexpr>  s"      Qqr*   )rY   r   rI   r'   extend)r   ru   rv   rx   prefixry   explicitonlyrz   laddedlbadnormalmatcherrX   s               r(   
cmdutiladdr     s     xx OtBgvxNNNNN T5'8LLtLLLFD,d$$&& M $r4,
O
O$
O
OCJJ$Jr*   s   removec
                     t          ||d                                                    }
 | |||
||||||		  	        }t          ||d|||	||          p|S )NF)r   force)rI   r'   r   )r   ru   rv   rx   r   ry   r   r   subreposr   r   r   s               r(   cmdutilremover   "  s     -Wd4j6I6I6K6KLLMT

 
F 	eWhe5	
 	
 	
 	 	r*   s   statusc                 r    t          |j                  5   | ||fi |cd d d            S # 1 swxY w Y   d S r"   r   _repo)r   rv   rev2rz   s       r(   overridestatusfnr   :  s    	$*		 ( (tD$''$''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   
,00c                 n    t          |          5   | ||g|R i |cd d d            S # 1 swxY w Y   d S r"   r   r   s        r(   overridestatusr   @  s    	$ - -tB,t,,,t,,- - - - - - - - - - - - - - - - - -s   *..s   dirtyFc                 z    t          |j                  5   | |||          cd d d            S # 1 swxY w Y   d S )N)ignoreupdatemissingr   )r   rv   r   r   s       r(   overridedirtyr   F  s    	$*		 F FtD|WEEEF F F F F F F F F F F F F F F F F Fs   044s   logc                 P  	 	 	 	 	 	 dfd	}t           j        	d		fd	}t          j        t           d|          }t          j        t          d|          }|5  |5   | g|R i |cd d d            cd d d            S # 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nr,   F   relpathc                    |i } | ||||||          }t          j         |          \  }}	|                                r|S t          |	          }t          j        fd                                rPt          j        }
t          j        	                    |
          dt          |
                              fdnd |                    fd|	D                        t          dt          |j                            D ]}|j        |         dk    rt          j        |j        |                   }||v r||j        |<   B|j        |         |vr4j                            |          r|j                            |           t          |j                  |_        d	 |_        |j        fd
}||_                            dd                    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                     |                      d          r| S t          j        | d           }|d         |d         dz    ||d                   z   S  ||d                   S )Ns   set:r      :r   )
startswithr^   	_patsplit)pat	tostandinkindpats      r(   fixpatsz:overridelog.<locals>.overridematchandpats.<locals>.fixpatsh  sm    ~~g&& 
(d33Gqz%qzD(99WQZ+@+@@@9WQZ(((r*   c                 0   |                                r+t          j        | t                    d                    r| S t          j                                      r| t                    d          } ndz   | z   } t          j        |           z   S )N   /)r   r   rU   r   osr   isabsr$   )r&   backcwds    r(   r   z<overridelog.<locals>.overridematchandpats.<locals>.tostandinw  s     <<%% &*=aD		n*M*M H 7==%% '#d))++AAd
QAfnQ////r*   c                 V    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   | ]} |          V  d S r"   r,   )r-   r&   r   r   s     r(   r   z<overridelog.<locals>.overridematchandpats.<locals>.<genexpr>  s/      55aGGAy))555555r*   r      .c                      dS r2   r,   r,   r*   r(   r)   z;overridelog.<locals>.overridematchandpats.<locals>.<lambda>  s    5 r*   c                 d    t          j        |           }| |          rdS  |           }|S NTr   )r&   r.   rr5   s      r(   	lfmatchfnz<overridelog.<locals>.overridematchandpats.<locals>.lfmatchfn  s;    $Q''B~++b//~tAAHr*   s   updated patterns: %s
s   , )r6   r:   r8   r   r$   getcwd	shortnamer   pconvertpathtor   rG   ranger7   re   isdirri   r9   r;   debugjoinr   )r   ctxr   rz   globbeddefaultr   matchandpatsr<   phglfir$   r   r   r   r   r5   r   rv   ru   s                 @@@@@r(   overridematchandpatsz)overridelog.<locals>.overridematchandpatsN  s7    <DtCtWgUKKKy&&188:: 	   1vv#)> 	) 	) 	) 	) kkmm 	)#D=T!2!2<c$iiZ<!@AAD0 0 0 0 0 0 0&) ) )
 	555551555555q#ah--(( 	) 	)Ax{d""nQXa[11G
 #~~%!C''DIOOG,D,D'(((]]
 =i	 	 	 	 	 	
*UZZt-E-EEFFF$wr*   c                 D    |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   rv   r   rz   r   r~   r   oldmatchandpatss         @r(   overridemakefilematcherz,overridelog.<locals>.overridemakefilematcher  s8    Dz%odD$eDDDt     r*   s   matchandpatss   _makenofollowfilematcherr,   NFr   Nr"   )r   r   r   wrappedfunctionr   )
r   ru   rv   r   rz   r   r   wrappedmatchandpatswrappedmakefilematcherr   s
    ``      @r(   overridelogr   L  s   
 _ _ _ _ _ _ _L *O! ! ! ! ! !
 %4"6  (7/1H  
 - -4 - -tB,t,,,t,,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -s6   BB*B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                     |                     dd          }|                     dd          }|                     dd          } | ||g|R i |}|s|s|r|pt          j        ||||          }|S )NrK   Flfalfc)popr   verifylfiles)	r   ru   rv   r   rz   rK   allcontentsr   s	            r(   overrideverifyr    s    0 HHWe$$E
((5%
 
 Cxxu%%HT"d*T***T**F L Lx LK:22tS(KKMr*   s
   debugstates   display largefiles dirstatec                     |                     dd          }|r G fdd          } | |g|R i | d S  | g|R i | d S )NrK   Fc                   2    e Zd Z ej                   ZdS )$overridedebugstate.<locals>.fakerepoN)__name__
__module____qualname__r   rm   dirstate)rv   ru   s   r(   fakerepor    s#        ,v,R66HHHr*   r  )r   )r   ru   rv   r   rz   rK   r  s    ``    r(   overridedebugstater    s    
 HHWe$$E &	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	R)D)))D)))))R%%%%%%%%%r*   s   _checkunknownfilec                     t          j        |j                            |                    |v rdS  | |||||          S r2   )r   r$   r
  	normalize)origfnrv   r~   mctxr&   f2s         r(   overridecheckunknownfiler    sD    ~dm--a0011T99u6$dAr***r*   s   calculateupdatesc           	      x   |o| }
 | |||||||g|R i |	}|
r|S t                      }|                                D ]]}t          j        |          }|||v r|                    |           2t          j        |          |v r|                    |           ^t          |          D ]}t          j        |          }|                    |d          \  }}}|                    |d          \  }}}|t          t          fv r |t          k    r|t          k    r$|\  }}}}}||                                         df}t          d          |z  }|j                            |d          dk    r;|                    |t          d d           |                    |t          |d           nZ|                    |t           d d           |r|                    |t           d d           n|                    |t          d d           |t          t          fv r |t          k    r|t          k    r$|\  }}}}}||                                         df}t          d          |z  }|j                            |d          dk    rz|r<|                    |t           d d           |                    |t           d d           |                    |t"          d d	           |                    |t$          d d
           S|                    |t          |d           |                    |t          d d           |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)r8   rT   r   rU   rt   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&   rU   r/   r$   lmlargslmsgsmsargssmsgf1r  famoveancusermsgs                                r(   overridecalculateupdatesr3  "  s    )k/Ifb"c;|>B  FL G   UUF]]__  *1--#(:(:JJ|$$$$^A"$$JJqMMM U U.''#OOE3EFFUD#OOG5GHHUD*4555":M:M+++(-%BD#B/ 5 
   w##GQ//144=$0F   U<OPPPP{D:MNNN OO#2	    OO%2	   *4555":M:M+++(-%BD#B/ 5 
   w##GQ//144 POO#.	   OOd4G    OO;7	   OOGZOOOOz5:MNNN!.	   Nr*   s   recordupdatesc                    t           |v rt          j        |j        |          }|                                5  |t                    D ];\  }}}|j                            |dd           |                    |dd           <	 d d d            n# 1 swxY w Y   |                    |                                            | ||||          S )NTF
p1_tracked
wc_tracked)	r  r   rm   ru   parentchanger
  update_filerr   rs   )	r   rv   r   r!  getfiledatar   r/   r#  r   s	            r(   mergerecordupdatesr;    s?   *g55*47D99
$$&& 
	Q 
	Q$+3% 	Q 	Q tS
 ))du *    &&u4&PPPP	Q
	Q 
	Q 
	Q 
	Q 
	Q 
	Q 
	Q 
	Q 
	Q 
	Q 
	Q 
	Q 
	Q 
	Q 
	Q 	00223334g{K888s   A
BBBs	   filemergec	           
         t          j        |          r(|                                s|                                r | ||||||||          S t          j        |                                          }	t          j        |                                          }
t          j        |                                          }||	k    r||
k    r|
|	k    sE|j                            t          d          t          j        |          |	|
|fz  d          dk    rM|	                    |
                                |                                |                                           dS )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   rA   isabsentreadasstandinlowerru   r  r   rU   wwriter   datar  )r  rv   r~   mynoder   fcdfcofcar=  ahashdhashohashs               r(   overridefilemergerJ    sW    D!! NS\\^^ Ns||~~ NvdD&$S#fMMMM %%++--E %%++--E %%++--EUNNUNNw##+  &t,,eUEBC 	 	 
 
 	CHHJJ

CIIKK8888r*   s
   pathcopiesc                      | |||          }i }|                                 D ]2\  }}t          j        |          p||t          j        |          p|<   3|S )N)r   )itemsr   rU   )r   ctx1ctx2r   r   updatedkvs           r(   copiespathcopiesrR    sl    T$E***FG K K1/5/B1/E/E/J#A&&+!,,Nr*   s   copyc           
      d
   t          |          dk     r | |||          S d}d}d                                          	 	 	 	 	 dfd	}t          j        t          d|          5  	  | |||          }	n:# t
          j        $ r(}
|
j        t          d          k    r|
d}d	}	Y d }
~
nd }
~
ww xY wd d d            n# 1 swxY w Y   	 	                                 n# t          $ r |	cY S w xY wfd
}t	          j        |          }|d         }t          j                            |          rEt          j                             ||                    st          j         ||                     	                                 }d                                          	 	 	 	 	 dfd	}g }|D ]J}t#          j        |          |                    |           ,|                     ||                     Kg fd}t          j        t(          d|          5  t          j        t          d|          5  |	 | |||          z  }	d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t+          j        |          }D ]\  }}t*          j        |v r|                                        t*          j                            r|                                        t+          j        d                    d          }|                                        t+          j        d                    d          }j                                                |                    pd}t          j                            |          st          j        |           |rmt          j                            |                              |                     j                            |d           |                     |           n;t)          j!                            |                              |                     |"                    |           |#                    $                                           n8# t
          j        $ r&}
|
j        t          d          k    r|
d}Y d }
~
nd }
~
ww xY w|%                                 n# |%                                 w xY w|r#|r!t          j        t          d                    |	S )N   Fr,   r   c                 N    |i } | ||||||          }t          |          S )Nr   )rI   )	r   r   r   rz   r   r   r   r   r'   s	           r(   normalfilesmatchfnz(overridecopy.<locals>.normalfilesmatchfn  s;     <DS$gweDDD'x888r*      matchs   no files to copyTr   c                     t          j        j                                        |           }j                            t          j        |                    S r"   )r   	canonpathr_   r   re   r   r   r$   )relpathr   rv   s     r(   makestandinz!overridecopy.<locals>.makestandin  s?    !$)T[[]]GDDy~~fnT22333r*   c                    |i }g }|D ]m}t          j        |          Bt          j        |v r4|                    |                    t          j        d                     X|                    |           n | ||||||          }	t          j        |	          }
fdfd|
j        D             |
_        t          |
j                  |
_	        |
j
        fd}||
_
        |
S )Nr*   r   c                 0    t          j        |           v S r"   r#   r%   s    r(   r)   z5overridecopy.<locals>.overridematch.<locals>.<lambda>,  s    fnQ//8; r*   c                 N    g | ]!} |          t          j        |          "S r,   r#   )r-   r&   r/   s     r(   r0   z7overridecopy.<locals>.overridematch.<locals>.<listcomp>-  s0    HHHauuQxxHq))HHHr*   c                 V    t          j        |           }|d ur| v r |          pd S r"   r   )r&   r/   r'   r5   s     r(   r;   z4overridecopy.<locals>.overridematch.<locals>.matchfn1  sH    +A..% +h+#E** 	r*   )r^   patkindr   r   ri   replacer6   r7   r8   r9   r;   )r   r   r   rz   r   r   r   newpatsr   r   r<   r;   r/   r5   r'   s               @@r(   overridematchz#overridecopy.<locals>.overridematch  s    |G  ( (#C((0V5E5L5LNN3;;v/?#E#EFFFFNN3''''DgtWgUKKKE	%  A;;;;EHHHH18HHHAHQXAJ)K       AIHr*   c                    t           j        |v r|                                        t           j                            rd|                    t           j        d          }d         s<t
          j                            |          rt          dt          d                    
                    ||f            | ||g|R i | d S )Nr*   s   forces$   destination largefile already exists)r   r   r   rp   rb  r   r   rf   IOErrorr   ri   )	r   srcdestr#  r$  	destlfilecopiedfilesrz   rv   s	         r(   overridecopyfilez&overridecopy.<locals>.overridecopyfileF  s    3&&4??

6+,,, ,& !LL)93??	H~ "'..*C*C !QFGG   T{+++Dd,T,,,V,,,,,r*   s   copyfiler*   r   r   r   )&r   r'   r   r   r   r	   r   messager   r   OSError
expandpatsr   r   r   makedirsrl   r^   ra  ri   r   r   rm   r   r   rp   rb  r$   re   dirnamerenamer   r   copyfilerq   rr   rs   release)r   ru   rv   r   rz   rq  nonormalfilesnolfilesrV  r   er[  fullpatsrh  rl   rd  listpatsr   rk  r   rg  srclfileri  destlfiledirrj  r'   s     ` `                   @@r(   overridecopyr{    sf    4yy1}}tBdD&111 MHDz""$$H
 9 9 9 9 9 9 
	#GX7I	J	J  	T"dD$77FF{ 	 	 	yA12222 $FFFFFF	                 4 4 4 4 4 !$''HB<D	w}}T +w}}[[..// 	+KD))***b 

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

6+,,, ,& ;;tzz&.2E2E'F'FLL LLFN34G4G)H)H#NN	#y00I1F1FGGO4w}}\22 .K--- OIdjj22DJJy4I4IJJJ I(((FFF,,X6666M$**X"6"6

98M8MNNN&&y11100223333;   9-....GHHHHHH	 	 2M 2k!/00111Ms   +C-A=<C=B4B/*C/B44CC
CC$ $C32C3<B,R% (I:I#I:#I'	'I:*I'	+I:.R% :I>>R% I>H"R% $S2 %S4SS2 SS2 2Ts   revertc           	      T                                    5  t          j        |          }t          j        |          }|                                                               |j        D ]*}t          j        |t          j        |                     +|j	        D ]J}t          j        |          }	j
                            |	          rj
                            |	           Kt          j                  }
	 	 	 	 	 dfd	}t          j        t           d|          5   | |g|R i | d d d            n# 1 swxY w Y   t          j                  }t          j        |
|          }t%          j        ||dd           d d d            d S # 1 swxY w Y   d S )	Nr,   Fr   c                 :   |i } | |||||          }t          j         |          }t          j                                        j                                        d          }	d          }
g }|j        D ]h}t          j        |          }|v s|v r|                    |           4||
v s|	                    |          j	        rS|                    |           i||_        t          |j                  |_        |j        fd}||_        |S )Nr   Fc                 l    t          j        |           }| |          o| v p| v S  |           S r"   r   )r&   r/   r   r  r5   s     r(   r;   z6overriderevert.<locals>.overridematch.<locals>.matchfn  sI    +A..$&;u--I183HqDyI"{1~~%r*   )r6   r   rm   rv   ru   r7   r$   ri   	get_entryremovedr8   r9   r;   )r   r  r   rz   r   r   r   r   r<   r   r~   
matchfilesr&   r$   r;   r5   r   rv   s    `             @r(   rd  z%overriderevert.<locals>.overridematch  sG    |DtT7G5IIIE	%  A  .				U J :DJX ) ) .++c>>W__%%g....__
(<(<Q(?(?(G_%%a((((!AHQXAJ)K& & & & & & &  AIHr*   rW  T)printmessagenormallookupr   )rl   r   rm   lfdirstatestatusrr   rs   r   updatestandinr$   r   re   rf   unlinkgetstandinsstater   r   r   getlfilestoupdater   updatelfiles)r   ru   rv   r   r   rz   r   r   r/   fstandinoldstandinsrd  newstandinsfilelists     ``          r(   overriderevertr    su   
 
 F
 F
*2t44
#J550022333Z 	E 	EE ufnU.C.CDDDDY 	+ 	+E~e,,Hy)) +	  ***-d33
 +	 +	 +	 +	 +	 +	 +	Z '=II 	/ 	/DT3.......	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ -d33+KEE 	hU	
 	
 	
 	
IF
 F
 F
 F
 F
 F
 F
 F
 F
 F
 F
 F
 F
 F
 F
 F
 F
 F
s7   DF(E7FE	F
E	AFF!$F!s   pulls   all-largefiless7   download all pulled versions of largefiles (DEPRECATED)s   lfrevs'   download largefiles for these revisionss   REVc                 B   t          |          }|sd}||_         | |||fi |}t          |          }|                    dg           }|                    d          r|                    d           |r||k    rd}	||_        	 t          j        ||          D ]R}
|                    t          d          |
z             t          j
        |||
          \  }}|	t          |          z  }	S	 |`n# |`w xY w|                    t          d          |	z             |S )Ns   defaultlfrevall_largefiles   pulled()r   s#   pulling largefiles for revision %d
s   %d largefiles cached
)r   lfpullsourcerY   ri   firstpulledr   revrangenoter   r   cachelfilesrk   )r   ru   rv   sourcerz   revsprepullr   revspostpulllfrevs	numcachedrevcachedr   s                r(   overridepullr    sV   & d))K DT"dF++d++Ft99LXXgr""Fxx !! #k""" 
<,,,	&	!!*488 ) )ABBSHIII$.$:2tS$I$I!S[[(		)
        
		!-..:;;;Ms   A(C3 3C7s   pushs%   upload largefiles for these revisionsc                     |                     dd          }|r.|                    di           }t          j        ||          |d<    | ||g|R i |S )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    sm     ZZ&&F >""8R00&/f==y4D*4***6***r*   s   pushoperationc                 P    |                     dd          } | |i |}||_        |S )z=Override pushoperation constructor and store lfrevs parameterr  N)r   r  )r   r#  r$  r  pushops        r(   exchangepushoperationr    s7     ZZ$''FT4"6""FFMMr*   r  c                     	 | j         n/# t          $ r" t          j        t	          d                    w xY wt          j        fd|D                       S )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 --lfrevc                      g | ]
}|k    |S r,   r,   )r-   r   r  s     r(   r0   z&pulledrevsetsymbol.<locals>.<listcomp>3  s#    CCC1!{2B2BQ2B2B2Br*   )r  AttributeErrorr	   r   r   r   baseset)rv   subsetrN   r  s      @r(   pulledrevsetsymbolr    sq    (D& D D Dk!ABBCCCDCCCCCCCDDDs    ,7s   clones'   download all versions of all largefilesc                     |}|t          j        |          }|                    d          r8t          j        |          s$t	          j        t          d          |z             | |||fi |S )Nr  s>   --all-largefiles is incompatible with non-local destination %s)r   defaultdestrY   islocalr	   r   r   )r   ru   r  rh  rz   ds         r(   overridecloner  6  s     	AyN6""xx !! 
"*Q-- 
kOPP
 
 	

 4FD))D)))r*   c                      | ||g|R i |}|R|\  }}|                                 }|s|S |                    d          r t          j        ||          \  }	}
|
dk    rd S |S )Ns   all_largefilesr   )localrY   r   downloadlfiles)r   ru   rz   r#  r$  r   
sourcerepodestreporv   successr   s              r(   hgcloner  N  s    T"d,T,,,V,,F%
H~~
  	M
 88%&& 	)8TBBGW!||tMr*      rebase)	extensionc                    t          j        |d          s
 | ||fi |S |                    d          }|j                            t          j        |                     |j                            d            	 |                    ddid          5   | ||fi |cd d d            |j        	                                 |j        	                                 S # 1 swxY w Y   	 |j        	                                 |j        	                                 d S # |j        	                                 |j        	                                 w xY w)N   _largefilesenabledcontinuec                      d S r"   r,   r   rz   s     r(   r)   z#overriderebasecmd.<locals>.<lambda>o      d r*   )r  s   experimental.inmemoryF
   largefiles)
r   safehasattrrY   _lfcommithooksri   r   automatedcommithook_lfstatuswritersconfigoverrider   )r   ru   rv   rz   resumings        r(   overriderebasecmdr  h  s   D"788 &tB%%%%%xx
##Hv9(CCDDD  !:!:;;;"2E:M
 
 	* 	* 4D))D))	* 	* 	* 	* 	* 	* 	*
 	!!###!!!!	* 	* 	* 	* 	* 	* 	* 	* 	*
 	!!###!!!!! 	!!###!!!!s0   =D 
CD C""D %C"&D 4Ec                     	 t          j        d          }d }t          j        |d|           d S # t          $ r Y d S w xY w)Nr  c                     d|d<    | |i |S )NFinmemoryr,   r   r#  r$  s      r(   	_dorebasez!overriderebase.<locals>._dorebase  s!    !&F:4((((r*   s	   _dorebase)r   findwrapfunctionKeyError)ru   rebaser  s      r(   overriderebaser  z  sg    
A++
	) 	) 	) 	i@@@@@    s   1 
??s   archivec                     t          |                                          5   | ||                                |fi |cd d d            S # 1 swxY w Y   d S r"   )r   
unfiltered)r   ru   rv   rh  rz   s        r(   overridearchivecmdr    s    	$//##	$	$ 9 9tB))4884889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   AAAc                 t    t          |j                  5   | |          cd d d            S # 1 swxY w Y   d S r"   )r   rv   )r   webs     r(   hgwebarchiver    s    	#(		  tCyy                 s   -11Tc
                 x   j         s,                                j         s | |||||		  	        S |t          j        j        |           |t
          j        vr$t          j        t          d          |z            |         |dk    r$r!t          j        t          d                    nt          j
        ||          fd}
t          j        |         ||p                                d                   j                            dd          r |
dd	d
fd           D ]}                    |          }|         j        }t          j        |          }|a|Vt          j         |                                                      $t          j        t          d          |z            n||}fd} |
|d|v rdpd	d|v |           |	rt'          j                  D ]}                    |          }t-          j        |          }|z   dz   }t1          j        |d          rt          |j                  pt1          j                    5  |                    ||           d d d            n# 1 swxY w Y                                    d S )Ns   unknown archive type '%s's   filess*   cannot give prefix when archiving to filesc                     r |           sd S  |            }r	                     | |          }                    | z   |||           d S r"   )
wwritedatar  )
namemodeislinkgetdatarB  archiverdecoder   r   rv   s
        r(   rr   zoverridearchive.<locals>.write  si     	t 	Fwyy 	/??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    dmD11 r*      x     lr   r   )r   r  r   r  ru   r   	archiversr	   r   r   
tidyprefixdate
configboolr  rB  r   rU   findfilestripr   substate
workingsubr^   subdirmatcherr   r  r   nullcontextmanagerarchivedone)r   rv   rh  nodekindr  r   r   mtimer   rr   r&   ffr  r/   subpathsubsubmatch	subprefixr  r   r   s    `   ```           @@@r(   overridearchiver    sz    = 
!2!2!; 
t$dFE65(
 
 	
 twd3338%%%k!899D@AAA
t*Cx 	P+a MNNOOO	P $T488< < < < < < < < < !$'e.Dsxxzz!}EEHw%00 
////		
 	
 	
  E EYYq\\a&+#A&&tWWYY__->->??<+S         A1111Ga%.
GDDDD ;cl++ 	; 	;G..))C-gu==H(4/I  g.. (SY''-*,,; ;
 Hi:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; MMOOOOOs   6JJ	!J	c                    t          j        j        d          }|rj        j        s |           S                     j        dz              j        d         }j        |         }|                                2t          j        j	        j        |                                           fd}	|D ]Ɋ|
                              }
|         j        }t          j                  }|y|                                [t          j        j         |                                                      $t!          j        t%          d          |z            n||fd} |	d|
v rdpd	d
|
v |           t'          |j                  D ]}|                    |          }t-          j        |          }|z   dz   }t          j        |d          rt          |j                  pt          j                    5  |                    ||           d d d            n# 1 swxY w Y   d S )Nr  )s   hgr   c                     r           sd S  |            }r
j                             | |          }                    	| z   |||           d S r"   )r   r  r  )r  r  r  r  rB  r  r  r&   r   r   rv   s        r(   rr   zhgsubrepoarchive.<locals>.write  so      	q 	Fwyy 	5:((t44D$fd;;;;;r*   r  c                  h    t          j        t          j                                                 S r"   )r   r  r   r   r   )r   r   s   r(   r)   z"hgsubrepoarchive.<locals>.<lambda>"  s!    dmBGLL,F,FGG r*   r  r  r  r  r   r   )r   r  r   r   _get_stater  r   r  ru   r  rB  r   rU   r  r  r	   r   r   r   r  r  r^   r  r  r  )r   rv   r  r   r   r  	lfenabledr  r   rr   r  r  r/   r  r  r  r  r&   r   s    `````           @@r(   hgsubrepoarchiver    s    -BCCI ;DJ/ ;tD(FE6:::IIdkH$%%%
+a.C
*S/C
xxzztw
CHHJJ???	< 	< 	< 	< 	< 	< 	< 	< 	< 	<  E EYYq\\a&+#A&&xxzz%tz7799??3D3DEE<+S         AGGGGGGa%.
GDDDD#,'' ? ?nnW%%)'599W$t+	 S'** $##)&((	? 	?
 KK)Xv>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?? ?s   H;;H?	H?	s   bailifchangedc                     | |g|R i | t          |          5  |                                }d d d            n# 1 swxY w Y   |j        s|j        s|j        s|j        r!t          j        t          d                    d S )Ns   uncommitted changes)	r   rk   r   r   r  r   r	   r   r   )r   rv   r#  r$  r   s        r(   overridebailifchangedr  :  s    D	$  KKMM              z 5QW 5	 5QY 5k!2334445 5s   =AAs   postcommitstatusc                 l    t          |          5   | |g|R i |cd d d            S # 1 swxY w Y   d S r"   r   )r   rv   r#  r$  s       r(   postcommitstatusr
  C  s    	$ + +tD*4***6**+ + + + + + + + + + + + + + + + + +s   )--s   forgetc	           
         t          ||d                                                    }	 | |||	|||||          \  }
}t          ||d                                                    t          |          5  |                    d          }d d d            n# 1 swxY w Y   |d                                          t          |j        |j        z   |j        z   |j	        z             }fd|D             }|D ]|}t          j        |          }||j        vr]|j                            |          sC|                    t!          d           ||          z             |
                    |           }|D ]L}|j        s                    |          s.|                    t!          d           ||          z             M|                                5  t          j        ||          }|D ]}|                    |           |                    |                                           d |D             }|D ]}|j                            |d           |d                              |          d d d            n# 1 swxY w Y   |
                    fdD                        |                    fd	|D                        |
|fS )
NTr   c                 @    g | ]}t          j        |          v |S r,   r#   r   s     r(   r0   z!cmdutilforget.<locals>.<listcomp>^  s-    AAAA6>!#4#4#@#@a#@#@#@r*   s+   not removing %s: file is already untracked
r   c                 6    g | ]}t          j        |          S r,   r#   r   s     r(   r0   z!cmdutilforget.<locals>.<listcomp>s  s"    666!FN1%%666r*   r   c              3   H   K   | ]}|                                 v |V  d S r"   )rT   rV   s     r(   r   z cmdutilforget.<locals>.<genexpr>x  s/      55Qa17799nnqnnnn55r*   c              3   $   K   | ]
}|v|V  d S r"   r,   )r-   r&   rejecteds     r(   r   z cmdutilforget.<locals>.<genexpr>y  s-      99q'8'8!'8'8'8'899r*   )rI   r'   r=   r   rk   r   r   r   r   r   r   r$   r
  re   r   rd   r   ri   rj   rc   rl   rm   r   rr   rs   r   r   r   )r   ru   rv   r   r   ry   r   r   interactiver   rX   forgotr   r   r&   r  r   r   r<   r'   r  s                     @@@r(   cmdutilforgetr  I  s|    -UDJ4G4G4I4IJJM$
	 	KC 	 tDz':':'<'<==A	$ - -KKatK,,- - - - - - - - - - - - - - -Dz""$$HAJ(194qw>??FAAAAAAAF  >!$$4=((1J1J(GGABBXXa[[P   JJqMMM 9 9: 	9QWWQZZ 	9IIa())HHQKK7888 
 / /*2t44
 	( 	(A$$Q''''002233366v666 	8 	8AI  $ 7777:$$X../ / / / / / / / / / / / / / / JJ5555(555555
MM9999V999999;s%   8BB #B BJJJc                 
  	 t                      t                      		fd}t          j        | ||           	rDt          j        | |                              	          }D ]\  }}||         s |||           dS dS )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                 p    | |f}|vr,                     |                                |           d S d S r"   rt   )fnlfhashrP  knownslfhashess      r(   dedupz_getoutgoings.<locals>.dedup  sC    LF??JJqMMMLL      ?r*   N)r8   r   getlfilestouploadr   	openstorerf   )
rv   otherr   addfuncr  lfexistsr  r  r  r  s
           @@r(   _getoutgoingsr!  }  s     UUFuuH! ! ! ! ! ! T7E222 $)$66==hGG  	$ 	$JBF# $F###	$ $	$ 	$r*   c                 @   	 |                     dd           rt                       j        ri 		fd}	 fd}nt                      		fd}d }t          ||||           	s$                     t          d                     d S                      t          d          t                    z             t          	          D ]7}                     t          j	        |          dz               ||           8                     d           d S d S )	Nr   c                 z    | vrg | <   |                               |                               |           d S r"   )ri   rt   r  r  r  touploads     r(   r  zoutgoinghook.<locals>.addfunc  sG    X%%#%HRL##F+++V$$$$$r*   c                 h    t          |                    D ]}                    d|z             d S )Ns       %s
)r   r   )r  r  r%  ru   s     r(   
showhashesz outgoinghook.<locals>.showhashes  sB    $Xb\22 3 3FHH[6122223 3r*   c                 \                         |                                 |           d S r"   r  r$  s     r(   r  zoutgoinghook.<locals>.addfunc  s-    R   V$$$$$r*   c                     d S 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   r8   	debugflagr!  rk   r   r   r   r   rU   )
ru   rv   r  rz   r   r  r'  filer  r%  s
   `       @@r(   outgoinghookr-    s   xx$ $55< 	H% % % % % %3 3 3 3 3 3 3
 uuH% % % % % %   	dE7G444 		IIa;<<=====II:;;s8}}M   x(( ! !		&-d33e;<<<
4    IIeI$ $r*   s   outgoings   display outgoing largefilesc                      | |i |S r"   r,   r  s      r(   _outgoingcmdr/    s     4    r*   c                   
 |                     dd          }||rdS dS |r|d         \  }}}}|$|                     t          d                     d S t                      t                      

fd}	t	          |||j        |	           s$|                     t          d                     d S |                     t          d	          t          
          t                    fz             d S d S )
Nr   F)FTFFr   s   largefiles: (no remote repo)
c                 \                         |                                 |           d S 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
)rY   rk   r   r8   r!  r   r   )ru   rv   rz   changeslargeoptr   branchpeeroutgoingr  r  r%  s             @@r(   summaryremotehookr8    s0   xx%((H 	" =!>	 &-aj#VT8<IIa9::;;;F5555	! 	! 	! 	! 	! 	! 	dD("2G<<< 	IIa=>>????? IIEFFx==#h--01    + r*   s   summaryc                 p    t          |          5   | ||g|R i | d d d            d S # 1 swxY w Y   d S r"   r   r   s        r(   overridesummaryr:    s     
$ & &R%%%%%%%& & & & & & & & & & & & & & & & & &s   +//s	   addremovec           
      ~   |i }t          j        |          s | |||||          S t          j        |j        |          }|                    t          j                    g ddd          \  }}j        rbt          j        |          }	|	j	        fd|	_	        t          |j        |d|	||                    d          fi t          j        |           t          |j        |d||fi t          j        |          \  }
}t          ||d                                          |
          } | |||||          S )NFr   ignoredr   unknownc                 ,    | j         v o
 |           S r"   )r   )r&   r;   r   s    r(   r)   z"scmutiladdremove.<locals>.<lambda>  s    a19n; r*   Ts   dry_run)r   r[   rm   ru   rk   r^   r:   r   r6   r;   r   rY   r   	strkwargsr   rI   r'   )r   rv   rx   r   ry   rz   r   unsuremtime_boundaryr<   r   rX   r;   r   s               @@r(   scmutiladdremoverC    s}   |t$$ ;tD'68T:::&tw55J * 1 1 !2 ! !FA~ 	y 
Ig );;;;;	GHHZ  	
 	
  &&	
 	
 	
 tWh 2:2DT2J2J JE3 'wT
0C0C0E0EuMMG4gvx666r*   s   purgec                                                      j        	 	 	 	 	 	 	 dfd	}|_         | g|R i | _        d S )Nr   Fc           	          	| ||||||          }t          j        
          fd|j        D             }fd|j        D             }t	          j        |j        |j        |j        |j	        |||j
                  S )Nc                 H    g | ]}                     |          j        |S r,   r  any_trackedr-   r&   r   s     r(   r0   z9overridepurge.<locals>.overridestatus.<locals>.<listcomp>B  ?     
 
 

(<(<Q(?(?(K

 
 
r*   c                 H    g | ]}                     |          j        |S r,   rG  rI  s     r(   r0   z9overridepurge.<locals>.overridestatus.<locals>.<listcomp>E  rJ  r*   )r   rm   r>  r=  r   rk   r   r   r  r   r   )node1node2r   r=  r   r>  listsubreposr   r   	oldstatusrv   ru   s           @r(   r   z%overridepurge.<locals>.overridestatus5  s     I5%%,
 
 *2t44

 
 
 
y
 
 

 
 
 
y
 
 
 ~JAIw
 
 	
r*   )r   NNFFFF)r  rk   )r   ru   rv   dirsrz   r   rO  s    ``   @r(   overridepurgerQ  '  s     ??DI 
 
 
 
 
 
 
 
. !DKDT!D!!!D!!!DKKKr*   s   rollbackc                                                     5  j                                        }fdj        D             } | |fi |}j                                        }||k    r|cd d d            S d         }j        D ]}	t          j        |	          r|                    |	           j                            |	          j        rj        	                    |	d           g|	|v rD||	         }

                    |	|
                                |
                                           t          j        |	dd           |D ]}j        	                    |d           	 d d d            n# 1 swxY w Y   |S )Nc                 z    h | ]7}t          j        |          j                            |          j        5|8S r,   )r   rA   r
  r  r  )r-   r&   rv   s     r(   	<setcomp>z#overriderollback.<locals>.<setcomp>U  sW     
 
 
""
 ,0=+B+B1+E+E+M

 
 
r*   r   Tr   r*   F)rl   r
  parentsr   rA   discardr  r  re   r   rA  rB  r  rn   )r   ru   rv   rz   beforeorphansr   r   pctxr&   fctxr$   s     `         r(   overriderollbackr[  Q  s   	 > >&&((
 
 
 
]
 
 

 b$''$''%%''U??> > > > > > > > Dz 	= 	=A"" 
="""=**1--5 =I(($(????$YY7DKK499;;

==== 'ae<<< 	> 	>GI   ====	>3> > > > > > > > > > > > > > >8 Ms   AE>:C7E>>FFs
   transplantc                    |                     d          }|j                            t          j        |                     |j                            d            	  | ||g|R i |}|j                                         |j                                         n7# |j                                         |j                                         w xY w|S )Nr  c                      d S r"   r,   r  s     r(   r)   z$overridetransplant.<locals>.<lambda>v  r  r*   )rY   r  ri   r   r  r  r   )r   ru   rv   revsrz   r  r   s          r(   overridetransplantr_  r  s    xx
##Hv9(CCDDD  !:!:;;;"b$......!!###!!!! 	!!###!!!!Ms   B 4Cs   catc                    t          j        |          }t          j        ||                    d                    }d}t                      t          j        ||f|z   |          }|j        fd}	|	|_        |j	        fd}
|
|_	        |j
        fd}||_
        |                    |          D ]}t          j        ||                    d          |          5 }t          j        |          }| |          r\||                                         }|                    d          r|                    ||          }|                    |           n	t          j        ||                   }t          j        |j        |          sft-          j        |          }|                    ||fg          \  }}t1          |          dk    r$t3          j        t7          d	          |z            t          j        |j        |          }t;          |d
          5 }t=          j        |          D ]}|                    |           	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d}|S )Ns   revr   c                      |           rdS t          j        |           }|dS                     |            |          S NTF)r   rU   rt   )r&   r.   notbadr5   s     r(   r   zoverridecat.<locals>.lfmatchfn  sO    ;q>> 	4 ##:5

2{2r*   c                 ,    | vr | |           d S d S r"   r,   )r&   r   rc  	origbadfns     r(   lfbadfnzoverridecat.<locals>.lfbadfn  s+    F{{Ia {r*   c                     | t           j        k    rdS  |           }|r|S t          j        |           }|dS  |          S rb  )r   r   rU   )dirretr.   origvisitdirfns      r(   lfvisitdirfnz!overridecat.<locals>.lfvisitdirfn  s\    &"""4nS!! 	J %%:5~b!!!r*   s   output)pathnames   decodes8   largefile %s is not in cache and could not be downloadeds   rbr   ) r   byteskwargsr   	revsinglerY   r8   r   r   r;   rX   visitdirra   r   makefileobjr   rU   rB  r  rr   r?  inusercacheru   r   r  r   r	   r   r   usercachepathr   r   filechunkiter)r   ru   rv   file1r   rz   r   errr<   r   rf  rk  r&   fpr.   rB  rQ   storer  r   r   fpinchunkrc  re  r5   rj  s                          @@@@r(   overridecatrz    s'   %%D

tTXXf%5%5
6
6C
CUUFcE8d?D11A)K      AII      AEZN	" 	" 	" 	" 	" AJXXa[[   dhhy&9&9AFFF 	("$Q''Bz[[^^z1v{{}}88I&& 4??1d33D+CF33)$'488 
(2488E',yy2t*'>'>$GW7||q((#k!.  !	!   +DGT::$&& ($!%!3D!9!9 ( ((( ( ( ( ( ( ( ( ( ( ( ( ( ( (-	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(2 Js7   (EI;*-I$I;$I((I;+I(,I;;I?	I?	s   _updatec           
         |                     dd           }|o|                                 }|                                5  t          j        |j        |          }	|	                    t          j                    g ddd          \  }
}}t          |j	                  }|d         }||         }|
|j
        z   D ]}|j                            |          }|j                            |          s7t          j        |          }t          j        |          }t          j        |||t          j        |                     ||v r3|t          j        ||                   k    r|                    |           |j        D ]1}t          j        |          }||vrt          j        |||           2|D ]}|	                    |           |	                    |                                           t          j        |          }|                     d          }|r(|                                rt7          j        d          |	                                5   | ||||g|R i |}t          j        |          }t          j        ||          }|                    |          D ]}|	                     |dd           |	                    |                                           |s|s|r"|!                    |j"        |j#        z              tI          j%        |j        |||	           d d d            n# 1 swxY w Y   |cd d d            S # 1 swxY w Y   d S )
Nrx   FTr<  r   wcs1   largefiles is not compatible with in-memory merger5  )r  r  )&rY   r:   rl   r   rm   ru   rk   r^   r8   r   r   re   r   rf   hashfiler$   rn   ro   r?  rt   r   r  set_possibly_dirtyrr   rs   r  
isinmemoryr	   ProgrammingErrorr8  r  
differencer9  r   r   r  r   r  )r   rv   r  r!  r   r#  r$  rx   partialr   rA  r   rB  oldcleanrY  dctxr/   lfileabsr  r$   r  r  r|  r   r  r  s                             r(   mergeupdater    s;   jjD))G.gnn...G	 P P  *47D99
$.$5$5O %6 %
 %
!> qw<<DzDzaj( 	$ 	$Ey~~e,,H9##H-- _X..FnU++Ggvv';H'E'E   $6V-AW. . $ $ U###W 	8 	8E~e,,Ht##  uh7777  	1 	1E))%00000022333-d33ZZ 	"--// 	 (D   $$&& 	 	T$k5J4JJJ6JJF 1$77K/[IIH ",,X66 P P&&u$&OOOOT4466777 7e 7w 7	AI 5666#w   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	& aP P P P P P P P P P P P P P P P P Ps8   HMCL<0M<M 	 MM 	MMMs   marktouchedc                      | ||g|R i |}g }|D ]-}t          j        |          }||                    |           .|rt          j        |j        ||dd           |S )NFT)r  r  r  )r   rU   ri   r   r  ru   )	r   rv   rT   r#  r$  r   r  r&   r.   s	            r(   scmutilmarktouchedr    s    T$//////FH     ##>OOB 
G	
 	
 	
 	
 Mr*   s   preservedrequirementss   supporteddestrequirementsc                 X     | |          }d|j         v r|                    d           |S )Nr  )requirementsrt   )r   rv   reqss      r(   upgraderequirementsr  4  s6     4::D)))Kr*   s   largefile://s   openc                     |                     t                    rI|rd}t          j        |          |t	          t                    d          }t          j        ||          S  | ||fd|i|S )Ns'   cannot use data on a 'largefile://' urlrB  )r   	_lfschemer	   r  r   r   getlfile)r   ru   url_rB  r$  r   lfids          r(   openlargefiler  @  s|    y!! 3 	.<C(---C	NN$$%$R...tB22426222r*   r"   r1  )F)TNr*   NNr   )j__doc__r6   r   mercurial.i18nr   mercurial.pycompatr   mercurial.hgwebr   	mercurialr   r   r   	copiesmodr	   r
   r   r   r   r   r   r   r^   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=   rI   r   r   r  r   wrapcommandr   r   r   	hgsubrepor   r   r   r   r  r  r  r3  r;  rJ  rR  r{  r  r  r  r  revsetpredicater  r  r  r  extsetupr  r  r  r  r  r  r
  r  r!  r-  r/  r8  r:  rC  rQ  r[  r_  rz  r  r  r  r  r  r,   r*   r(   <module>r     s   O N  				       # # # # # # ' ' ' ' ' '                                           .               %
&= %
'+Y?&?m&?&G&G #

 
 
   "E E EPE E ET m,,- - -,- 
	haa 3445	iqq!6778A/ 		

    ) )!  ) &!!  "! )$$  %$. "I..( ( /.(
 	- - -
 "H--F F F .-F
 u- u- u-p  AFGG		
 AEFF		
 ADEE		

   . / . $"@ A A
B	C   	& 	&	 	&, ,--+ + + .-+@ +,,k k -,k\  0119 9 219* L))<@   *)> M**   +* '""_ _ _ #"_V )$$J
 J
 %$J
^  AHII		
 A899AfII	

   $  % $0  A677AfII	

   + + + +,,  -, K  E E ! E4  A899		

  
 

* 
* 
*
 

* X  2 	Y//" " 0/"" A A A 
9 9 9
 j))  *)
 :&& 

] ] ] '&]@ "J//<? <? <? 0/<?F *++5 5 ,+5 -..+ + /.+
 )$$0 0 %$0f$ $ $4% % %P XtQQ/M-N-NOP   ! ! !  D sHdAA.L,M,MNO   & & &
 ,''/7 /7 /7 ('/7h & & &R   @ 77	 	 87	 D D DN 
##T T $#Tn .))  *)( ":;;">??  @? <; 	 !!3 3 3 "!3 3 3r*   