
    6h'1                       S SK Jr  S SKrS SKJr  S SKJrJrJr  SSK	J
r
  \R                  R                  / SQ5         S SKrS SKrS SKrS SKr\R$                  R&                  r\R(                  r\R*                  r\R,                  r\R.                     S SKJr  S	r " S
 S\
R8                  5      rg! \ a	    S SKJr   N&f = f! \ a     N2f = f)    )annotationsN)_)demandimporterrorutil   )common)zbreezy.transactionszbreezy.urlutilsElementPath)
NoSuchFile)filesymlinkc                  x   ^  \ rS rSrSrSU 4S jjrS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrU =r$ )
bzr_source=   z>Reads Bazaar repositories by using the Bazaar Python librariesc                  > [         TU ]  XX4S9  [        R                  R	                  [        R                  R                  US5      5      (       d"  [        R                  " [        S5      U-  5      e [          [        R                  " U5      nU R                  U5         [        R                  R                  UR!                  5       5      nUR#                  5       U l        0 U l        UR-                  SS5      U l        g ! [         a/    [        R                  " [        S5      [        S5      S-  -   5      ef = f! [&        R(                   a#    [        R                  " [        S5      U-  5      ef = f)	N)revss   .bzrs)   %s does not look like a Bazaar repositorys"   Bazaar modules could not be loadeds     (try installing the %s package)s   bzrs   converts   bzr.saverev)super__init__ospathexistsjoinr	   NoRepor   bzrdir	NameErrorr   abspath_checkrepotypeBzrDiropendecodeopen_repository
sourcerepoerrorsNoRepositoryPresent
_parentids
configbool_saverev)selfuirepotyper   r   bzr_dir	__class__s         3/usr/lib/python3/dist-packages/hgext/convert/bzr.pyr   bzr_source.__init__@   s>   t7ww~~bggll49::-->?$F 	Q
 ||D!D!	mm((7G%557DO
 j.A  	Q--"G H !"E F O!P Q Q	Q )) 	-->?$F 	s   5D #AE  9D= 7E7c                T    [         R                  R                  UR                  5       5      S   n UR	                  SS9nUR
                  nUbh  UR                  R                  R                  UR                  R                  R                  :w  a%  U R                  R                  [        S5      5        g g g ! [        R                  [        R                  4 a    S nUR                  5       n Nf = f! [          a'    U R                  R#                  [        S5      5         g f = f)Nr   F)recommend_upgradesa   warning: lightweight checkouts may cause conversion failures, try with a regular branch instead.
s(   bzr source type could not be determined
)r   r   open_containingr    open_workingtreebranchr#   NoWorkingTreeNotLocalUrlopen_branch
controldirroot_transportbaser)   warnr   	Exceptionnote)r(   r   dirtreer3   s        r-   r   bzr_source._checkrepotype[   s   	J--//>qAC+++e+D
  OO2277$$33889 -9 !	 ((&*<*<= +*+  	JGGLLGHI	Js5   0C6 B: A)C6 :6C30C6 2C33C6 6.D'&D'c                8    U R                   R                  5         g)a  Before the conversion begins, acquire a read lock
for all the operations that might need it. Fortunately
read locks don't block other reads or writes to the
repository, so this shouldn't have any impact on the usage of
the source repository.

The alternative would be locking on every operation that
needs locks (there are currently two: getting the file and
getting the parent map) and releasing immediately after,
but this approach can take even 40% longer.N)r"   	lock_readr(   s    r-   beforebzr_source.beforeu   s     	!!#    c                8    U R                   R                  5         g N)r"   unlockrB   s    r-   afterbzr_source.after   s     rE   c                4    U R                   R                  SS9$ )NT)using)r"   find_branchesrB   s    r-   _bzrbranchesbzr_source._bzrbranches   s    ,,4,88rE   c                b   U R                   (       d8  [        U R                  5        Vs/ s H  oR                  5       PM     sn5      nOS nU R                  5        H]  n U R                   S   R	                  5       n[
        R                  R                  U5      nUR                  U5      nWR                  nM_     Uc/  [        R                  " [        S5      U R                   S   -  5      eU/nU Vs/ s H  oS:w  d  M
  UPM     nnU$ s  snf ! [        R                   a     N{f = fs  snf )Nr   s   %s is not a valid revisions   null:)r   sortedrN   last_revisionr    revisionspecRevisionSpecfrom_string
in_historyr#   BzrErrorrev_idr   Abortr   )	r(   bheadsrevidr3   revspecrinfohs	            r-   getheadsbzr_source.getheads   s
   yyt7H7H7JK7J!OO-7JKLEE++-"iil113G$11==gFA<</D  . }kk34tyy|C  GE!3Eq(]E3% L   4s$   D AD6	D,D,D)(D)c                   UR                  5       nU R                  R                  U5      n UR                  U5      nU[
        ;  a  gU R                  UR                  5       U4   nUS:X  aI  UR                  U5      nUc#  [        R                  " [        S5      X4-  5      eUR                  5       U4$ UR                  U5      nUR                  5       U4$ ! [         a     gf = f)N)NNr   s   %s.%s symlink has no target)r    r"   revision_treekindr   supportedkinds
_modecacheencodeget_symlink_targetr   rY   r   get_fileread)r(   namerevrevtreere   modetargetsios           r-   getfilebzr_source.getfile   s    {{}////4	<<%D ~%s349//5F~kk45C  ==?D((""4(C88:t##  		s   C 
C'&C'c                b   U(       a  [         R                  " [        S5      5      e0 U l        U R                  R                  U5      U l        U R                  R                  U5      nU R                  R                  US   5      nU R                  U R                  U5      u  pVXV[        5       4$ )Ns(   convert from cvs does not support --fullr   )r   rY   r   rg   r"   rd   _revtreer%   pop_gettreechangesset)r(   versionfull	parentidsprevtreefileschangess          r-   
getchangesbzr_source.getchanges   s    ++a KLMM55g>OO''0	??001>--dmmXFsu$$rE   c           
     4   U R                   R                  U5      nUR                  (       d!  / n[        R                  4U R
                  U'   O)U R                  UR                  5      nX0R
                  U'   UR                  R                  SS5      nUS:X  a  Sn[        R                  " USUR                  UR                  * 4-  U R                  UR                  5      U R                  UR                  5      UR!                  S5      UU R"                  S9$ )Nzbranch-nickdefaulttrunks   %d %dutf8)parentsdateauthordescr3   rm   saverev)r"   get_revision
parent_idsrevisionNULL_REVISIONr%   _filterghosts
propertiesgetr	   commit	timestamptimezonerecode	committermessagerh   r'   )r(   ry   rm   r   r3   s        r-   	getcommitbzr_source.getcommit   s    oo**73~~G(0(>(>'@DOOG$((8G'.OOG$##M9=WF}}S]]S\\M::;;s}}-S[[)==(MM
 	
rE   c                    0 nU R                  5        Hb  nUR                  5       (       d  0 s  $ UR                  R                  5       nUR	                  5        H  u  pEXQU R                  U5      '   M     Md     U$ rG   )rN   supports_tagstagsget_tag_dictitemsr   )r(   bytetagsr3   tagdictrl   rm   s         r-   gettagsbzr_source.gettags   sj    '')F''))	kk..0G$]]_	.1T*+ -	 * rE   c                "   0 U l         U R                  R                  U5      nUb  U R                  U   U   nO[        R
                  nU R                  R                  U5      nU R                  X55      S    Vs/ s H  ofS   PM	     nnU$ s  snf )Nr   )rg   r"   rd   r%   r   r   rw   )r(   rm   icurtreeparentidr|   er~   s           r-   getchangedfilesbzr_source.getchangedfiles   s    ////4=s+A.H  --H??00:!%!5!5g!H!KL!KAQ4!KL Ms   :Bc                   UR                   n/ n0 n[        5       n UR                  nS n[        UR                  U5      USS9n	U	 GH  n
U
R                  nU
R                  nU
R                  nUS   S:X  d	  US   S:X  a  M<  US   S:X  Ga]  US   S;  a%  UR                  U R                  US   5      U45        US   S:X  Ga"  S U;  Ga  US   US   :g  nUR                  US   5      nUR                  U5       H  u  nnUR                  S:X  a  M  U R                  US   S	-   U-   5      nUU;   a  M:  UR                  U5        U(       d  MT  U R                  US   S	-   U-   5      nUR                  UU45        UR                  UU45        UR                  =(       a    S
=(       d!    UR                  S:H  =(       a    S=(       d    SnUU R                  UU4'   UUU'   M     GM  Uu  nnUb  U R                  U5      nUb  U R                  U5      nUR                  U=(       d    U5        Uc  UR                  UU45        GM  U(       a  UU:w  a  UUU'   UR                  UU45        S X4 5       u  pU=(       a    S
=(       d    US:H  =(       a    S=(       d    SnUU R                  UU4'   UR                  UU45        GM     XE4$ ! [         a    UR                  n GNf = f)Nc                ^    U R                   S   =(       d    U R                   S   =(       d    S$ )Nr   r    )r   )cs    r-   key'bzr_source._gettreechanges.<locals>.key   s"    66!9/q	/R/rE   T)r   reverser   r   r   	directory)Nr   /   xr      srE   c              3  *   #    U  H	  oS    v   M     g7f)r   N ).0r   s     r-   	<genexpr>-bzr_source._gettreechanges.<locals>.<genexpr>P  s     A.@!.@s      l)_revision_idrx   root_inventoryAttributeError	inventoryrQ   iter_changesr   re   
executableappendr   path2iditer_entriesaddrg   )r(   currentoriginr\   r~   renamesseenr   r   
curchangeschangepathsre   r   renamingsubdirrl   entryfrompathtopathro   r   s                         r-   rw   bzr_source._gettreechanges   s   $$u	)--I	0   (


 !FKKE;;D**JQx2~qR Aw+%7"55 NNDKKa$95#AB7k)d%.?$Qx583H '..uQx8F'0'='=f'Ee ::4$#';;uQx#~/D#E#t+ %*'$!%U1X^d-B!C%'897 #--6$ # %

i 7 @D#" 
 <@8*27 (F<  !LD&{{4(!V,HHT^V$~e}- "&e}-  Bt.@AD'4OTY->-G4OCD/3DOOVUO,NNFE?+Y !\ y  	)((I	)s   K K*)K*c                    U R                   R                  U5      n[        U Vs/ s H  o3U;   d  M
  UPM     sn5      nU$ s  snf )zaFilters out ghost revisions which hg does not support, see
<http://bazaar-vcs.org/GhostRevision>
)r"   get_parent_maptuple)r(   ids	parentmapparentr   s        r-   r   bzr_source._filterghostsW  sA     OO2237	cIcFy5HcIJ Js
   	AA)rg   r%   ru   r'   r"   rG   )__name__
__module____qualname____firstlineno____doc__r   r   rC   rI   rN   ra   rr   r   r   r   r   rw   r   __static_attributes____classcell__)r,   s   @r-   r   r   =   sP    HB6J4$!9.$.
%
.e N rE   r   )
__future__r   r   mercurial.i18nr   	mercurialr   r   r   r   r	   IGNORESupdatebreezy.bzr.bzrdirbreezybreezy.errorsbreezy.revisionbreezy.revisionspecbzrr   r#   r   rS   rT   breezy.transportr   ImportErrorrf   converter_sourcer   r   rE   r-   <module>r      s    # 	  
      	  ZZF]]FH&&L-/ %`(( `  -,- 		s0   AC B4 4C C CC CC