
    6hkx                       S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
JrJrJrJrJrJr  S SKJr  SSKJrJrJrJrJrJr  \R6                  " S	5      r " S
 S\
R:                  5      rS S jrS!S jr S!S jr!S r"S r#S r$  S"S jr%S r&S r'S r(S r) S#S jr*S!S jr+ " S S5      r, " S S5      r- " S S5      r.S r/g)$    )annotationsN)_)short)encodingerrorlockmdiffpolicyscmutilutilvfs)procutil   )	constantscontentstoredatapackhistorypackmetadatastoreshallowutilosutilc                      \ rS rSrSrg)RepackAlreadyRunning    N)__name__
__module____qualname____firstlineno____static_attributes__r       </usr/lib/python3/dist-packages/hgext/remotefilelog/repack.pyr   r      s    r    r   c                   [         R                  " 5       SU R                  S/n[        S5      nU(       a  UR	                  S5        [        S5      nU(       a  UR	                  S5        U R
                  R                  U5        0 nU R
                  R                  SS5      (       a  U R
                  R                  US	'   [         R                  " U[        R                  4S
S0UD6  g )Ns   -R   repacks   (running background repack)
s   --incrementals(   (running background incremental repack)
s   --packsonlys   devels   remotefilelog.bg-waitrecord_waitensurestartF)r   hgexecutableorigrootr   appenduiwarn
configboolatexitrunbgcommandr   environ)repoincremental	packsonlycmdmsgkwargss         r!   backgroundrepackr5   #   s      "E4==)
DC
,
-C

#$<=

