
    q&f;                         d dl mZ d dlmZmZmZmZmZm	Z
mZ d dlmZmZmZ d dlmZ ej(                  Zej*                  Z	 	 	 	 	 	 d	dZd Zd Zy)
   )_)errorhg	localrepolockpycompatrequirementsscmutil)actionsauto_upgradeengine)
stringutilNc           
         |
t               }|j                         }i }|||t        j                  <   |||t        j                  <   |||t        j
                  <   t        j                  |       t        j                  |j                        }	t        j                  |j                  |	      }
|
j                  t        j                  |             t        j                  ||
       t        j                  |      }g }|D ]=  }|j                   |v s|j#                  |       |j%                  |j                          ? |rDt'        j(                  t+        d      dj-                  t/        |            z  t+        d            t        j0                  |      }t        j2                  ||||j4                  |
      }t        j6                  |      }t               }t+        d      }t+        d      }d}t        j
                  }t        j                  }t        j                  }|rt9        |j;                               r-|j=                         D ]  \  }}|s	|j?                  |        nEt        t        j@                        }|j=                         D ]  \  }}|r	|j%                  |        |jC                         rt               }|j                  |       |j                  |       |j                  |       |D cg c]  }|jD                  r| }}|jG                  d	 
       |rJt+        d      }t+        d      }dj-                  d |D              }||z  }t'        j(                  ||      t/        ||z   d 
      D ]  }|jH                  t        jJ                  k7  r"|jL                  rs||vro||v r*||   sU|d|j                   fz  } | jO                  |        d}n0|d|j                   fz  } | jQ                  |        | jR                  sd}|j?                  |       |jT                  rs||vro||v r*||   sU|d|j                   fz  } | jO                  |        d}n0|d|j                   fz  } | jQ                  |        | jR                  sd}|j?                  |       |jV                  s.||vs4||v r*||   sU|d|j                   fz  } | jO                  |        d}n0|d|j                   fz  } | jQ                  |        | jR                  sd}|j?                  |        |dk\  r| jO                  d       n|dk\  r| jQ                  d       t        jX                  | |
|j4                  ||||      }!|sg }"g }#|D ]C  }$|$j[                  |      r|"j#                  |$       &|$j\                  s3|#j#                  |$       E |"s|#r|"rK| jQ                  t+        d             |"D ],  }%| jQ                  d|%j                   |%j^                  fz         . |#rK| jQ                  t+        d             |#D ],  }%| jQ                  d|%j                   |%j^                  fz         . | jQ                  d       n| jQ                  t+        d             | jQ                  t+        d             |!ja                          |!jc                          |!je                          |!jg                          |!jh                  r*| jQ                  t+        d             |!jk                          y|!j                  s'|!jl                  s| jQ                  t+        d             y| jo                  t+        d              |!ja                          |!jc                          |!je                          |!jg                          | jQ                  t+        d!             |jq                         5  |js                         5  | jQ                  t+        d"             tu        jv                  d#|jx                  $      }&d}'	 | jQ                  t+        d%      |&z         |j                  j{                  |j                        }(t}        j~                  |(|&d&      })|)jq                         5  |)js                         5  t        j                  | ||)|!      }'ddd       ddd       | jQ                  t+        d'      |&z         |j                  j                  |&d(       |'rC| jR                  s7| jO                  t+        d)      |'z         | jO                  t+        d*             |!j                          	 ddd       ddd       yc c}w # 1 sw Y   xY w# 1 sw Y   xY w# | jQ                  t+        d'      |&z         |j                  j                  |&d(       |'rC| jR                  s7| jO                  t+        d)      |'z         | jO                  t+        d*             |!j                          w xY w# 1 sw Y   xY w# 1 sw Y   yxY w)+zUpgrade a repository in place.Ns)   unknown optimization action requested: %ss   , s0   run without arguments to see valid optimizationshints3   warning: ignoring %14s, as upgrade is changing: %s
s3   note:    selecting %s for processing to change: %s
    c                     | j                   S Nnameas    3/usr/lib/python3/dist-packages/mercurial/upgrade.py<lambda>zupgraderepo.<locals>.<lambda>x   s
    !&&     )keys2   cannot use these actions on a share repository: %ss$   upgrade the main repository directlyc              3   4   K   | ]  }|j                     y wr   r   ).0r   s     r   	<genexpr>zupgraderepo.<locals>.<genexpr>|   s      @A @s   c                     | j                   S r   r   r   s    r   r   zupgraderepo.<locals>.<lambda>   s
    QVV r   s   --no-filelogs   s   all-filelogsr   s   --no-manifests   all-manifestlogss   --no-changelogTs	   changelog   
