
    6hJ                    j    S r SSKJr  SSKrSSKJr  SSKJrJrJ	r	J
rJrJr  SSKJr  SSKJrJr  S	 rg)
z,setup for largefiles repositories: reposetup    )annotationsN)_)error
extensions	localrepomatchscmutilutil)	timestamp   )
lfcommandslfutilc                ^  ^ ^ TR                  5       (       d  g  " UU 4S jSTR                  5      nUTl        [        R                  /Tl        T R
                  /Tl        U 4S jnTR                  R                  SU5        S nT R                  SSUS5        T R                  SSUS5        g )	Nc                     >^  \ rS rSrSrSrU 4S jr\R                         S
U UU4S jj5       r	U 4S jr
       SU 4S jjrS rS	rU =r$ )reposetup.<locals>.lfilesrepo(   TFc                   > [         TU ]  U5      nU R                  (       aS  S n[        R                  " USU5        S n[        R                  " USU5        SS jn[        R                  " USU5        U$ )Nc                z    U " 5       nU Vs/ s H"  n[         R                  " U5      =(       d    UPM$     sn$ s  snf N)r   splitstandin)orig	filenamesfs      </usr/lib/python3/dist-packages/hgext/largefiles/reposetup.pyfiles8reposetup.<locals>.lfilesrepo.__getitem__.<locals>.files6   s4     $IAJKAF//27a7KKKs   )8r   c                J    U " 5       n " S SUR                   5      nX!l         U$ )Nc                  (   ^  \ rS rSrU 4S jrSrU =r$ )Sreposetup.<locals>.lfilesrepo.__getitem__.<locals>.manifest.<locals>.lfilesmanifest?   c                n   > [         TU ]  nU" U5      =(       d    U" [        R                  " U5      5      $ r   )super__contains__r   standin)selffilenamer   	__class__s      r   r#   `reposetup.<locals>.lfilesrepo.__getitem__.<locals>.manifest.<locals>.lfilesmanifest.__contains__@   s1    #(7#7D#'> $T &x 86      )__name__
__module____qualname____firstlineno__r#   __static_attributes____classcell__r'   s   @r   lfilesmanifestr   ?   s     r)   r2   r1   )r   man1r2   s      r   manifest;reposetup.<locals>.lfilesrepo.__getitem__.<locals>.manifest<   s%    6D  &4NKr)   r4   c                  ^  Ub  U " XU5      nU$ U " X5      n U$ ! [         R                   aY    Ub  U " [        R                  " U5      X#5      nOU " [        R                  " U5      U5      nUR                  mU4S jUl         U$ f = f)Nc                    > T " 5       S-   $ )N    r*   )olddatas   r   <lambda>Lreposetup.<locals>.lfilesrepo.__getitem__.<locals>.filectx.<locals>.<lambda>Y   s    gi%.?r)   )r   LookupErrorr   r$   data)r   pathfileidfilelogresultr9   s        @r   filectx:reposetup.<locals>.lfilesrepo.__getitem__.<locals>.filectxK   s    @".%)$%@F "M &*$%7F "M !,, @ #.%)&..*>%PF%)&..*>%GF"(++&?!M@s     A)B	B	rB   )NN)r"   __getitem__lfstatusr   wrapfunction)r%   changeidctxr   r4   rB   r'   s         r   rD   )reposetup.<locals>.lfilesrepo.__getitem__2   sj    '%h/C}}L ''We<  ''ZB"" ''Y@Jr)   c                  >^ ^0 XEUpn[         T1T ]  nT R                  (       d  U" UUUUU	U
U5      $ ST l        T U   nT U   nUR                  5       S L m0T0=(       a    UT S   :H  nUc  [        R
                  " 5       n T R                  S5      nSnU   T R                  R                  T 5         [        R                  " T3T 5      nUR                  5       (       d8  U H  nU" U5      (       d  M    O"   U" UUUUU	U
U5      sS S S 5        sS S S 5        $ U U04S jn[        R                  " U5      nSUl        U" UR"                  5      Ul        U" XUXEXg5      nT0(       Gat  U 4S jnSUl        UR"                   Vs/ s H  nU" U5      (       d  M  UPM     snUl        UR                  U/ SU	SS9u  nnnUR$                  UR&                  UR(                  UR*                  UR,                  4u  nnnnnU(       Ga  T2S    nU H  n[        R.                  " U5      n U U;  a  UR1                  U5        M2  [        R2                  " UU    5      [        R4                  " T R7                  U5      5      :w  a  UR1                  U5        M  U	(       a  UR1                  U5        UU   R9                  5       nUR:                  n!UR<                  n"[>        R@                  " UU5      n#U#c  M  U!U"U#4n$URC                  UU$5        M     GO8UU-   U-   U-   n%/ / / nnnT R                  RD                  n&U% H  n[        R.                  " U5      n U U;   a  T R7                  U5      n'[        R2                  " UU    5      [        R4                  " U'5      :w  d<  U&(       aH  SURG                  U 5      ;   [I        [        RJ                  " U'5      5      :w  a  UR1                  U5        M  U	(       a  UR1                  U5        M  M  UR1                  U5        M     U Vs/ s H!  n[        R.                  " U5      U;   d  M  UPM#     nnURM                  [        RN                  " T 5      5       H[  n [        RP                  " U 5      nU" U5      (       d  M(  UU;  d  M0  UR1                  U5        T RR                  RU                  U SS9  M]     [W        U5      nU Vs/ s H  nUT R                  ;  d  M  UPM     nnUS	    Vs/ s H  nUU;  d  M  UPM     snUS	'   [Y        U5      n([Y        US
   5      R[                  U(5      US
'   [Y        US   5      R[                  U(5      US'   U V)V*s/ s H3  n)U) V*s/ s H"  n*[        R\                  " U*5      (       a  M   U*PM$     sn*PM5     n+n)n*UUUU/ / U4n,[_        U+U,5       V-V.s/ s H  u  n-n.[a        U-U.-   5      PM     nn-n.OBU V/Vs/ s H3  n/U/ Vs/ s H"  n[        RP                  " U5      =(       d    UPM$     snPM5     nn/nU(       a   URc                  T Re                  5       5        OURg                  5         S S S 5        S S S 5        ST l        [h        R                  " W6 $ ! [        R                   a    [        R                  " 5       nSn GNf = fs  snf s  snf s  snf s  snf s  sn*f s  sn*n)f s  sn.n-f s  snf s  snn/f ! , (       d  f       N= f! , (       d  f       N= f)NF   .Tc                  > T(       d  U $ / nTR                   nU  Hl  n[        R                  " U5      nXB;   a  UR                  U5        M1  UR	                  U5      (       a  UR                  X445        M[  UR                  U5        Mn     U$ r   )dirstater   r$   appendhasdirextend)r   newfilesrM   r   sfr%   workings        r   
tostandins8reposetup.<locals>.lfilesrepo.status.<locals>.tostandins   st    "$!H#}}H"#^^A.>$OOB/%__R00 %OOQG4$OOA. # $Or)   c                   > [         R                  " U 5      nTR                  nX;   =(       d    UR                  U5      $ r   )r   r$   rM   rO   )r   rR   rM   r%   s      r   sfindirstate:reposetup.<locals>.lfilesrepo.status.<locals>.sfindirstate   s0    #^^A.#'==!~D1DDr)   )subreposignoredcleanunknown   x)ignoremissing         )5r"   statusrE   revmatchmodalwayswlockr   	LockErrorr
   nullcontextmanagerrM   running_statusr   openlfdirstatecopy_was_tampered_with_filesmodifiedaddedremoveddeletedr[   r$   rN   readasstandinhashfilewjoinlstatst_modest_sizer   reliable_mtime_of	set_clean
_checkexecflagsboolgetexecutablewalkgetstandinmatcherr   wvfs
unlinkpathlistset
difference	isstandinzipsortedwritecurrenttransaction
invalidater	   )4r%   node1node2r   rZ   r[   r\   listsubreposlistignored	listcleanlistunknownr   ctx1ctx2parentworkingrf   gotlock
lfdirstater   rT   mrA   rW   unsuresmtime_boundaryrn   ro   rp   rq   wctxlfiler$   modesizemtime
cache_datatocheck	checkexecabslfilelfilesfilelistfnnormalsrE   list1list2itemsrS   r'   repouis4   `                                               @r   rb   $reposetup.<locals>.lfilesrepo.statusf   sw    3:'KK7>D==   "DM;D;DhhjD(G#:T
(:M} )  

5) 44T:
 $222t<
||~~' 88! (  $!!!'%'(  ;:.$" IIe$'+$%ahh/!WW E
 04E,/4||#O|!|AA|#OEL 1;0A0A!# %' % 1B 1-FA~ 

				B>Xugw %#Dz%+E&,nnU&;G&d2 ( 6!'!5!5 $W"!'E1B!C"D !) 6#,$)LL$7$(K$5$5$7'(yy'(yy(1(C(C$%~)" $)#426e1DJ$.$8$8
$K) &,, #)8"3e";e"C13R%$(MM$<$<	%,E&,nnU&;G&$+/::e+<$*$8$8g$G'-x'@%A %.)-G1D)D'+F,@,@,J'K)L %-OOE$:%.$)LL$7 &/ !&U 3! &-0 *1#)0%~~e4< ")0   # $(99V-E-Ed-K#L & 3 3G <$U||$ 
2#NN51
 !II000M $M "&\F +2L'QQdmm5Kq'GL,21I MIq*9LI MF1I _F #F1I 9 9& AF1I #F1I 9 9& AF1I )/(.H '/Khf6F6Fr6JhK(.  
 ! H /2'8.D.DNUE uu}-.D  F &,%+E ?DDe,,Q/414eD%+  
 $$T%<%<%>?))+q ;t !DM>>6**} ??  //1 t $PF#6 M M L Ea ;:s  >Y9 [,/=[0[	[,A)[=Z+Z+E[)D+[Z06Z0<A[>[Z5)Z5/	[8
Z:Z:A["
[
,Z?Z?[
[7[

	[
[
%)[[
:[[,9+Z('Z(+[?[
[[
[
[)	%[,,
[:c                f   > [         TU ]  " U/UQ70 UD6n " S SUR                  5      nXQl        U$ )Nc                  (   ^  \ rS rSrU 4S jrSrU =r$ ):reposetup.<locals>.lfilesrepo.commitctx.<locals>.lfilesctxiP  c                F   > [         TU ]  n[        R                  " X U5      $ r   )r"   markcommittedr   )r%   noder   r'   s      r   r   Hreposetup.<locals>.lfilesrepo.commitctx.<locals>.lfilesctx.markcommittedQ  s      70D!//DAAr)   r*   )r+   r,   r-   r.   r   r/   r0   r1   s   @r   	lfilesctxr   P  s    B Br)   r   )r"   	commitctxr'   )r%   rH   argskwargsr   r   r'   s         r   r   'reposetup.<locals>.lfilesrepo.commitctxM  s:    7$S:4:6:DBCMM B
 &MKr)   c                   > Uc  0 n[         TU ]  nU R                  5          U R                  S   n	U	" X5      nU" UUUUUUUS9n
U
sS S S 5        $ ! , (       d  f       g = f)N)textuserdater   forceeditorextra)r"   commitrf   _lfcommithooks)r%   r   r   r   r   r   r   r   r   lfcommithookrA   r'   s              r   r   $reposetup.<locals>.lfilesrepo.commit[  si     }7>D#2226$T1!  s   %A
Ac                .   / n/ n/ nU H  n[         R                  " US-   5      (       a!  [        R                  " [	        S5      U-  SS9eU R
                  R                  U5      (       a  UR                  U5        Mu  UR                  U5        M     U H  nSnU R                  R                  U5      S-   nU HG  n	U R                  R                  U	5      R                  U5      (       d  M4  UR                  U5        Sn  O   U(       dg  U Ha  n
U R                  R                  U
5      R                  U5      (       d  M4  UR                  U
5        U(       a  MN  UR                  S5        SnMc     U(       a  M  UR                  U5        M     X5-  nU$ )ar  
Adjust matched file list
If we pass a directory to commit whose only committable files
are largefiles, the core commit code aborts before finding
the largefiles.
So we do the following:
For directories that only have largefiles as matches,
we explicitly add the largefiles to the match list and remove
the directory.
In other cases, we leave the match list unmodified.
   /s    file "%s" is a largefile standins#   commit the largefile itself instead)hintFTrK   )r   r   r   Abortr   r   isdirrN   rM   	normalize
startswith)r%   r   r   actualfilesdirsregularsr   
matcheddirdmflfs              r   
_subdirlfs(reposetup.<locals>.lfilesrepo._subdirlfsy  sh    KDH##AH--++=>BC 
 99??1%%KKNOOA&  "
MM++A.5"B}}..r2==a@@#**1-%)
	 #
 " %==2226AA!DD'..r2#-: !, 2 24 8-1
 % "z&&q)5 : #Kr)   )rE   )rK   NNFFFF)r)   NNNFFN)r+   r,   r-   r.   _largefilesenabledrE   rD   r   unfilteredmethodrb   r   r   r   r/   r0   )r'   r   r   s   @r   
lfilesrepor   (   sy    !,	h 
	#	# d	+ d	+ 
$d	+L		  	<:	 :	r)   r   c                  >^ U R                   nUc  U R                  R                  nU(       a_  [        5       mU4S jn[        R
                  " U R                  X5        [        R                  " TU R                  U R                  T5        gg)z4Push largefiles for pushop before pushing revisions.Nc                &   > TR                  U5      $ r   )add)r   lfhashtouploads     r   r:   8reposetup.<locals>.prepushoutgoinghook.<locals>.<lambda>  s    f)=r)   )
lfrevsoutgoingmissingr   r   getlfilestouploadr   r   uploadlfilesremote)pushopr   addfuncr   r   s      @r   prepushoutgoinghook&reposetup.<locals>.prepushoutgoinghook  sd    >__,,FuH=G$$V[[&B##BV]]HM	 r)   
   largefilesc                   UR                  5          SUR                  ;   a
   S S S 5        g [        R                  nUR                  R                  5        HX  nUR                  (       d  M  X4R                  ;   d  M'  UR                  R                  S5        [        R                  " U5          O   S S S 5        g ! , (       d  f       g = f)Nr   )lockrequirementsr   shortnameslashstoredata_entries	is_revlog	target_idr   r	   writereporequirements)r   r   r   markerentrys        r   checkrequireslfiles&reposetup.<locals>.checkrequireslfiles  s    YY[ 1 11 [ **F002 ???v'@%%))-811$7 3	 [[s   B;<B;,B;=5B;;
C	s   hookss   changegroup.lfiless   commit.lfiles)
localr'   r   updatestandinsbymatchr   rb   _lfstatuswritersprepushoutgoinghooksr   	setconfig)r   r   r   r   r   s   ``   r   	reposetupr   "   s     ::<<K KT^^ KZ  DN "778D
  YYKD	N 	!!-1DE LL')<m LL+-@-Pr)   )__doc__
__future__r   rk   mercurial.i18nr   	mercurialr   r   r   r   rd   r	   r
   mercurial.dirstateutilsr    r   r   r   r*   r)   r   <module>r     s.    3 "    .{Qr)   