>"GGLLFww($<== $}#x//MUMfMr    c           	        [        U S5      (       a~  [        R                  " U R                  6 n[        R
                  " U R                  SS06n[        R                  " U [        R                  5      n[        U UUU[        R                  US9  [        U R                  S5      (       a  [        U 5      u  pVUu  pxn	Uu  pn[        R                  " U6 n[        R
                  " USS06n[        U UUU
[        R                  US9  [        R                  " USS06n[        R
                  " U	SS06n[        U UUU[        R                  US9  gg)zIIf ``packsonly`` is True, stores creating only loose objects are skipped.shareddatastoresallowincompleteToptions	datastoreN)hasattrr   unioncontentstorer7   r   unionmetadatastoresharedhistorystoresr   getcachepackpathr   FILEPACK_CATEGORY
_runrepackmanifestlog_getmanifeststoresTREEPACK_CATEGORY)r/   r:   
datasourcehistorysourcepackpath	localdata
shareddata	lpackpathldstoreslhstores	spackpathsdstoresshstoress                r!   
fullrepackrQ   4   sl   t'((!33T5J5JK
%88%%
7;
 //)--
 	''	
 t-- 24 8	(1%	X(2%	X "33X>
%88
'+
 	''	
 "33
'+

 &88
'+
 	''	
5 .r    c           
        [        U S5      (       aU  [        R                  " U [        R                  5      n[        U U R                  U R                  U[        R                  US9  [        U R                  S5      (       aQ  [        U 5      u  p4Uu  pVnUu  pn
[        U U	U
U[        R                  US9  [        U UUU[        R                  SUS9  gg)zThis repacks the repo by looking at the distribution of pack files in the
repo and performing the most minimal repack to keep the repo in good shape.
r7   r9   r;   T)allowincompletedatar:   N)r<   r   r@   r   rA   _incrementalrepackr7   r?   rC   rD   rE   )r/   r:   rH   rI   rJ   rK   rL   rM   rN   rO   rP   s              r!   incrementalrepackrU   l   s     t'((//)--
 	!!$$''	
 t-- 24 8	(1%	X(2%	X 	''	
 	'' $	
! .r    c                   U R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  n[
        R                  " U [        R                  5      n[
        R                  " U R                  R                  R                  [        R                  5      nXbU4XQU44$ N)rC   r7   localdatastoresr?   localhistorystoresr   r@   r   rE   getlocalpackpathsvfsr   base)r/   r7   rX   r?   rY   sharedpackpathlocalpackpaths          r!   rD   rD      s    ''88&&66O**>>))<< 11i))N  00		I77M
 
);<	+>? r    c                ^   ^ ^ [        U 4S jU 5       5      n[        U4S jU 5       5      nU$ )Nc              3  d   >#    U  H%  n[         R                  R                  TU5      v   M'     g 7frW   )ospathjoin).0prH   s     r!   	<genexpr>_topacks.<locals>.<genexpr>   s#     :Eqh**Es   -0c              3  4   >#    U  H  nT" U5      v   M     g 7frW   r   )rd   re   constructors     r!   rf   rg      s     /AQs   )list)rH   filesri   pathspackss   ` `  r!   _topacksrn      s(    :E::E///ELr    c                    U R                   R                  SS5      nUS::  a  U$ SS/nU VVVs1 s Hb  u  pVnUR                  U:  d  M  [        R                  R                  U5      S   U;   d  M@  [        R                  R                  U5      S   iMd     nnnnU H  n	[        R                  R                  X5      n
U Ho  nX-   nU R                   R                  SU[        R                  " [        R                  " U5      R                  5      4-  5        [        R                  " U5        Mq     M     U Vs/ s H-  n[        R                  R                  US   5      U;  d  M+  UPM/     sn$ s  snnnf s  snf )zoDeletes packfiles that are bigger than ``packs.maxpacksize``.

Returns ``files` with the removed files omitted.   packss   maxpacksizer   s	   .datapacks   .dataidxr   s#   removing oversize packfile %s (%s)
)r)   configbytesst_sizera   rb   splitextrc   debugr   	bytecountstatunlinkbasename)r/   folderrk   maxsize	VALIDEXTSrb   ftyperv   	oversized	rootfnamerootpathextrows                r!   _deletebigpacksr      sL    gg!!(N;G!| {+I "'!&DLL7" 	"(*(8(8(>q(AY(N 	"q!!&   	77<<2C>DGGMM7(=(=>?@ IIdO   !N5CBGG$4$4SV$<I$MC5NN Os   E4
$E42&E4=*E;+E;c                   [         R                  " U R                  U5        [        R	                  USS9n[        XU5      n[        U[        U R                  U5      [        R                  5      nUR                  S U 5       5        [        U[        U R                  U5      [        R                  5      n	U	R                  S U 5       5        [        U[        R                  [        R                  5      n
[        US U
 5       [        R                  5      nUR                  S U 5       5        [        U [         R"                  " USU06[$        R&                  " U	SS06UU[$        R&                  " USS06US9  g )	NT)rv   c              3  h   #    U  H(  n[        U[        R                  5      (       a  M$  Uv   M*     g 7frW   )
isinstancer   datapackstorerd   ss     r!   rf   %_incrementalrepack.<locals>.<genexpr>   s$      aJq(2H2H$I9   #2	2c              3  h   #    U  H(  n[        U[        R                  5      (       a  M$  Uv   M*     g 7frW   r   r   historypackstorer   s     r!   rf   r      s)      A![99: 	
r   c              3  *   #    U  H	  u  po1v   M     g 7frW   r   )rd   fmoderv   s       r!   rf   r      s     0}qs   c              3  h   #    U  H(  n[        U[        R                  5      (       a  M$  Uv   M*     g 7frW   r   r   s     r!   rf   r      s)      A![99: 	
r   r8   )fullhistoryr:   )r   mkstickygroupdirr)   r   listdirr   rn   _computeincrementaldatapackr   extend_computeincrementalhistorypackr   _allpackfileswithsuffix
PACKSUFFIXINDEXSUFFIXrB   r   r=   r   r>   )r/   r;   historystorerH   categoryrS   r:   rk   	datapackshistorypacksallhistoryfilesallhistorypackss               r!   rT   rT      st      (3NN8$N/EDE2E-dggu=x?P?PI    &tww6L
    .{%%{'>'>O 00O
   
 &&	
(;	
 	((,MM!44
.2
 r    c                   U R                  SS5      U R                  SS5      U R                  SS5      U R                  SS5      U R                  SS5      S.n[        U[        R
                  [        R                  5      n[        X25      $ )N   remotefilelogs   data.gencountlimits   data.generationss   data.maxrepackpackss   data.repackmaxpacksizes   data.repacksizelimit   gencountlimit   generations   maxrepackpacks   repackmaxpacksize   repacksizelimit)	configint
configlistrq   r   r   r   r   _computeincrementalpackr)   rk   opts	packfiless       r!   r   r     s    ,,'79NO&68KL<<4
 !nn7
 NN5
D (x""H$8$8I #933r    c                    U R                  SS5      U R                  SSS/5      U R                  SS5      U R                  SSS5      U R                  SS5      S	.n[        U[        R
                  [        R                  5      n[        X25      $ )
Nr   s   history.gencountlimits   history.generationss   100MBs   history.maxrepackpackss   history.repackmaxpacksizes   400MBs   history.repacksizelimitr   )r   r   rq   r   r   r   r   r   r   s       r!   r   r   $  s    ,,6
 4xj
 <<7
 !nn:H
 NN8
D$ ({%%{'>'>I #933r    c                    / nU  VVVs1 s H  u  pEodiM	     nnnnU  HJ  u  pnUR                  U5      (       d  M  US [        U5      *  n	X-   U;  a  M7  UR                  XU45        ML     U$ s  snnnf rW   )endswithlenr(   )
rk   
packsuffixindexsuffixresultfnr   rv   filesetfilenameprefixs
             r!   r   r   =  s    F(-.nbrG. %  ,,,S_,-  0vT*+ !& M /s   A-c           	     "  ^ [        [        S US    5       SS95      nUR                  S5        / n[        [	        U5      5       H  nUR                  / 5        M     0 mU  HP  u  pVnUR
                  nXS   :  a  M  UTU'   [        U5       H   u  pIX:  d  M  X4   R                  U5          MN     MR     / n
[        U5       H;  u  pI[	        X4   5      US   :  d  M  U
R                  [        X4   SU4S jS	95          O   U
S
S nU
SS
 n
[        U4S jU 5       5      nXS   :  af  U
(       a_  [	        U5      US   :  aM  UR                  U
R                  5       5        UTUS      -  nXS   :  a  U
(       a  [	        U5      US   :  a  MM  U$ )aH  Given a set of pack files along with the configuration options, this
function computes the list of files that should be packed as part of an
incremental repack.

It tries to strike a balance between keeping incremental repacks cheap (i.e.
packing small things when possible, and rolling the packs up to the big ones
over time).
c              3  N   #    U  H  n[         R                  " U5      v   M     g 7frW   )r   	sizetointr   s     r!   rf   *_computeincrementalpack.<locals>.<genexpr>Y  s     @+?aq!!+?s   #%r   T)reverser   r   r   c                   > TU    $ rW   r   )xsizess    r!   <lambda>)_computeincrementalpack.<locals>.<lambda>y  s	    58r    )r   keyNc              3  .   >#    U  H
  nTU   v   M     g 7frW   r   )rd   nr   s     r!   rf   r     s     3{!U1X{s   r   r   )
rj   sortedr(   ranger   rr   	enumerater   sumpop)rk   r   limitsgenerationsir   r   rv   sizelimitgenpackschosenpacks
repacksizer   s                @r!   r   r   N  s    @4+?@$OF MM! K3v;2   E#d||+,,f!&)HA|%%f- * $" Hf%{~&6!77OO{~t9KL  & 23-K}H3{33J,--t$5668<<>*eKO,,
 	,--t$566
 r    c                    [         R                  " U R                  U5        S nU R                  R                  SS5      nU(       d  Un[	        U UUUUUUUS9n	[
        R                  " U R                  U5       n
[        R                  " U R                  U5       n U	R                  X5         S S S 5        S S S 5        g ! [        R                   a    [        [        S5      5      ef = f! , (       d  f       NC= f! , (       d  f       g = f)Nc                    U R                  XS9nXR                  5          R                  5       nU R                  R	                  SS5      n[
        R
                  " 5       U-
  nUS   U:  $ )ztCheck if the file node is older than a limit.
Unless a limit is specified in the config the default limit is taken.
)fileidr   s   nodettlr   )filectxlinkrevdater)   r   time)r/   r   noder   filetimettlr   s          r!   isold_runrepack.<locals>.isold  sb     ,,x,5)*//1gg 0*=		c!{U""r    r   s   gcrepack)gcr   r:   s3   skipping repack - another repack is already running)r   r   r)   r+   repackerr   mutabledatapackr   mutablehistorypackrunr   LockHeldr   r   )r/   datahistoryrH   r   r   r:   r   garbagecollectpackerdpackhpacks               r!   rB   rB     s       (3
# WW''(8+FN	F 
	!	!$''8	4++DGGX>%

5( ? 
5	4 >> *.  ?> 
5	4s6   ;"C?C.C1C?)C++C..
C<	8C??
Dc           	     v   U(       d  [        5       nOUn/ SQnU R                  R                  SSS5      nU(       a  UR                  SU-  5        U R                  R                  SSS5      nU(       a  UR                  SU-  5        SR	                  U5      nSU-  /n[
        R                  " X5      n[        5       nSn[        UR                  5       H  n	X	   R                  5       R                  U5      u  pU
c  Ub  UnU(       a  UR                  U5      nUnUR                  U	5        [        U5      [        L aC  UR                  5        H-  u  pUS	   S	   c  M  UR                  U" XS	   S	   5      5        M/     M  UR                  5        H  u  pUR                  U" X5      5        M     M     U$ )
zComputes a keepset which is not garbage collected.
'keyfn' is a function that maps filename, node to a unique key.
'lastkeepkeys' is an optional argument and if provided the keepset
function updates lastkeepkeys with more keys and returns the result.
)   .s   draft()s   parents(draft())r   s   pullprefetchNs   (%s)s   bgprefetchrevs   +s   sort((%s), "topo")r   )setr)   configr(   rc   r   revrangereversed_listmanifestctxread_any_fast_deltadiffaddtypedictitems)r/   keyfnlastkeepkeyskeepkeysrevsprefetchrevskeep	processedlastmanifestr
delta_frommfullr   r   filenodes                   r!   keepsetr
    s    5 3D77>>"2OTJLGl*+77>>"24EtLLGl*+99T?D!D()DD'DIL djj!++-AA)L
,": DFF<(La 7d? #$'')71:)LLxa!<= #,
 '(ggi"U867 '0) ". Or    c                  F    \ rS rSrSr   SS jrS rS rS rS r	S	 r
S
rg)r   i  zVClass for orchestrating the repack of data and history information into a
new format.
Nc	                    Xl         X l        X0l        X@l        [        R
                  " U5      U l        X`l        Xl        U R                  (       a+  U(       d  [        S5      e[        US 5      U l        Xpl        g g )Ns*   Function 'isold' is not properly specifiedc                    X4$ rW   r   )r   r   s     r!   r   #repacker.__init__.<locals>.<lambda>  s    vr    )r/   r   r   r   r   getunitsunitr   r:   
ValueErrorr
  r   r   )	selfr/   r   r   r   r   r   r   r:   s	            r!   __init__repacker.__init__  sg     		&&&x0	  !NOO#D*=>DMJ r    c                   [        5       n[        R                  " [        U R                  5      SS SS9   U R                  R                  S5        U R                  R                  X0R                  S9  U R                  R                  X0R                  S9  U R                  X15        U R                  X25        UR                   H  nUR                  U5        M     S S S 5        g ! , (       d  f       g = f)Ns
   repacklockr   )desctimeouts	   prerepackr9   )repackledgerlockmodr   repacklockvfsr/   hookr   
markledgerr:   r   
repackdatarepackhistorysourcescleanup)r  
targetdatatargethistoryledgersources        r!   r   repacker.run  s    \\$))$m$
 IINN<( II   >LL##FLL#A OOF/v5 !..v& )
 
 
s   B(C&&
C4c                  ^ ^ U(       d  U$ SUU 4S jjn[        U5      n[        [        XFSS95      nUR                  (       a?  UR                  STSR	                  U Vs/ s H  n[        U5      PM     sn5      4-  5        [        U5       H<  u  pUS:X  a  T R                  R                  S4XY'   M'  XHS-
     n
XU
   S   S-   4XY'   M>     U Vs/ s H  oU;  d  M
  UPM     nnX4-  nU$ s  snf s  snf )	aA  Reorderes ``orphans`` into a single chain inside ``nodes`` and
``deltabases``.

We often have orphan entries (nodes without a base that aren't
referenced by other nodes -- i.e., part of a chain) due to gaps in
history. Rather than store them as individual fulltexts, we prefer to
insert them as one chain sorted by size.
r   c                   > TR                   R                  TU 5      n[        R                  U;   a  U[        R                     $ U$ rW   )r   getmetar   METAKEYSIZE)r   defaultmetar   r  s      r!   getsize'repacker._chainorphans.<locals>.getsize0  s=    99$$Xt4D$$,I1122r    T)r   r   s   %s: orphan chain: %s
s   , r   )r   )	r   rj   	debugflagrt   rc   r   r   r/   nullid)r  r)   r   nodesorphans
deltabasesr,  r   r   r   parentr   s   ` `         r!   _chainorphansrepacker._chainorphans$  s     L	 	 /vgDAB<<HH)UZZ7(C7aq7(CDEF !)GAAv$(II$4$4a#8
  Q$*v,>q,AA,E#F
  * "6Eqg%5E6 )D 7s    C-	C2C2c           
       ^' U R                   R                  nUR                  SSS5      n0 nUR                  R	                  5        H>  nUR
                  (       d  M  XeR                  UR                  0 5      UR                  '   M@     SnUR                  [        S5      U R                  [        U5      S9n[        UR                  5       5       GH  u  pUR                  U5        0 n[!        S U
 5       5      m'/ nUR                  [        S5      S	[        T'5      S9n[#        T'5       HG  u  pX;   a  M  UR                  U5         UR                  U R$                  R'                  XUS
95        MI     UR-                  5         [!        [/        U R1                  U5      5      5      n[        U5      S:  a  UR3                  S[        U5      -  5        UR5                  [        U5      5        [!        [7        U'4S jU5      5      nU R8                  (       a[  / nU HQ  nX4U R:                  ;  a,  U R=                  U R                   X5      (       a  SX   l        M@  UR+                  U5        MS     Un0 n[A        5       n[A        5       n[A        T'5      m'UR                  [        S5      S	[        U5      S9n[#        U5       GH  u  pUR                  U5        URC                  US 5      nUcE  U R                   RD                  SnnU R                   RD                  S4UU'   URG                  U5        OUu  nnURG                  U5        URC                  U5      nU(       d  M  Uu  nnnnU(       a  U R                   RD                  nUU:  d  M  UU R                   RD                  :w  a
  UUS-   4UU'   UU R                   RD                  :w  d  GM  UUS-   4UU'   GM     URI                  SS5      (       a  UU-
  nU RK                  X9UUU5      n[#        U5       GHW  u  pUU   u  nnUU R                   RD                  :w  a  U RL                  RO                  X5      nUu  n n!n"n#U#RC                  [P        RR                  5      n$U!U	:w  d	  U"U:w  d  U$cY  U RL                  RC                  U	U5      n%U RL                  RC                  X5      n&[        U&5      n$[T        RV                  " U%U&5      n OAU RL                  RC                  X5      n [        U 5      n$U RL                  RY                  X5      n#[P        RR                  U#;  a  U$U#[P        RR                  '   URG                  XUU U#5        SX   l-        GMZ     UR-                  5         US-  nGM     UR-                  5         UR]                  US9  g ! [(         a    UR+                  U5         GM  f = f)Nrp   s   maxchainleni  r   s   repacking datar  totalc              3  $   #    U  H  ov   M     g 7frW   r   rd   r   s     r!   rf   &repacker.repackdata.<locals>.<genexpr>^       2'$'   s   building historys   nodesknowns%   repackdata: %d nodes without history
c                   > U T;   $ rW   r   )r   r0  s    r!   r   %repacker.repackdata.<locals>.<lambda>  s	    DEMr    Ts   processing nodesr   r#   s   chainorphansbysizer#  )/r/   r)   r   entriesvaluesrF   
setdefaultr   r   makeprogressr   r  r   r   r   updaterj   r   r   getancestorsKeyErrorr(   completer   	_toposortrt   r   filterr   r   r   gcedr   getr/  r   r+   r4  r   getdeltar   r)  r	   textdiffr(  datarepackedclose)(r  r#  targetr)   maxchainlenbyfileentrycountrepackprogressr   rC  	ancestors	nohistorybuildprogressr   r   orderednodesneworderednodesr2  nobase
referencedprocessprogress
deltatuple	deltabasechainlenancestorinfop1p2linknodecopyfromr1  
deltaentrydeltadeltabasenameorigdeltabaser+  r   deltabasetextoriginalr0  s(                                          @r!   r  repacker.repackdataM  sK   YY\\ll8^TB^^**,EDI!!%.."5ejjA -  tyyF ) 
 "(!7H!!%(I2'22EIOO%&XSZ , M %U+$$$Q'
+$$((55$) 6  , ""$  	)B CDL9~!=IN y 12  1<@L
 """$(D !'t}}<		8B B .2* #**40 )  / JUFJJE oo%&XS=N . O %\2&&q) (^^D$7
%*.))*:*:AxI(,		(8(8!'<Jt$JJt$*4'IxNN9-  )}}T2<1=.BHh
  !YY--+- !1!11.2HqL-AJrN!1!11.2HqL-AJrNE 3J }}Y(=>> :-#11, 
 %\2&0&6#	8
 		 0 00!%!3!3H!CJ@J=E=-88I$9$9:D%1(I5<(,		h	(J#'99==#@"8} %}h G IIMM(9Eu:D99,,X<D ((426D../

89eTB-1*; 3> $$&QJEU "8X 	!F#u   + $$T**	+s   
)V22WWc           
     4   U R                   R                  n0 nUR                  R                  5        H>  nUR                  (       d  M  XTR                  UR                  0 5      UR                  '   M@     UR                  [        S5      U R                  [        U5      S9n[        UR                  5       5       GH:  u  px0 n	[        S U 5       5      n
U
 H3  nX;   a  M
  U	R                  U R                   R#                  X{U	S95        M5     [%        U R'                  U	5      5      n[)        5       nU H  nX   u  pnnX;   aa  X;  a\  XR                   R*                  :w  a  UU:w  a  UR-                  U5        XR                   R*                  :w  a  UR-                  U5        Mq  U(       a  UR-                  U5        UR-                  X{XUU5        X;   d  M  SX   l        M     UR1                  5         GM=     UR3                  5         UR5                  US9  g )Ns   repacking historyr7  c              3  $   #    U  H  ov   M     g 7frW   r   r:  s     r!   rf   )repacker.repackhistory.<locals>.<genexpr>  r<  r=  r>  TrB  )r/   r)   rC  rD  rG   rE  r   r   rF  r   r  r   r   r   rj   rG  r   rH  r   rK  r   r/  r   historyrepacked	incrementrJ  rR  )r  r#  rS  r)   rU  rV  progressr   rC  rY  r0  r   r\  dontprocessre  rf  rg  rh  s                     r!   r  repacker.repackhistory  s   YY\\^^**,E"""DI!!%.."5ejjA - ??"#$))3v; # 
 "(!7HI2'22E$  LL--hI-N  $DNN9$=>L %K$-6_*( &4+> YY---(h2F#+YY---#+OOB'

828XF?48GM15 %8  Y "8\ 	F#r    c                b   ^ ^ UU 4S jn[         R                  " TR                  5       U5      nU$ )Nc                   > TU    u  pp4/ nUTR                   R                  :w  a  UR                  U5        UTR                   R                  :w  a  UR                  U5        U$ rW   )r/   r/  r(   )r   re  rf  rg  rh  parentsrY  r  s         r!   
parentfunc&repacker._toposort.<locals>.parentfunc&  sW    )24&BHGTYY%%%r"TYY%%%r"Nr    )r   	sortnodeskeys)r  rY  r{  sortednodess   ``  r!   rK  repacker._toposort%  s)    	 "++INN,<jIr    )	r   r   r   r   r   r   r:   r/   r  )FNN)r   r   r   r   __doc__r  r   r4  r  r  rK  r   r   r    r!   r   r     s4     2'('RZ$x:$xr    r   c                  6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
r  i3  zStorage for all the bookkeeping that happens during a repack. It contains
the list of revisions being repacked, what happened to each revision, and
which source store contained which revision originally (for later cleanup).
c                >    0 U l         0 U l        [        5       U l        g rW   )rC  r  r   created)r  s    r!   r  repackledger.__init__9  s    ur    c                    U R                  X#5      nSUl        U R                  R                  U5      nU(       d  [	        5       nXPR                  U'   UR                  U5        g)zPMark the given filename+node revision as having a data rev in the
given source.
TN)_getorcreateentryrF   r  rN  r   r   r  r$  r   r   rV  rC  s         r!   markdataentryrepackledger.markdataentry>  sR     &&x6,,""6*eG#*LL Er    c                    U R                  X#5      nSUl        U R                  R                  U5      nU(       d  [	        5       nXPR                  U'   UR                  U5        g)zSMark the given filename+node revision as having a history rev in the
given source.
TN)r  rG   r  rN  r   r   r  s         r!   markhistoryentryrepackledger.markhistoryentryJ  sR     &&x6",,""6*eG#*LL Er    c                    X4nU R                   R                  U5      nU(       d  [        X5      nX@R                   U'   U$ rW   )rC  rN  repackentry)r  r   r   r   values        r!   r  repackledger._getorcreateentryV  s<      %/E %LLr    c                :    U R                   R                  U5        g rW   )r  r   )r  r  s     r!   
addcreatedrepackledger.addcreated_  s    r    )r  rC  r  N)r   r   r   r   r  r  r  r  r  r  r   r   r    r!   r  r  3  s     



 r    r  c                  "    \ rS rSrSrSrS rSrg)r  ic  zFSimple class representing a single revision entry in the repackledger.r   r   rF   rG   rQ  rs  rM  c                b    Xl         X l        SU l        SU l        SU l        SU l        SU l        g )NFr  )r  r   r   s      r!   r  repackentry.__init__p  s2     	"!$	r    )rQ  rF   r   rM  rs  rG   r   N)r   r   r   r   r  	__slots__r  r   r   r    r!   r  r  c  s    PIr    r  c                    [        U S5      (       a;  [        R                  " U [        R                  5      n[
        R
                  " U5      $ U R                  $ )Nname)r<   r   r@   r   rA   r   r[   )r/   sharedcachepaths     r!   r  r    sG    tV &66)--
 ww''yyr    )TFrW   )FN)NN)0
__future__r   ra   r   mercurial.i18nr   mercurial.noder   	mercurialr   r   r   r  r	   r
   r   r   r   mercurial.utilsr    r   r   r   r   r   r   	importmodr   Abortr   r5   rQ   rU   rD   rn   r   rT   r   r   r   r   rB   r
  r   r  r  r  r   r    r!   <module>r     s    " 	    	 	 	 %  
		(	#	5;; 	N"5
p)
X&OL ;|4*42";~ HL)X7t~ ~B
-  - ` 8	r    