sB   repository lacks features recommended by current config options:

s
   %s
   %s

s?   repository lacks features used by the default config options:

s2   (no format upgrades found in existing repository)
sE   performing an upgrade with "--run" will make the following changes:

sK   additional optimizations are available by specifying "--optimize <name>":

s   nothing to do
s-   upgrade will perform the following actions:

s   beginning upgrade...
s    repository locked and read-only
s   upgrade.)prefixdirs9   creating temporary repository to stage upgraded data: %s
)pathcreates!   removing temporary repository %s
)forciblys'   copy of old repository backed up at %s
sq   the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified
)Dset
unfilteredupgrade_engineUPGRADE_CHANGELOGUPGRADE_MANIFESTUPGRADE_FILELOGSupgrade_actionscheck_source_requirementsr   defaultcreateoptsuinewreporequirementsupdatepreservedrequirementscheck_requirements_changesfindoptimizationsr   appenddiscardr   Abortr   joinsortedfind_format_upgradesdetermine_upgrade_actionsr	   find_format_downgradesanyvaluesitemsaddUPGRADE_ALL_REVLOGSsharedcompatible_with_sharesorttypeFORMAT_VARIANTtouches_filelogswarnstatusquiettouches_manifeststouches_changelogUpgradeOperation
fromconfigdefaultdescriptionprint_requirementsprint_optimisationsprint_upgrade_actionsprint_affected_revlogsunused_optimizationsprint_unused_optimizationsremoved_actionswritewlockr   r   mkdtempr%   	__class__r   
repositoryupgradevfsrmtreeprint_post_op_messages)*r1   reporunoptimizebackupmanifest	changelogfilelogsspecified_revlogsdefault_optionsnewreqsalloptimizationsoptimizationsoformat_upgrades
up_actionsrY   touched_revlogsoverwrite_msg
select_msg
msg_issuedFLMNCLrlenabledunsafe_actionsr   mhr   actionmsg
upgrade_oprP   onlydefaultditmppath
backuppathrepouidstrepos*                                             r   upgraderepor   "   s;	    5??D>G.::;=E.99:=E.99: --d311$'':O++DGG_EGNN?88>?..tW= '88> M %66X  #QVV$%
 kk:;jj)*+FG
 	
 &::4@O ::o}d.?.?J &<<TBO eOMNMJKJJ		(	(B		(	(B		)	)B '')*0668 ,G#''+, "."D"DEO0668 0G#++B/0 {{}j)o.m,%
Q-D-DA
 
 	 01GHA9:Ajj @ @@GLA++aa((o5;KL *$;;/888""r'@&&(,'+;V[[*IICGGCL!"J OV[[#AA		#xx!"J###/(A&&(,'+;V[[*IICGGCL!"J $7#EE		#xx!"J###/(A&&(,'+<fkk*JJCGGCL!%J L&++#>>		#xx!"J#U*$V Q
	q
		5 11
J 
  	&A||D!!!!$""1%		& 		7 $ JAII.!&&!--1HHIJ 		/ % JAII.!&&!--1HHIJ IIeIIaNOP
		 	
 	%%'&&(((*))+**II0 113&&**D*D
		!&'(HHQABC!!#""$$$&%%'IIa)*+	 +0tyy{ +0
		!89: ""+499E
"	0II" 	 WW&&tww/FmmFFG ',,. +33gz
  IIa=>HIHHOOGdO3"((ABZO 4 --/W+0 +0 +0U
@    IIa=>HIHHOOGdO3"((ABZO 4 --/W+0 +0 +0 +0s{   e>e>)h;:>h/9A*f#f4f	ffBh/-h;ffffBh,,h//h8	4h;;ic                 
   d}t        j                  |d      }|j                         }	||z
  }
|
j                  t        j
                         |j                  t        j
                         |dk(  ry	 t        j                  | |ddd      }t        j                  |d      }||	k7  rR||z
  }||z  }||z  }||z
  }
|
j                  t        j
                         |j                  t        j
                         t        j                  ||
       |r| j                  t        d             |r|j%                          yy# t        j                  $ r}t        d      }|d	k(  r@t        j                  t        d
      t        j                   |j"                        z  |      |r<| j                  t        d      t        j                   |j"                        z  |       Y d}~d}~ww xY w# |r|j%                          w w xY w)z,Upgrades a share to use share-safe mechanismNF   allow   wlockr   Ts+   repository upgraded to use share-safe mode
?   see `hg help config.format.use-share-safe` for more informations   upgrade-aborts&   failed to upgrade share, got error: %sr   s'   failed to upgrade share, got error: %s
)r   _readrequirescopyrB   requirementsmodSHARESAFE_REQUIREMENTlockmodtrylockr
   writerequiresrJ   r   r   	LockErrorr9   r   forcebytestrstrerrorrelease)r1   hgvfsstorevfscurrent_requirementsmismatch_configmismatch_warnmismatch_verbose_upgrader[   store_requirementsoriginal_crequirementsdiffrequireslocked_requirementsremoveder   s                  r   upgrade_share_to_safer   -  s    E"005A1668 (*<<L_::;_BBC ("$E8Q: (55eTB"88*-@@G !G+  $77 /2DDL_BBC $$_%J%JKe\2#GGAEFG$ MMO # ?? N
 ..++;<))!**56 
 GG=>))!**56  " MMO s,   3B8D? ?G*BG% G- %G**G- -Hc                    d}t        j                  |d      }|j                         }	|t        j                  z  }||z  }|j                  t        j                         |dk(  ry	 t        j                  | |ddd      }t        j                  |d      }
|
|	k7  r0||
z
  }||z  }||
z  }||z  }|t        t        j                        z  }t        j                  ||       |r| j                  t        d             |r|j)                          yy# t        j                  $ r}t        d      }|dk(  r@t        j                   t        d	      t#        j$                  |j&                        z  |
      |r<| j                  t        d      t#        j$                  |j&                        z  |
       Y d}~d}~ww xY w# |r|j)                          w w xY w)z5Downgrades a share which use share-safe to not use itNTr   r   r   s1   repository downgraded to not use share-safe mode
r   s   downgrade-aborts(   failed to downgrade share, got error: %sr   s)   failed to downgrade share, got error: %s
)r   r   r   r   WORKING_DIR_REQUIREMENTSremover   r   r   r(   r
   r   rJ   r   r   r   r9   r   r   r   r   )r1   r   	sharedvfsr   r   r   r   r[   source_requirementsr   r   r   r   r   s                 r   downgrade_share_to_non_safer   l  s    E#11)TB1668 ?CCC// E EF("$E8Q: (55eTB"88*-@@G !G+  $77  $77  C(M(M$NN e%9:#GGAKLM( MMO ' ?? N

 00++=>))!**56 
 GG?@))!**56  & MMO s,   'BD F<$BF72F? 7F<<F? ?G)FNTNNN)i18nr    r   r   r   r   r   r   r	   r   r
   upgrade_utilsr   r.   r   r   r*   utilsr   may_auto_upgradeallformatvariantr   r   r    r   r   <module>r      sh         00 "33  	H0V<~:r   